Logo Koncept47

Comment personnaliser l’url de login par défaut dans drupal 9/10

22/05/2021
Drupal, Sécurité web,

Dans Drupal 9 et 10, l'URL par défaut pour se connecter à l'interface d'administration est généralement /user/login, ce qui peut être un vecteur pour des attaques de type brute force si elle reste inchangée. En la personnalisant, vous ajoutez une couche de sécurité supplémentaire et vous éloignez des robots malveillants.

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.

Création d'un module personnalisé

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é.

Utilisation d'un EventSubscriber pour modifier la route

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.

Drupal Routing

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.

Alternatives - Utilisation de modules contribués

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 :

  1. Pathauto: Bien que principalement utilisé pour générer automatiquement des alias d'URL pour différents types de contenu, Pathauto peut aussi être configuré pour créer des alias pour les routes utilisateur. Vous pouvez définir un alias pour la route de connexion dans les paramètres du module.
  2. Redirect: Ce module vous permet de créer des redirections d'URL. Vous pouvez rediriger l'ancienne URL de connexion vers la nouvelle, bien que cela ne change pas la route de connexion elle-même, cela garantit que les utilisateurs qui connaissent l'ancienne URL seront redirigés vers la nouvelle.
  3. Rabbit Hole: Rabbit Hole est un module qui permet de contrôler ce qui doit se passer lorsqu'une entité ou une route est accédée. Par exemple, vous pouvez configurer Rabbit Hole pour qu'il redirige les utilisateurs qui tentent d'accéder à /user/login vers une autre URL ou page de votre choix.
  4. Custom login URL : un module pratique pour personnaliser les URLs de connexion, déconnexion et récupération de mot de passe. Facile à configurer, il offre une touche de personnalisation bienvenue à l'interface utilisateur de votre site.
  5. Rename Admin Paths : Ce module offre une solution élégante pour renommer les chemins d'accès à l'administration de votre site Drupal. Vous pouvez facilement masquer les URLs d'administration standard pour améliorer la sécurité et personnaliser l'expérience d'administration.
  6. Modules spécifiques à la sécurité : Certains modules de sécurité Drupal peuvent offrir des fonctionnalités pour changer l'URL de connexion comme une de leurs fonctionnalités pour renforcer la sécurité du site.

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.

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é.

Dans la même catégorie

Vous avez un projet internet? Parlons en aujourd'hui

Contactez-nous!
Copyright ©2024 Koncept47
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram