SharePoint Online: Como hacer una redirección en función de los permisos del usuario logado (I)!

Si tenemos la necesidad de hacer una redirección desde una página cualquiera de un sitio de SharePoint Online en función de los permisos de usuario, contamos con dos tipos de técnicas (teniendo en cuenta las limitaciones del servicio): utilizar código de cliente vs utilizar código de servidor. En el caso de utilizar código de cliente, recurriremos al modelo de objetos en cliente (sabor ECMAScript) que nos permite conocer el usuario logado, comprobar sus permisos  y realizar la correspondiente redirección. Por ejemplo, podemos insertar el siguiente código en una Content Editor WebPart de una página de manera que si el usuario tiene un cierto nivel de permisos se haga la redirección correspondiente:

   1: <script type="text/javascript">

   2: ExecuteOrDelayUntilScriptLoaded(ConsultarUsuario, "sp.js");

   3:  

   4:     function ConsultarUsuario() {

   5:  

   6:         // Contexto de cliente

   7:         var context = new SP.ClientContext.get_current();

   8:         

   9:         // Carga del sitio actual (SPWeb)

  10:         this.site = context.get_web();

  11:         context.load(this.site);

  12:  

  13:         // Usuario actual

  14:         this.UsuarioActual = site.get_currentUser();

  15:         this.UsuarioActual.retrieve();

  16:  

  17:     //Permisos para el usuario actual

  18:     context.load(site,'EffectiveBasePermissions');

  19:  

  20:         // Ejecutar la consulta de forma asíncrona

  21:         context.executeQueryAsync(Function.createDelegate(this, this.onSuccess), Function.createDelegate(this, this.onFailure));

  22:     }

  23:  

  24:     function onSuccess(senger, args) {

  25:         alert("Usuario Actual: " + this.UsuarioActual.get_title() + "\n" + "Login de Usuario:: " + this.UsuarioActual.get_loginName());

  26:     if (this.site.get_effectiveBasePermissions().has(SP.PermissionKind.manageLists))

  27:         alert("No tienes permisos para ver esta página, redirigiendo ...");

  28:         window.location = 'http://www.ciin.es'

  29:     }

  30:     function onFailure(sender, args) {

  31:         alert("Petición fallida " + args.get_message() + "\n" + args.get_stackTrace());

  32:     }</script><input onclick="ConsultarUsuario()" type="button" value="Usuario Actual"/>

Para añadir el código en la WebPart, basta con utilizar la opción de añadir código fuente HTML en lugar de texto enriquecido:

image

Referencias: