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

7

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?

jelly46
la source
1
Placer le bloc de connexion sur le rappel de la page 404 et utiliser ce module drupal.org/project/blocks404 ou utiliser ce module si vous utilisez Drupal 7 drupal.org/project/navigation404
Rupesh
C'est pour l'erreur «page non trouvée», pas celle «accès refusé».
kiamlaluno

Réponses:

4

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. autoriser les utilisateurs à se connecter en utilisant leur nom d'utilisateur ou 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. redirigez éventuellement 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 courrier électronique (voir http://drupal.org/node/880904 pour un exemple)

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

Shawn Conn
la source
Le module LoginToboggan a fonctionné comme un charme devait inclure la page 403 mais c'était super, merci.
jelly46
10

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 (introuvable), sans avoir à créer de nœuds pour chacun d'eux. Quelques détails supplémentaires sur ses fonctionnalités (à partir de 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 " Les utilisateurs qui ne sont pas connectés et tentent d'accéder à une zone qui nécessite 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 à l'aide du module Rules , avec comme événement 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 un ou plusieurs 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 la zone de message Drupal, 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é ( règles ). 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é, disons 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) comme ceci:

  • Affichez ce bloc dans la région thématique de votre choix.
  • Utilisez le configurelien " " à droite de ce bloc de connexion utilisateur, pour définir les " Paramètres de visibilité " pour " Pages ". Par exemple, changez l'option pour " Afficher le bloc sur des pages spécifiques " en " Uniquement 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 de chemin, spécifiez simplement node / nid (nid = id du nœud) à la place.
Pierre.Vriens
la source
Salut Pierre, c'est d'une grande aide, je vais essayer ceci et vous faire savoir comment je vais. Merci
jelly46
1
Merci pour les commentaires ... J'espère que vous n'oublierez pas un jour de "revenir" avec vos commentaires à ce sujet (après l'avoir essayé). Dommage qu'il n'y ait pas de "rappelez-moi plus tard" (pour y revenir), par exemple implémenté en utilisant quelque chose comme "Rules Scheduler" et / ou "Flag" (comme nous le ferions dans Drupal, non?). .. Note pour moi: ajouter une telle fonctionnalité dans la distribution "ArrayShift" ...
Pierre.Vriens
Eh bien, cela a étendu mes connaissances mais n'a pas encore répondu à la question, c'est une grande aide, mais n'a toujours pas atteint la terre promise.
jelly46
Le module Toboggan a fonctionné comme un charme
jelly46
1
Pas de problème bien sûr, considérons-le comme la flexibilité et les options de Drupal pour choisir ce qui convient à chacun individuellement!
Pierre.Vriens
5

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 'User login' (admin / structure / block / manage / user / login / configure) sur cette page.

Andrew
la source
3

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.

MikeSNP
la source
2

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?

Connor Gurney
la source
1
Mauvaise idée. Les utilisateurs connectés dont l'accès est refusé se retrouvent dans une boucle de redirection sans fin qui provoque un crash du navigateur.
Giles B