web-dev-qa-db-fra.com

Comment ajouter un formulaire de connexion à la page Accès refusé?

J'essaie d'ajouter un formulaire de connexion à la page d'accès refusé et je me demande si cela est possible via l'interface utilisateur.

Des suggestions/idées?

7
jelly46

Une autre solution ici est le module LoginToboggan . Il fournit un certain nombre d'améliorations différentes à la fonctionnalité de connexion.

Le module logintoboggan propose plusieurs modifications du système de connexion drupal dans un module externe en offrant les fonctionnalités et améliorations d'utilisation suivantes:

  1. permettre aux utilisateurs de se connecter à l'aide de leur nom d'utilisateur ou de leur adresse e-mail.
  2. permettre aux utilisateurs de se connecter immédiatement.
  3. fournir un formulaire de connexion sur les pages d'accès refusé pour les utilisateurs non connectés (anonymes).
  4. le module propose deux options de bloc de connexion: l'une utilise javascript pour afficher le formulaire dans le bloc immédiatement après avoir cliqué sur "se connecter". l'autre amène l'utilisateur sur une page distincte, mais renvoie l'utilisateur à sa page d'origine lors de la connexion.
  5. personnaliser le formulaire d'inscription avec deux champs e-mail pour garantir l'exactitude.
  6. redirigez éventuellement l'utilisateur vers une page spécifique lorsque vous utilisez la fonction de "connexion immédiate".
  7. éventuellement rediriger l'utilisateur vers une page spécifique lors de la validation de son adresse e-mail.
  8. afficher éventuellement un message utilisateur indiquant une connexion réussie.
  9. combiner éventuellement le formulaire de connexion et d'inscription sur une seule page.
  10. éventuellement, les utilisateurs non validés sont purgés du système à un intervalle prédéfini (veuillez lire la section mises en garde du fichier install.txt pour des informations importantes sur la configuration de cette fonction!).
  11. s'intègre au module de règles pour effectuer diverses tâches lorsqu'un utilisateur valide via un processus de validation par e-mail (voir http://drupal.org/node/880904 pour un exemple)

Le formulaire de configuration des paramètres possède une option appelée Présenter le formulaire de connexion en cas d'accès refusé (403) qui active/désactive cette fonctionnalité exacte.

4
Shawn Conn

Option 1: utilisez le module CustomError

Le module CustomError permet à l'administrateur du site de créer des pages d'erreur personnalisées pour les codes d'état HTTP 403 (accès refusé) et 404 (non trouvé), sans avoir besoin de créer des nœuds pour chacun d'eux. Quelques détails supplémentaires sur ses fonctionnalités (depuis sa page de projet):

  • Titre et descriptions des pages configurables.
  • Il n'y a pas d'en-tête auteur et date/heure comme avec les nœuds normaux.
  • Tout texte au format HTML peut être placé dans le corps de la page.
  • Les pages d'erreur sont thématiques.
  • Les utilisateurs qui ne sont pas connectés et tentent d'accéder à une zone nécessitant une connexion seront redirigés vers la page à laquelle ils tentaient d'accéder après leur connexion.
  • Permet des redirections personnalisées pour 404s.

Vous devriez être intéressé par la partie sur " Les utilisateurs qui ne sont pas connectés et tentent d'accéder à une zone nécessitant une connexion seront redirigés vers la page à laquelle ils tentaient d'accéder après leur connexion.".

Option 2: rediriger vers l'utilisateur/se connecter à l'aide du module Règles

"Ajouter des paramètres pour la 'page d'accès refusé' et afficher le bloc 'Connexion utilisateur' sur cette page" est en effet une solution qui devrait fonctionner. Cependant, vous pouvez aller un peu plus loin et améliorer l'expérience utilisateur AbitMORE. En utilisant une variante de l'approche décrite dans la réponse à la question sur " Comment rediriger les utilisateurs anonymes vers la page de connexion en utilisant le module Rules? ".

Pour ce faire, supposez que le chemin de la page "Default 403" est défini sur "no_access" (via /admin/config/system/site-information, près du bas de cette page d'administration). Créez ensuite une règle en utilisant le module Rules , avec comme Event quelque chose comme "Après avoir visité le noeud 'no_access'". Pour que la règle entière ressemble à ceci:

  • Événements: Après avoir visité le noeud 'no_access'
  • Conditions:

    1. L'utilisateur a des rôles - Parameter: User: [site:current-user], Roles: anonymous user
    2. PAS de comparaison de texte - Parameter: Text: [site:current-page:url], Matching text: user/login
  • Actions: Redirection de page - Parameter: URL: user/login

Si vous le souhaitez, vous pouvez même ajouter une autre action pour afficher également un message (informatif) dans le Drupal = zone de message, avec quelque chose comme "Vous avez essayé de visiter une page pour laquelle une connexion est requise ...".

Certes, cela peut vous obliger à activer un module supplémentaire contribué ( Rules ). Mais, comme l'indique également sa popularité croissante, ce module est probablement déjà activé dans la plupart des sites (similaire au module Views ), car il existe des dizaines de cas d'utilisation pour ce module. Juste une variante de cette question: que diriez-vous d'améliorer l'expérience utilisateur pour "Page non trouvée" d'une manière similaire?

Option 3: Afficher le bloc de connexion utilisateur sur la page dédiée

Une autre variante, comme alternative aux règles "Action" (pour rediriger vers user/login), consiste à créer un nœud désigné, par exemple avec un chemin comme "my_login_page_with_login_block". Et puis combinez cela avec la configuration du bloc "Connexion utilisateur" (via admin/structure/block) ainsi:

  • Affichez ce bloc dans la région thématique de votre choix.
  • Utilisez le lien "configure" à droite de ce bloc de connexion utilisateur, pour définir " Paramètres de visibilité" pour " Pages". C'est à dire. changez l'option pour " Afficher le bloc sur des pages spécifiques" en " Seules les pages répertoriées", et spécifiez le chemin (my_login_page_with_login_block) dans la zone de texte en dessous. Si, pour une raison quelconque, vous ne souhaitez pas utiliser un chemin, spécifiez simplement node/nid (nid = id du nœud) à la place.
10
Pierre.Vriens

Vous pouvez ajouter des paramètres pour la page 'Par défaut 403 (accès refusé)' dans la configuration du site (admin/config/system/site-information). Et puis affichez le bloc 'Connexion utilisateur' (admin/structure/block/manage/user/login/configure) sur cette page.

5
Andrew

Sans le module LoginToboggan , on peut configurer le bloc de connexion utilisateur pour qu'il soit visible sur les pages désignées et limité aux utilisateurs anonymes. Dans le bloc Paramètres de visibilité du bloc de connexion utilisateur:

  1. Dans l'onglet "pages", définissez "Afficher le bloc sur des pages spécifiques" sur "Uniquement les pages répertoriées" et entrez les pages.

  2. Dans l'onglet "Rôles", cochez "Utilisateur anonyme" pour le paramètre Afficher le bloc pour des rôles spécifiques.

3
MikeSNP

En théorie, vous pouvez définir la page 403 par défaut (accès refusé) sous Informations sur le site sur utilisateur/connexion dans/admin/config/system/site-information.

Je ne l'ai jamais essayé mais c'est juste une idée?

2
Connor Gurney