Question

Dans le côté serveur de l'objet modèle, il est possible de définir la demande d'accès de l'adresse de courriel par le biais de la propriété SPWeb.RequestAccessEmail (MSDN).

Depuis que nous nous dirigeons nos SharePoint locataire à Office365 je suis à la recherche d'un moyen de fixer cette valeur.Je sais que c'est possible de le faire manuellement dans l'INTERFACE utilisateur (Paramètres du Site > les Autorisations de Site > Demande d'Accès à des Paramètres), mais puisque nous avons un peu de self-service de création de site, il n'est pas possible de la modifier manuellement chaque fois qu'un site web a été créé.

Malheureusement, il n'existe pas de propriété Web.RequestAccessEmail dans le côté client de l'objet modèle.

Est-il un moyen de mettre cette adresse dans le sac de propriété (aka Web.AllProperties["__SecretKey"]), un service web (_vti_bin, etc.) ou de toute autre solution de contournement?

Toute aide est très appréciée!

Était-ce utile?

La solution

Dans la version la plus récente de la "SharePoint Online Management Shell" (v16.0.4630.1200) inclus Microsoft.SharePoint.Client.dll ajoute la propriété RequestAccessEmail à l' Web classe.

Télécharger: https://www.microsoft.com/en-us/download/details.aspx?id=35588

Vous pouvez utiliser cette DLL jusqu'à ce que le NuGet Package est libéré.

EDIT:Depuis la version 16.1.4727.1200 de la Microsoft.SharePointOnline.CSOM NuGet Package pour le RequestAccessEmail la propriété est prise en charge.

Autres conseils

Malheureusement, cette propriété n'est pas accessible via CSOM.

Comment faire pour récupérer toutes les propriétés disponibles pour le Web client de l'objet:

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

C'est possible, mais à mon avis, un hack.J'ai écrit un article à discuter si c'est un moyen valable de le faire - La manipulation de l'INTERFACE utilisateur de SharePoint sur un IFrame pour ajouter manquant client Dispose d'

Voici le 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);
}

Il doit être enveloppé dans un waitingdialog et quelques mises en garde lorsque l'utilisateur tente de quitter la page.Le chargement d'une page dans un IFrame peut prendre un certain temps et ce code est de le faire deux fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top