Redirection vers une catégorie protégée après la connexion

J’ai fait des recherches et trouvé quelques sujets connexes, mais ils concernent principalement l’authentification unique (SSO), que nous n’avons pas configurée.

Nous utilisons l’authentification standard de Discourse ainsi que l’authentification via le plugin OAuth2.
Nous avons quelques catégories qui exigent que l’utilisateur appartienne à un groupe spécifique.

Si nous créons un lien vers une catégorie protégée pour un utilisateur non authentifié (qui fait partie du bon groupe), il obtient la page d’erreur 404/Oops habituelle. Il doit alors revenir en arrière, se connecter, puis naviguer à nouveau jusqu’à cette catégorie protégée.

Existe-t-il un moyen de lier à la page /login avec une URL de redirection fournie vers cette catégorie masquée, ou de modifier un paramètre pour demander la connexion lors de l’accès à cette catégorie protégée ?

Merci d’avance…

La difficulté est que toute autre action révèle l’existence de la catégorie secrète.

Le conseil traditionnel ici est de modifier le texte de la page 404 pour indiquer que l’utilisateur doit peut-être se connecter pour voir le contenu.

C’est noté — merci !

Cela s’est produit suffisamment souvent pour que nous devions peut-être envisager un paramètre de site optionnel qui assouplit la sécurité sur la page 404 @eviltrout… Ainsi, lorsqu’un utilisateur anonyme clique sur

http://discourse.example/com/t/topic-in-secret-category

vous obtenez

Désolé, vous devez vous connecter pour voir ce sujet

plutôt que

Oups ! Cette page n’existe pas ou est privée.

(Cela pourrait être étendu pour indiquer à quel groupe les utilisateurs connectés devraient avoir accès ?)

Qu’en penses-tu, Robin ?

Je pense que c’est une excellente idée. Pour de nombreux types de forums, indiquer qu’quelque chose existe ne constitue pas une faille de sécurité et améliorerait considérablement l’accessibilité.

Le vrai défi ici réside dans le nommage approprié du paramètre du site et dans l’explication de son fonctionnement. J’ai fait de mon mieux ci-dessous, mais je ne serais pas opposé à des modifications.

Voici une mini-spécification :

  • Ajouter un nouveau paramètre du site detailed_404, par défaut false. « Fournit aux utilisateurs plus de détails sur la raison pour laquelle ils ne peuvent pas accéder à un sujet particulier. REMARQUE : Cela est moins sécurisé car les utilisateurs sauront si une URL correspond à un sujet valide ou non. »

  • Lorsqu’il est activé, dans le contrôleur des sujets, si la vérification du gardien échoue, renvoyer un objet JSON contenant des détails sur la raison de l’échec.

  • Dans l’application front-end, utiliser ces détails pour afficher un message d’erreur approprié :

    • Si l’utilisateur est anonyme : « Désolé, vous devez vous connecter pour voir ce sujet. »

    • Si l’utilisateur est connecté :

      • Si le sujet est restreint à un seul groupe (à l’exception des groupes d’administration) : « Ce sujet est restreint au groupe GROUP_NAME. » et inclure le bouton Demander l’accès.

      • Si le sujet est restreint à plusieurs groupes, afficher un message générique : « Vous n’avez pas accès à ce sujet. Veuillez contacter la personne qui vous a fourni le lien pour demander l’accès. »

@dan, peux-tu ajouter cela à ta liste après ton travail sur le plugin de chiffrement ?

Je pense que detailed_404 serait peut-être mieux et plus concis ?

Bien sûr, j’ai mis à jour le message.

Voulons-nous le faire pour les deux listes de sujets dans une catégorie restreinte et pour un sujet dans une catégorie restreinte, ou uniquement pour le sujet dans une catégorie restreinte ?

Car actuellement, ces éléments ont un comportement différent.

Je ne vois pas beaucoup de gens se plaindre de ne pas pouvoir voir les listes de sujets par rapport aux sujets eux-mêmes. Je ne m’en embêterais pas, sauf si c’est vraiment facile.

J’ai vu que cela a été fusionné hier. Merci à tous !

Pour la bonne forme, la pull request était :