[7] Gestionar la participación: usuarios y comunidades.
Un sistema de gestión de contenidos también gestiona los usuarios que usan y generan esos contenidos, diferenciando niveles de acceso y estableciendo métodos de autenticación.
Los sitios web no sólo publican información, sino que permiten la publicación colaborativa, la relación entre contenidos propios y externos, compartir y recomendar información: es decir, crear comunidades de información.
Autenticación de usuarios, Los miembros pueden registrarse o ser registrados por el administrador, para luego con un nombre de usuario y clave acceder a más servicios. Existe otro método de autenticación interesante, un usuario registrado en un sitio Drupal puede ingresar directamente en un segundo sitio con las mismas credenciales si el administrador del segundo sitio así los
dispone, esto refuerza las características innatas de creador de comunidades de la cuales Drupal dispone.
Se puede crear perfiles o roles de usuarios basados en permisos asignados granularmente a cada uno de ellos, por ejemplo, pueden existir grupos de usuarios que pueden publicar contenidos directamente, otros pueden necesitar aprobación de un tercer usuario que desempeña el rol de administrador.
El módulo core Profile permite establecer qué campos tendrá la ficha de usuarios, permitiendo adaptarse a las necesidades del proyecto.
La gestión de permisos se realiza por roles y módulos. Los usuarios se dividen inicalmente en dos grupos: Anónimo y Autenticado. Todo usuario registrado pertenecerá siempre al grupo Autenticado, desde el que podremos establecer nuevos roles.
Cada vez que activemos un módulo, debemos revisar qué permisos nuevos ofrece, y configurarlos según nuestro interés.
En relación con la creación de contenido, ofrece los siguientes permisos básicos:
– Crear nodos (Para cada tipo de contenido)
– Editar nodos propios (Para cada tipo de contenido) – Editar cualquier nodo (Para cada tipo)
– Borrar nodos propios o cualquiera, de igual modo que para
“edición”.
Cuando se tiene permiso de creación o edición sobre un nodo, se podrán modificar todos los campos, las categorías y el flujo de publicación.
Dispone de un macropermiso “Administrar nodos” que permite un control absoluto de todos los contenidos del web, a todos los niveles. También ha permisos para administrar tipos de contenido y acceder a versiones anteriores.
Es importante saber que Drupal no ofrece permisos específicos para diferenciar niveles de acceso a contenidos. Hay que tener en cuenta que si queremos
construir sistemas en los que haya diferentes niveles de acceso para visualizar contenidos, será necesario trabajar con diferentes opciones de módulos
contribuidos, con cierta complejidad (Taxonomy Access Control (TAC), TAC Lite, Content Access y la extensa familia de módulos de Organic Groups).
– Estos mismos módulos permiten también definir niveles de acceso para edición más granulares, por categorías y grupos de contenido.
La administración de categorías está orientada a que se realice por el
administrador, ya que tan sólo ofrece un permiso que permite controlar todos los vocabularios.
Política de usuarios y roles
Drupal nos permite manejar usuarios. Cuando empezamos con la plataforma trabajamos siempre como el usuario administrador, o si hemos hecho logout, con el anónimo.
Vayamos a administrar usuarios, distinguiendo:
• Gestión de usuarios (User settings) (Cómo se registran, que datos tenemos de ellos y qué roles creamos)
• Permisos y control de acceso.
Empezamos por la gestión, por "User settings". Allí podemos definir el proceso de alta de usuarios:
• Si se puede dar de alta cualquier visitante a la web. El proceso se completa por correo electrónico, inmediatamente. Se trata de la opción "Create new account"
con la url "user/register", la cual nos aparece en el bloque de registro de usuarios cuando no hemos hecho aún login, junto con "Request a new password".
• Si pueden solicitar el alta, pero con validación del administrador.
• Si sólo el administrador puede crear usuarios. Si sólo se pueden crear usuarios por invitación.
Hasta aquí es sencillo, en función de las características de nuestro proyecto.
El registro de usuarios recoge pocos datos: nombre de usuario y correo electrónico. A continuación hay una serie de formularios para parametrizar los mensajes de correo que se envían, las indicaciones que se hacen al usuario. Se trata de una plantilla de texto que usa algunas variables de sustitución, por ejemplo !username, para el nombre de usuario o !site para el nombre del web.
Al final se indican las opciones para las imágenes (Avatar de usuario).
• Primero se habilita o no.
• Luego se indica el "Picture image path" que será un subdirectorio de la carpeta
"files" (Que lo creará automáticamente drupal si hemos configurado bien antes la carpeta con 777, como se indicó al tratar la instalación)
• Permite cargar una imagen por defecto.
• También se puede limitar el pero en Kb y la longitudxlatitud.
Todos los usuarios que creamos serán, obligatoriamente del rol "authenticated user".
Dos son pues los roles básicos de Drupal.
• Anónimo.
• Usuario.
• (El administrador es un usuario especial, que es siempre el usuario "1".
Pero además podemos crear roles, para definir permisos por grupos de usuarios. Porque en Drupal los permisos no son individuales, sino por roles.
Un ejemplo de rol sería "Editor de contenidos", que sería un grupo de usuarios que tiene permisos para crear contenidos y editar cualquiera. Otro rol podría ser "Colaborador"
que sólo tiene permisos para crear y editar los suyos.
Y por último, antes de pasar a los permisos de usuario, veamos como crear o ver los usuarios que tenemos, en "/user/user"
• Se trata de un entorno parecido al de gestión de contenidos, que nos muestra un listado (Donde podemos ver cuando se creó el usuario y cuando accedió por última vez, y si está activo o bloqueado).
Además podemos realizar búsquedas filtradas (La búsqueda por nombre la podrá hacer el administrador cuando activemos el módulo de búsqueda). Al editar la cuenta de un usuario, el administrador puede:
• Cambiar el nombre de usuario
• Cambiar el correo
• Cambiar la password
• Bloquear o Activarlo.
• Cambiarle el rol
• Activar el formulario de contacto.
• Editar la imagen.
• Actualizar la firma.
Sin embargo el propio usuario no puede cambiar el rol, y dependiendo de los permisos, desactivar el formulario de contacto o el nombre de usuario. Si el administrador ha hecho varios temas posibles, el usuario puede incluso indicar cuál será su tema, permitiendo una cosa extraña pero curiosa, como que un web tenga diferentes looks para cada usuario.
Perfil de usuario
Junto a los datos necesarios para el registro y gestión de usuarios, podemos crear nuestros propios campos. Se trata del módulo core "Profile", que primero tenemos que activar.
Al activarlo nos aparece una nueva opción en gestión de usuarios (/admin/user/profile) Nos permite definir campos para recoger la información que queramos del usuario:
• Tiene varios tipos de campos (Línea de texto, TextArea, Menú desplegable, url, ..)
• Hay campos que generan enlace (Si tienen valor único)
• Hay módulos que extienden sus posibilidades.
Los campos se agrupan en grupos llamados Categorías (Por ejemplo: Dirección, Currículum, ...) a los que no se accede directamente cuando vamos a editar, sino pinchando en la pestaña correspondiente.
Cada campo podemos decidir su visibilidad:
• Campo oculto del perfil. Sólo pueden acceder a él los administradores, los módulos y los temas.
• Campo privado. El contenido sólo está disponible para los usuarios privilegiados.
• Campo público. El contenido se muestra en la página del perfil, pero no se usa en las páginas de las listas de usuarios.
• Campo público. El contenido se muestra en la página del perfil y en las páginas de las listas de usuarios.
Otra funcionalidad práctica es que podremos indicar si el campo aparecerá al registrar nuevos usuarios.
Por defecto, en la ruta www.ejemplo.com/profile se listan todos los usuarios del sistema.
• Para ello recordemos los permisos. En el módulo user hay que marcar la casilla de "acceso a perfiles de usuarios"
Nota: Cada campo tendrá un nombre único, del estilo "profile_nombre" al cual podemos acceder luego con diversos php snippets, para, por ejemplo, usarlo en nuestras plantillas del tema.
Al final se indica si el formulario se va rellenando conforme se teclea (Form will auto- complete while user is typing), si es obligatorio y SI SERÁ VISIBLE EN EL
MOMENTO MISMO DE REGISTRARSE.
Cuando el usuario vea su ficha de usuario se verán los campos públicos y mostrados, y cuando la edita le aparecerá una pestaña por cada agrupación. Una vez activado este módulo, si ponemos "profile" en la url de nuestra web, veremos un listado de todos los usuarios.
P.D.: El campo "Page title" sirve para hacer una página de navegación para un campo
"freeform". Si por ejemplo preguntamos en ese campo "color favorito", aquí indicaríamos una página que listaría todos los usuarios que tengan el mismo color favorito.
Permisos y control de acceso
Volvemos a insitir en que cada módulo tiene sus propios permisos.
Tenemos que irnos a USER > PERMISSIONS
Al inicio tendremos dos columnas, una para el visitante y otra para el usuario autenticado. Cada rol que creamos, añade una columna.
• Cuando tengamos más roles y sea visualmente difícil de entender, podemos entrar desde roles, a ver sus permisos específicos.
La granularidad de los permisos es fundamental para gestionar comunidades online, y Drupal lo hace bastante bien. Ya hablamos en el apartado de terminología sobre ellos.
Repasemos algunos permisos relacionados con los módulos que hemos ido activando hasta ahora:
• contact module, simplemente permite activar el acceso al formulario de contacto (access site-wide contact form)
• poll module : Permite que los usuarios puedan Cancelar su voto, Crear encuestas, Ver todas los votos realizados y votas.
En relación con las operaciones de construcción y administración, las opciones que merece la pena comentar son:
• block module (El permiso es administrar, por lo que generalmente estará limitado al administrados o usuarios con alto nivel de acceso)
• filter module (El permiso es administrar, por lo que generalmente estará limitado al administrados o usuarios con alto nivel de acceso)
• menu module (El permiso es administrar, por lo que generalmente estará limitado al administrados o usuarios con alto nivel de acceso)
• system module (El permiso es administrar, por lo que generalmente estará limitado al administrados o usuarios con alto nivel de acceso) En esta apartado permite un permiso menor para "administer site configuration" y otro que permite a los usuarios seleccionar un tema diferente (De los autorizados por el administrador)
• taxonomy module (El permiso es administrar, por lo que generalmente estará limitado al administrados o usuarios con alto nivel de acceso)
Para el módulo USER:
• Acceder a la información y edición de "profiles " .
• administer access control (El permiso es administrar, por lo que generalmente estará limitado al administrados o usuarios con alto nivel de acceso)
• administer users (El permiso es administrar, por lo que generalmente estará limitado al administrados o usuarios con alto nivel de acceso)
• change own username (Si podrán cambiar su nombre de usuario) Sobre los permisos de contenido, tenemos dos grupos: Nodos y comentarios:
Los permisos de comentarios los tratamos luego cuando hablemos de comentarios.
Detengámonos en los permisos sobre CONTENIDO. Lo primero es que el Drupal básico NO TIENE PERMISOS DE ACCESO AL CONTENIDO.
• No podemos decir que sólo los usuarios del rol X podrán acceder a este tipo de contenido (Se puede hacer instalando otros módulos complementarios que ya veremos).
• Hay un permiso de "Acceso al contenido" que permite ver contenidos. Si los anónimos no lo tienen, se tratará de una web privada sólo para usuarios registrados. Pero todos tendrán el mismo nivel de visualización.
• Sobre "content types" (El permiso es administrar, por lo que generalmente estará limitado al administrados o usuarios con alto nivel de acceso)
• El permiso "administer nodes" permite control total sobre todos los contenidos, todos todos. Luego habrá un permiso de CREAR para cada tipo de contenido.
• También un permiso de EDITAR O BORRAR LOS PROPIOS para cada tipo de contenido (edit own ... content)
• Y también EDITAR O BORRAR CUALQUIERA para cada tipo de contenido (edit xxx content )
• Sobre la gestión de versiones hay dos permisos:
o revert revisions (Devolver el contenido a un estado anterior)
o view revisions (Ver las versiones)
Recordemos que hay que tener cuidado con dos permisos:
• Administrar nodos, que permite controlar todos los contenidos del web.
• Administrar filtros, que permitiría inyectar código malicioso en php.
Todos los usuarios registrados serán Authenticated Users, más los demás roles que les demos.
Cuando creamos usuarios, luego hay que editarlos para asignarlos cualquier rol extra (A menos que, como siempre, usemos uno de los módulos que asignan un rol predefinido, además de Authenticado)
Es conveniente separar los permisos en grupos-roles, para diferenciar los niveles de acceso y de reponsabilidad.