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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
all:
  is_secure: on
  credentials: admin
Et pour que l'utilisateur soit automatiquement redirigé sur l'espace d'identification s'il n'est pas ou plus connecté.
Pour cela, j'ai modifié le fichier settings.yml en ajoutant à la fin de l'instruction all:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
.actions:  
    login_module:           utilisateur   
    login_action:            login
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
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
all:
 .actions:
    login_module:           ads   
    login_action:           login
et

security.yml:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
new:
  is_secure: on
  credentials: member
edit:
  is_secure: on
  credentials: member
show:
  is_secure: on
  credentials: member
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
 
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 :
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/*
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
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.