IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Redirection dans un template [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 321
    Par défaut Redirection dans un template
    Bonjour,
    J'aurais besoin de faire une redirection dans un template. Je sais que c'est contraire aux principes de symfony, mais c'est une des seules manière qu'il me reste.

    Je veux interdire l'acces à des modules de mon application dans certains cas ( utilisateur expiré ou désactivé ).
    J'avais pensé aux credentials pour gérer cela mais je n'arrive pas à les faire fonctionner.

    Voici mon fichier security.yml pour l'un des modules que je souhaite restreindre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    all:
      credentials: non-expired
     
    default:
      credentials: non-expired

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Les crédentials permettent de valider l'accès, pas de l'interdire. Donc plutôt que d'utiliser un credential : expired il conviendra d'en utiliser un valid_user.

    Ce qui, par le retrait du crédential aux utilisateurs concerné, permetra de leur interdir l'accès à différents modules.

    La réaction dépendra un peu de ton environnement, notamment de l'utilisation (ou non) de sfGuard.

    En cas d'absence de credential et de déclaration faîtes dans le view.yml de chaque module (ou globalement) les utilisateurs sont renvoyé vers une url précisé dans le setting.yml par les paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # setting.yml
    all:
      .settings:
        login_module:           sfGuardAuth
        login_action:           signin
     
        secure_module:          sfGuardAuth
        secure_action:          secure
    A noter que ce sont ici les paramètres par défaut de sfGuard. Ils peuvent être modifié à loisir et pointer vers le module qui traitera l'erreur (un module de payement par exemple). Attention, ce module, lui, devra être accessible aux utilisateurs (pas de sécurité dessus) pour éviter "la boucle de la mort".

    Tu peux aussi modifier ton myUser et y rajouter une méthode qui retourne vrai si l'utilisateur est actif. Dans ce cas, soit action par action dans ton contrôleur, soit par la méthode preExecute() qui est exécuter avant toutes autres action dans ce contrôleur. L'utilisation d'un redirect ou d'un forward (ou mieux d'un forwardUntil() ) permettre de rediriger l'utilisateur vers le module de traitement.

    Attention, tu dis : "de faire une redirection dans un template" pour moi, en symfony, cela signifie que tu traites le contrôleur et qu'à la fin de son exécution tu rediriges vers un autre template, ce qui me semble une très mauvaise idée. Il vaut mieux rediriger en début de traitement de l'action vers une autre action (et son template).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 321
    Par défaut
    Ce qui, par le retrait du crédential aux utilisateurs concerné, permettra de leur interdire l'accès à différents modules.
    Oui c'est ce que je fais, les utilisateurs qui ne peuvent pas accéder au module n'ont pas le credential en question. Cependant, ils peuvent tout de même accéder au module...

    Peux tu m'éclairer un peu sur la méthode preExecute() ? Comment l'implémenter ? Merci.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 321
    Par défaut
    J'ai réussi à faire ce que je voulais avec preExecute.
    Merci Michel pour l'infos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de redirection dans le form
    Par leloup84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/02/2006, 14h09
  2. [XSL] Passage de variable dans un template
    Par Otarie dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/11/2005, 23h50
  3. Redirection dans un fichier
    Par radium dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 09/08/2005, 14h45
  4. cast dans un template
    Par olivic dans le forum Langage
    Réponses: 15
    Dernier message: 20/10/2004, 14h10
  5. Trouver les redirections dans des traces
    Par severine dans le forum Développement
    Réponses: 3
    Dernier message: 21/04/2004, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo