Pasar al contenido principal

Cargando...

Trabajando con usuarios en Drupal 8 (y 9)

Trabajando con usuarios en Drupal 8 (y 9)

Trabajando con usuarios en Drupal 8 (y 9)

2 minutos

Sin lugar a duda, una de las operaciones más comunes en nuestros desarrollos web bajo Drupal, es la gestión de usuarios.

En numerosas ocasiones deberemos generar cuentas de usuario, realizar comprobaciones de roles, permisos... e incluso verificar que los datos de acceso son correctos.

A lo largo de este artículo intentaré mostrarte algunas de las operaciones más comunes. Empezemos...

Crear una cuenta de usuario

El proceso de creación de una cuenta de usuario en Drupal es muy similar a la creación de cualquier tipo de contenido:

<?php

use Drupal\user\Entity\User;

/* Obtengo el idioma actual */
$language = \Drupal::languageManager()->getCurrentLanguage()->getId();
    
/* Genero el nuevo usuario */
$user = User::create();

/* Añado los campos obligatorios */
$user->setPassword('password');
$user->setEmail('email@ejemplo.com');
$user->setUsername('user_name');

/* Podemos asignar el siguiente valor a FALSE si queremos editar 
 * un usuario existente */
$user->enforceIsNew();

/* Añado los campos opcionales */
$user->set("init", 'email@ejemplo.com');
$user->set("langcode", $language);
$user->set("preferred_langcode", $language);
$user->set("preferred_admin_langcode", $language);

/* Añado el/los roles */
$user->addRole('administrator');

/* Añado otros campos */
$user->set('nombre_campo', 'valor');

/* Guardo los cambios */
$res = $user->save();

Verificar usuario y contraseña

En el caso de tener un formulario personalizado para la realización del login; Drupal nos proporciona una función muy útil para verificar que los datos de usuario y contraseña son los correctos:

<?php

/* Obtenemos el uid del usuario si los datos son correctos */
$uid = \Drupal::service('user.auth')->authenticate('testusername', 'testpassword');

/* Comprobamos que realmente ha encontrado al usuario */
if ($uid) {
  /* Realizamos los operaciones deseadas */
 }

Realizar login

Con la función anterior podemos comprobar si el usuario indicado puede loguearse pero para poder hacer el login se necesita lo siguiente:

<?php

use Drupal\user\Entity\User;

$user = User::load($uid_usuario_para_login);

/* Realizo el login */
user_login_finalize($user);

Una vez realizado el login, lo suyo sería hacer la redirección a la página que queramos mostrar como "inicial" al usuario logueado.

Esta operación de redirección dependerá, en gran medida, de la ubicación del código anterior (no es lo mismo que sea un controlador, el submit de un formulario u otra función).

En un artículo posterior os indicaré las diferentes redirecciones que se pueden usar en Drupal.

Artículos Relacionados

Añadir nuevo comentario

Este campo no se mostrará públicamente.