
Vous cherchez à modifier l’URL d’accès à l’admin de Drupal (souvent /user/login par défaut) pour améliorer la sécurité ou personnaliser l’expérience utilisateur ? Dans cet article, nous vous montrons comment le faire en créant votre propre module personnalisé, sans recourir à des modules contribués externes.
En outre, personnaliser cette URL peut contribuer à renforcer l'identité de votre marque et à offrir une expérience plus cohérente à vos utilisateurs. Cela peut aussi être une exigence pour des raisons de structure de site ou de spécifications de projet.
Que vous soyez un développeur expérimenté ou un débutant avec une certaine familiarité avec Drupal, ce guide vous aidera à effectuer cette modification de manière efficace et sécurisée.
Drupal est une plateforme offrant énormement de possibilités de personnalisation grâce à sa modularité. Pour faire des ajustements comme changer une URL, on peut simplement créer un module. Mais ne vous laissez pas impressionner par cette étape. Même si ça peut sembler un peu technique, mettre sur pied un module de base est plutôt aisé avec Drupal. On va y aller étape par étape, et vous verrez que c'est loin d'être insurmontable !
Pour commencer, créez un nouveau dossier dans le répertoire /modules/custom de votre installation Drupal. Il est préférable de nommer le dossier de manière à refléter la fonction du module, mais pour simplifier l'exemple, nous allons juste mettre monmodule.
Dans ce dossier, vous allez créer deux fichiers :
monmodule.info.yml : Ce fichier informe Drupal de l'existence de votre module. Voici un exemple de contenu pour ce fichier :
name: Mon module type: module description: Fournit un chemin personnalisé pour la page d'identification. core_version_requirement: ^9 || ^10 package: Custom
monmodule.module : Ce fichier sera utilisé si vous avez besoin d'implémenter des hooks ou des fonctionnalités spécifiques. Pour la modification de l'URL de connexion, ce fichier peut ne pas être nécessaire, mais il est bon de le créer au cas où vous auriez besoin d'ajouter des fonctions supplémentaires plus tard.
Avec ces fichiers en place, allez dans l'interface d'administration de Drupal sous Extensions et activez votre nouveau module personnalisé.
Avec votre module de base en place, la prochaine étape consiste à utiliser un EventSubscriber pour intercepter et modifier la route de connexion. Drupal 8 a introduit le concept de Symfony EventDispatcher, qui permet aux modules de réagir et d'agir sur divers événements dans le système. Drupal 9 et 10 continuent d'utiliser cette approche.
Pour commencer, vous devez créer un nouveau fichier pour créer un service et inscrire notre classe à un évènement . Ce fichier sera nommé monmodule.services.yml et placé dans le dossier du module
Voici la structure de base que vous pouvez utiliser :
services:
monmodule.route_subscriber:
class: Drupal\monmodule\Routing\RouteSubscriber
tags:
- { name: event_subscriber }
L'ajout d'un tag avec le nom "event_subscriber" indique à Drupal que cette classe doit être incluse lorsque des événements sont déclenchés.
Ensuite, nous devons ajouter la classe de routage pour écouter l'événement.
Dans le système de routage de Drupal, une route permet d'associer une URI à la fonction qui va produire la page correspondante. C'est le mécanisme qui détermine comment une requête pour une ressource spécifique est traitée et la réponse qui en découle.
Dans notre cas, La classe \Drupal\Core\Routing\RouteSubscriberBase contient un écouteur d'évènement associé à l'évènement RoutingEvents.
Nous allons donc créer une class RouteSubscriber qui étend la classe RouteSubscriberBase
Pour respecter les convention, Créer un fichier RouteSubscriber.php dans le dossier src/Routing de notre module
<?php
namespace Drupal\monmodule\Routing;
use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;
/**
* Listens to the dynamic route events.
*/
class RouteSubscriber extends RouteSubscriberBase {
/**
* {@inheritdoc}
*/
protected function alterRoutes(RouteCollection $collection) {
// Modifie le chemin '/user/login' en '/mon-url-de-login'.
if ($route = $collection->get('user.login')) {
$route->setPath('/mon-url-de-login');
}
}
}
Dans le code ci-dessus, la méthode alterRoutes est utilisée pour modifier la route de connexion. Vous pouvez remplacer '/mon-url-de-login' par le chemin de votre choix.
Au final, votre dossier monmodule devrait ressembler à cela:
Enregistrez les modifications, effacez les caches de votre site Drupal pour que les modifications prennent effet, et votre EventSubscriber sera en place. Testez la nouvelle URL de connexion pour vous assurer qu'elle fonctionne comme prévu.
L'utilisation de modules contribués peut être une solution plus rapide et plus facile, surtout si vous n'êtes pas à l'aise avec le code ou si vous cherchez à implémenter des changements rapidement. Cependant, assurez-vous que les modules que vous choisissez sont bien maintenus et compatibles avec la version de Drupal que vous utilisez.
Voici quelques options populaires :
/user/login vers une autre URL ou page de votre choix.Avant d'installer un nouveau module contribué, lisez toujours sa documentation et ses avis pour comprendre son fonctionnement et ses éventuelles implications sur la performance et la sécurité de votre site.
Ces modules offrent des solutions rapides et flexibles. Toutefois, créer un module personnalisé peut être plus adapté si vous souhaitez une solution légère, maîtrisée, et parfaitement alignée avec les besoins spécifiques de votre projet.
En fin de compte, la méthode que vous choisissez doit être alignée avec les besoins spécifiques de votre site, vos compétences techniques, et les ressources dont vous disposez.
Une fois la modification effectuée avec succès, votre site Drupal bénéficiera d'une route de connexion personnalisée qui peut renforcer la marque de votre site et/ou sa sécurité.
Par défaut, l’URL de connexion de Drupal est /user. Elle redirige automatiquement vers le formulaire d’authentification.
Non, Drupal ne propose pas cette option en natif. Il faut soit créer un module personnalisé (comme montré dans cet article), soit utiliser un module contribué tel que Custom Login URL.
Le module Login Destination offre de nombreuses options de redirection après connexion, selon le rôle de l’utilisateur, la page d’origine ou d’autres critères avancés.
Notre approche, plus ciblée, consiste à contrôler l’accès à la page de login en définissant une URL spécifique via un module personnalisé. Elle est idéale si vous souhaitez uniquement personnaliser l’accès au formulaire de connexion, sans gérer de logiques complexes de redirection post-authentification.
Changer l’URL de login et d’admin Drupal peut renforcer la sécurité et améliorer la clarté pour les utilisateurs.