Powerapps portals es una manera fabulosa de montar una web en con poco código y que nos permita exponer información al mundo entero. Pero, ¿Queremos que el mundo entero vea toda la información?
El hecho de que Powerapps Portals esté montado sobre un CDS nos permite una gestión muy sencilla de los usuarios y vamos, es este artículo, a explorar algunas de las posibilidades que nos ofrece esta característica. En el artículo veremos cómo denegar el libre registro de usuarios en la web, para que sólo tengan acceso los usuarios que nosotros demos de alta específicamente. Así, por ejemplo, podríamos hacer partes la web accesible sólo a nuestros clientes y colaboradores. Además, estos usuarios necesitarán alguna manera de acceder a la web por primera vez…
El flujo de uso de la web que vamos a preparar es el siguiente:
- Un usuario anónimo no ve más que la página de portada y la página de sign-in. El anónimo no loguearse en la web porque no tiene usuario y contraseña.
- Un usuario conocido (por ejemplo, un cliente o un colaborador) tendrá ya preconfigurada una cuenta de usuario. A este usuario se le creará una invitación, un código con el que podrá entrar aunque no tenga usuario y contraseña a priori. Al utilizar este código, el usuario podrá crearse su propio usuario y contraseña que más le guste, pero siempre estará relacionado con el contacto que creamos en primera instancia.
Así, lo que conseguimos es que un grupo de usuarios conocidos tengan una manera de entrar en la web y que ningún usuario desconocido pueda entrar. Para terminar con la presentación, veremos cómo hacer el proceso de creación de usuarios e invitaciones por lotes, de forma que podamos dar de alta a múltiples usuarios y generarles las invitaciones listas para enviar y que puedan entrar a la web.
En primer lugar vamos a limitar el acceso a los usuarios anónimos. Las webs de powerapps portals, por defecto, están pensadas para que cualquier usuario pueda darse de alta (como haríamos en facebook, por ejemplo). Viene un usuario, introduce algunos datos, junto con su correo electrónico, y se le da de alta, de forma que ya puede acceder a la “zona restringida”. Sin embargo, este no es el planteamiento que estamos haciendo: lo que queremos es seleccionar activamente quiénes son los usuarios que pueden entrar, de manera que no queremos que pueda darse de alta cualquiera, sino que lo que queremos es que pueda darse de alta quien nosotros elijamos.
Sobre el portal, en la elipsis del menú de apps, le damos a configuración
En la ventana emergente: configuración del sitio
Y esto nos lleva al panel de control del portal donde están todas las características importantes. Nos interesa por ahora la configuración del sitio:
Las opciones vienen con su ruta de carpetas que indican a qué rama del funcionamiento de la web corresponden. Las opciones que nos interesan aquí son las de la rama Authentication/Registration, que son las que tienen que ver con la gestión de los login.
En concreto, nuestra opción más importante será Authentication/Registration/OpenRegistrationEnabled, que al modificarla a false, evitará que aparezca el formulario de creación de usuarios, impidiendo que usuarios anónimos puedan registrarse.
De hecho, si navegamos nuestra página podemos ver el cambio. Antes:
Después:
Nótese que ha desaparecido la opción Register de las pestañas.
¿Has guardado y no aparece el cambio? Al cambiar la configuración es necesario sincronizar la configuración, y para ello hay que ir al editor del portal y, arriba a la derecha, pulsar en “Configuración de sincronización”. Una vez sincronizado el cambio debería reflejarse en la web.
Entre las opciones está Authentication/Registration/InvitationEnabled que debemos asegurarnos de mantener a True para poder permitir a los usuarios entrar con el código de autenticación.
En este punto, nadie podría hacer login en nuestra página. Para remediarlo, vamos a crear un usuario de la página. Para tal fin, vamos a la entidad Contactos, en el menú lateral de las opciones del portal
Al hacer clic en la entidad, vemos la página de contactos, y aquí debemos dar de alta a los usuarios que queramos que puedan hacer login. Por defecto, se nos muestra la vista My Active Contacts, que nos muestra sólo los usuarios que hemos creado nosotros. Es importante recordar que hay más vistas en este tipo de formularios que según el contexto pueden interesar, aunque en nuestro caso no son necesarias. En el ribbon superior le damos a Nuevo y rellenamos los datos como mejor nos convenga. En principio, el único campo obligatorio es Last Name pero podemos rellenar todos los campos que queramos
Una vez hemos rellenado la información, guardamos y cerramos el contacto. A continuación vamos a la segunda pata del montaje, las invitaciones:
Las invitaciones relacionan a los usuarios con un código de un solo uso que permitirá a una persona acceder a una página donde elegirá su nombre de usuario (para la web) y su contraseña de acceso. Así, esta persona, al recibir dicho código, podrá ir al formulario de acceso y registrarse, y lo interesante es que sólo podrá hacer eso si nosotros previamente le hemos creado un usuario y una invitación relacionada.
El formulario nos muestra por defecto la vista Invitaciones Abiertas que es el listado de invitaciones que aún no han sido canjeadas. Al canjear una invitación, ésta desaparecerá de esta vista y aparecerá en la vista de Invitaciones Completadas. Si pierdes de vista una invitación, cambia de vista.
En el formulario de Invitaciones, le damos a nuevo y creamos una invitación con el nombre que prefiramos, y de tipo Único, para relacionarla con un solo usuario (también puede invitarse a grupos). Una vez seleccionemos el tipo de invitación, el formulario mostrará un espacio para elegir a qué usuario queremos invitar. Seleccionamos a nuestro usuario de prueba.
Después de guardar la invitación (en esta ocasión no guardamos y cerramos, sino sólo guardar), en la pestaña Avanzado nos aparecerá el código de invitación. Este código no aparecerá hasta que guardemos por primera vez la invitación, es por eso que tenemos que guardarla primero.
Con este código en el portapapeles, vamos a la web y en el apartado de registro, le damos a canjear invitación, para introducir este código:
Y le damos a Registrar.
La página que se nos muestra nos pide email, nombre de usuario y password:
Al ingresar, el portal nos envía a una página donde el usuario puede aumentar la información. Vamos a rellenar algunos campos para ver qué ocurre en la entidad Contacts
Con estos datos introducidos (nótese que tenemos Test User como nombre y apellidos), finalmente ingresamos en la página. Se puede ver arriba a la derecha en el portal el nombre del usuario: Test User
Primero vamos a comprobar qué ha ocurrido en la entidad contactos del portal. Vayamos a la página de contactos de la configuración del portal, donde dimos de alta al usuario, y abramos el contacto Test User, a ver qué hay ahí.
Podemos observar como los datos que hemos rellenado en el formulario de login se han añadido al usuario en contactos.
Con esto hemos visto el flujo completo del login de un usuario: a partir de ahora, a nuestro portal podrán acceder los usuarios que (1) hayamos dado de alta nosotros y (2) tengan una invitación.
Por último, vamos a limitar el acceso a una de las secciones de nuestra web para que sólo puedan entrar usuarios registrados. Para ilustrar el ejemplo, vamos a hacer que la página “Sobre nosotros” (que se crea por defecto al crear un nuevo portal) sea sólo visible y accesible para usuarios registrados.
Para ello, en la configuración del portal vamos a la sección “Reglas de control de acceso a páginas”
Allí creamos una nueva regla:
Guardamos la regla y, después de guardar, vamos, dentro de la misma regla a “Roles Web”, y allí, añadimos el rol existente “Usuarios Autenticados”
Guardamos la regla y a continuación debemos refrescar el portal, yendo al editor y dándole al botón de refresco de la metadata del portal, arriba a la derecha, como hicimos al cambiar la configuración del portal. Una vez refrescada la metadata, volvemos a navegar la página:
Como no estamos autenticados, en el menú de arriba a la derecha no aparece la sección “About Us”, pero si hacemos login con el usuario que creamos anteriormente (utilizando su nombre de usuario y su contraseña en el formulario de sign in):
De hecho podemos hacer una prueba más: abramos la página “Sobre nosotros” y copiemos su URL. A continuación, hagamos logout del usuario en el portal e introduzcamos la url, para intentar ver la página directamente, desde el link:
Si observamos la url, nos ha enviado directamente a la página de signIn, en vez de mostrarnos la página About US, pero queda esa dirección como parámetro para que nada más entrar seamos redireccionados a esa parte. No se puede ver esa sección sin hacer login, y si por alguna razón tenemos acceso a la url, se nos pedirá que ingresemos usuario y contraseña.