Bonjour,
J'ai créé un module "ads" pour créer la création d'annonces.Mais je souhaite restreindre l'accès aux membres. Sachant que je n'ai pas utilisé les plugins symfony (sfGuard,sfDoctrineGuard..), j'ai reussit à sécurisé la partie backend (gestion d'administration) en modifiant :
security.yml:
Et pour que l'utilisateur soit automatiquement redirigé sur l'espace d'identification s'il n'est pas ou plus connecté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 all: is_secure: on credentials: admin
Pour cela, j'ai modifié le fichier settings.yml en ajoutant à la fin de l'instruction all:
Et créer une action login dans le module membres du backend qui se contentera de rediriger sur le frontend.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 .actions: login_module: utilisateur login_action: login
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public function executeLogin(sfWebRequest $request) { $this->redirect('/frontend_dev.php/'.strtolower(substr($this->getUser()->getCulture(),0,2)).'/login.html'); }
Le problème :
Quand je voulais faire pareil pour sécuriser le module "ads" dans le frontend,
j'ai créé le fichier settings.yml et security.yml dans \apps\frontend\modules\ads\config en mettant dans :
settings.yml:
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 all: .actions: login_module: ads login_action: login
security.yml:
et bien sur ajouter dans adsAction.class.php pour la redirection
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10new: is_secure: on credentials: member edit: is_secure: on credentials: member show: is_secure: on credentials: member
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public function executeLogin(sfWebRequest $request) { $this->redirect('/frontend_dev.php/'.strtolower(substr($this->getUser()->getCulture(),0,2)).'/login.html'); }
Ca marche pas !! on me renvoie toujours vers "ads/new" requires authentication, forwarding to "default/login" donc ca m'affiche la page par défaut de symfony qui dit : Login Required This page is not public.
Sachant que j'ai redefinis le settings et mon routing.yml est :
J'ai essayé de supprimer la route par defaut mais ca bug en me disant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 ads: class: sfDoctrineRouteCollection options: model: Annonce module: ads prefix_path: /ads column: id with_wildcard_routes: true ads_show_user: url: /ads/:ville_slug/:id/:TitreAnnonce_slug class: sfDoctrineRoute options: { model: Annonce, type: object } param: { module: ads, action: show } requirements: id: \d+ sf_method: [get] login: url: /:sf_culture/login.html param: { module: users, action: login } requirements: sf_culture: (?:fr|en) #share: # url: /:sf_culture/share.html # param: { module: bureau, action: new } # requirements: # sf_culture: (?:fr|en) disconnect: url: /:sf_culture/disconnect.html param: { module: users, action: deco } requirements: sf_culture: (?:fr|en) checkLogin: url: /:sf_culture/check_login.html param: { module: users, action: doLogin } requirements: sf_culture: (?:fr|en) passLost: url: /:sf_culture/password_lost.html param: { module: users, action: passPerdu } requirements: sf_culture: (?:fr|en) register: url: /:sf_culture/register.html param: { module: users, action: new } requirements: sf_culture: (?:fr|en) users: class: sfDoctrineRouteCollection options: { model: users } localized_homepage: url: /:sf_culture/ param: { module: main, action: index } requirements: sf_culture: (?:fr|en) homepage: url: / param: { module: ads, action: index } default_index: url: /:module param: { action: index } default: url: /:module/:action/*
.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Unable to find a matching route to generate url for params "array ( 'action' => 'login', 'module' => 'default',)"
Je veux être rediriger vers le login.html définis dans la fonction de redirection et apparement le settings.yml n'est pas pris en compte.
Merci d'avance.
Partager