2011-05-25 2 views
1

Directement au point - J'ai un projet Symfony 1.3/Propel 1.4. J'ai un module qui est sécurisé via is_secure: true dans son propre security.yml. Je veux que ce module soit accessible non seulement pour les super-administrateurs - j'utilise le plugin symfony sfGuardPlugin. Le module est situé dans l'application backend.Symfony: désinstalle un module backend pour certains types d'utilisateurs. Comment?

Je voudrais rendre le module accessible aux utilisateurs qui ont une quelconque valeur de leur propriété type. Les utilisateurs réguliers du site ont NULL, tous les autres ont une valeur quelconque. Quand je change la directive de sécurité à is_secure: false (juste pour le tester), je vais alors au /admin et me connecte avec un utilisateur qui a quelques type, je suis correctement redirigé vers /admin/purchases (le seul module non sécurisé backend) mais avec une erreur de sécurité message - "Vous n'avez pas accès à montrer cette page" ou quelque chose le long des lignes.

Puisque je ne connais pas très bien le sfGuardPlugin (et la sécurité de Symfony en général), j'aimerais obtenir de l'aide pour savoir comment procéder, s'il vous plaît.

Répondre

0

Voir documentation à propos de la sécurité de l'action.

Utiliser les autorisations de groupe de sfGuardPlugin à des informations d'identification d'annonces automatiquement pour les utilisateurs de votre choix (voir extra documentation pour sfGuardPlugin afin de comprendre comment le plugin convertit les groupes d'utilisateurs et les autorisations dans les informations d'identification)

+0

Je vais sûrement jeter un oeil, mais depuis que je suis encore un débutant à Symfony , Je serais reconnaissant si vous pouviez esquisser un pseudo-code et quels fichiers à toucher. Vous savez, quelqu'un de nouveau est beaucoup plus confiant quand il a un exemple de code à se mêler. ;) – dimitarvp

+0

J'ai passé en revue le doc, mais malheureusement pour le moment il ne couvre pas mon scénario, qui est: J'ai déjà un module 'backend' nommé' purchase' (il est généré via les générateurs admin de Symfony), et je veux juste pour filtrer ce module particulier (ou certaines de ses actions) de la sécurité au niveau de l'administrateur. La documentation que vous avez liée (le premier lien) ne couvre pas le cas du module «backend». :-( – dimitarvp

+0

OK, il est trié.Trop assez paresseux pour partager le processus étape par étape, mais je l'ai fait.La documentation liée a aidé après tout.Marquage. – dimitarvp

0

Si vous ne voulez pas le relais sur les pouvoirs security.yml, vous pouvez aussi gérer cela dans une action:

public function executeIndex($request){ 
    if(!$this->getUser()->hasGroup('desired-group')){ 
    $this->getUser->setFlash('message', 'You do not have access to show this page'); 
    return $this->redirect('admin/purchases'); 
    } 

    // more logic here 
} 

Si cela fonctionne pour d'autres actions de votre module, yould pourrait utiliser le preExecute() Methode en cas de DRY (vous répéter ... DonT)

0

Tant que vous avez les bonnes informations d'identification pour chaque utilisateur. Dans vos modules back-end fichier security.yml vous pouvez le faire:

all: 
    credentials: [[admin, developer]] 

Ou vous pouvez faire des actions individuelles:

requestView: 
    credentials: [[supporter, admin, developer]] 
Questions connexes