Pregunta

En el modelo de objetos del lado del servidor es posible configurar la dirección de correo electrónico de acceso de solicitud a través de la propiedad SPWeb.RequestAccessEmail (MSDN).

Dado que vamos a trasladar nuestro inquilino de SharePoint a Office365, estoy buscando una manera de establecer este valor.Sé que es posible hacerlo manualmente en la interfaz de usuario (Configuración del sitio > Permisos del sitio > Configuración de solicitud de acceso), pero como tenemos una creación de sitios de autoservicio, no es posible cambiarlo manualmente cada vez que se crea una web.

Lamentablemente no hay propiedad Web.RequestAccessEmail en el modelo de objetos del lado del cliente.

¿Hay alguna manera de configurar esta dirección de correo electrónico a través de la bolsa de propiedades (también conocida como Web.AllProperties["__SecretKey"]), un servicio web (_vti_bin, etc.) o alguna otra solución?

¡Cualquier ayuda es muy apreciada!

¿Fue útil?

Solución

En la versión más reciente del "Shell de administración en línea de SharePoint" (v16.0.4630.1200), se incluye Microsoft.SharePoint.Client.dll agrega la propiedad RequestAccessEmail hacia Web clase.

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

Puede utilizar esta DLL hasta que se lance el paquete NuGet.

EDITAR:Desde la versión 16.1.4727.1200 del Microsoft.SharePointOnline.CSOM Paquete NuGet el RequestAccessEmail La propiedad es compatible.

Otros consejos

Desafortunadamente no se puede acceder a esta propiedad a través de CSOM.

Cómo recuperar todas las propiedades disponibles para el objeto de cliente web:

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

Esto es posible pero en mi opinión es un truco.Escribí un artículo para discutir si esta es una forma válida de hacerlo. Manipulación de la interfaz de usuario de SharePoint a través de un IFrame para agregar funciones faltantes del lado del cliente

Aquí está el código:

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

Debe incluir un cuadro de diálogo de espera y algunas advertencias cuando el usuario intenta salir de la página.Cargar una página en un IFrame puede llevar algún tiempo y este código lo hace dos veces.

Licenciado bajo: CC-BY-SA con atribución
scroll top