Frage

Im serverseitigen Objektmodell ist es möglich, die E-Mail-Adresse für den Anforderungszugriff über die Eigenschaft festzulegen SPWeb.RequestAccessEmail (MSDN).

Da wir unseren SharePoint-Mandanten auf Office365 verschieben, suche ich nach einer Möglichkeit, diesen Wert festzulegen.Ich weiß, dass es möglich ist, dies manuell in der Benutzeroberfläche zu tun (Site-Einstellungen > Site-Berechtigungen > Zugriffsanforderungseinstellungen), aber da wir einige Self-Service-Site-Erstellungsfunktionen haben, ist es nicht möglich, diese jedes Mal manuell zu ändern, wenn ein Web erstellt wurde.

Leider gibt es keine Immobilie Web.RequestAccessEmail im clientseitigen Objektmodell.

Gibt es eine Möglichkeit, diese E-Mail-Adresse über den Property Bag festzulegen (auch bekannt als: Web.AllProperties["__SecretKey"]), ein Webdienst (_vti_bin, usw.) oder eine andere Problemumgehung?

Jede Hilfe wird sehr geschätzt!

War es hilfreich?

Lösung

In der neuesten Version der „SharePoint Online Management Shell“ (v16.0.4630.1200) ist das enthalten Microsoft.SharePoint.Client.dll fügt die Eigenschaft hinzu RequestAccessEmail zum Web Klasse.

Herunterladen: https://www.microsoft.com/en-us/download/details.aspx?id=35588

Sie können diese DLL bis zur Veröffentlichung des NuGet-Pakets verwenden.

BEARBEITEN:Seit Version 16.1.4727.1200 des Microsoft.SharePointOnline.CSOM NuGet-Paket das RequestAccessEmail Eigenschaft wird unterstützt.

Andere Tipps

Leider ist diese Unterkunft nicht über erreichbar CSOM.

So rufen Sie alle verfügbaren Eigenschaften für das Web-Client-Objekt ab:

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

Das ist möglich, aber meiner Meinung nach ein Hack.Ich habe einen Artikel geschrieben, um zu diskutieren, ob dies ein gültiger Weg ist – Manipulieren der SharePoint-Benutzeroberfläche über einen IFrame, um fehlende clientseitige Funktionen hinzuzufügen

Hier ist der Code:

//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);
}

Es sollte in einen Wartedialog und einige Warnungen eingeschlossen sein, wenn der Benutzer versucht, die Seite zu verlassen.Das Laden einer Seite in einem IFrame kann einige Zeit dauern und dieser Code führt dies zweimal aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top