Установите адрес электронной почты для запроса доступа через CSOM

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/87623

Вопрос

В объектной модели на стороне сервера можно установить адрес электронной почты для запроса доступа через свойство SPWeb.RequestAccessEmail (MSDN).

Поскольку мы переносим нашего клиента SharePoint в Office365, я ищу способ установить это значение.Я знаю, что это можно сделать вручную в пользовательском интерфейсе (Настройки сайта > Разрешения сайта > Настройки запроса на доступ), но поскольку у нас есть возможность самостоятельного создания сайтов, невозможно изменять его вручную каждый раз при создании сети.

К сожалению, недвижимости нет. Web.RequestAccessEmail в объектной модели на стороне клиента.

Есть ли способ установить этот адрес электронной почты через пакет свойств (он же Web.AllProperties["__SecretKey"]), веб-сервис (_vti_bin, и т. д.) или какой-либо другой обходной путь?

Любая помощь высоко ценится!

Это было полезно?

Решение

В новейшей версии «SharePoint Online Management Shell» (v16.0.4630.1200) включено Microsoft.SharePoint.Client.dll добавляет свойство RequestAccessEmail к Web сорт.

Скачать: https://www.microsoft.com/en-us/download/details.aspx?id=35588

Вы можете использовать эту DLL до тех пор, пока не будет выпущен NuGet-Package.

РЕДАКТИРОВАТЬ:Начиная с версии 16.1.4727.1200 принадлежащий Microsoft.SharePointOnline.CSOM NuGet-пакет RequestAccessEmail имущество поддерживается.

Другие советы

К сожалению, этот объект размещения недоступен через CSOM.

Как получить все доступные свойства объекта веб-клиента:

var allProperties = clientContext.Web.AllProperties;
clientContext.Load(allProperties);
clientContext.ExecuteQuery();

Это возможно, но, на мой взгляд, это хак.Я написал статью, чтобы обсудить, является ли это действительным способом сделать это - Управление пользовательским интерфейсом SharePoint через IFrame для добавления недостающих функций на стороне клиента

Вот код:

//quite dirty hack but at this point the only possibility to set the AccessRequest mail via clientside
function setAccessRequest(mail) {
    var iframe = document.createElement('iframe');
    //set the setrqacc.aspx link
    var setrqaccUrl = _spPageContextInfo.webAbsoluteUrl + '/_layouts/15/setrqacc.aspx?type=web';
    //create setrqacc.aspx hidden iframe
    iframe.setAttribute('src', setrqaccUrl);
    iframe.setAttribute('style', 'display:none');
    iframe.onload = function () {
        //this will fire 2 times - the first time when its initially loaded. the second after the changes were applied (page is reloaded (postback) after the submitbutton is triggered)
        var $iframeInput = $('input[id*="_txtEmail"]', $(iframe).contents());
        if ($iframeInput.length) {
            //initial load - apply settings
            $iframeInput.val(mail);
            //gets iframeInput's parent so the current input can be placed inside
            var $iframeBtn = $('input[id*="_btnSubmit"]', $(iframe).contents());
            //trigger the post
            $iframeBtn.trigger('click');
        } else {
            //second load - do callback
            callback('AccessRequest');
        }
    };
    document.body.appendChild(iframe);
}

Он должен быть обернут диалогом ожидания и некоторыми предупреждениями, когда пользователь пытается выйти со страницы.Загрузка страницы в IFrame может занять некоторое время, и этот код делает это дважды.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top