sauf qu' en utilisant comme exemple le mot admin au niveau du group et des permissions dans les exemples du type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Le système des credentials de symfony est simple et puissant. Un credential est une chaîne qui peut représenter tout ce dont vous avez besoin pour décrire le modèle de sécurité des applications (comme des groupes ou des autorisations).
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4all: is_secure: true credentials: admin
on se sait pas si il cause des groups ou des permissions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 index: credentials: [A, B]
Après 2 jours de prise de tête en pensant que le niveau 1 était le group et que l'on pouvait paufiner avec un niveau 2 en utilisant les permissions j'ai l'impression que c'est le contraire:
mon schéma du plugin sfGuardUser:
:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190 sfGuardGroup: actAs: [Timestampable] columns: name: type: string(255) unique: true description: string(1000) relations: Users: class: sfGuardUser refClass: sfGuardUserGroup local: group_id foreign: user_id foreignAlias: Groups Permissions: class: sfGuardPermission local: group_id foreign: permission_id refClass: sfGuardGroupPermission foreignAlias: Groups sfGuardPermission: actAs: [Timestampable] columns: name: type: string(255) unique: true description: string(1000) sfGuardGroupPermission: options: symfony: form: false filter: false actAs: [Timestampable] columns: group_id: type: integer primary: true permission_id: type: integer primary: true relations: Group: class: sfGuardGroup local: group_id onDelete: CASCADE Permission: class: sfGuardPermission local: permission_id onDelete: CASCADE sfGuardUser: actAs: [Timestampable] columns: first_name: string(255) last_name: string(255) email_address: type: string(255) notnull: true unique: true username: type: string(128) notnull: true unique: true algorithm: type: string(128) default: sha1 notnull: true salt: string(128) password: string(128) is_active: type: boolean default: 1 is_super_admin: type: boolean default: false last_login: type: timestamp matricule: type: integer unique: true site_id: { type: integer } indexes: is_active_idx: fields: [is_active] relations: Groups: class: sfGuardGroup local: user_id foreign: group_id refClass: sfGuardUserGroup foreignAlias: Users Permissions: class: sfGuardPermission local: user_id foreign: permission_id refClass: sfGuardUserPermission foreignAlias: Users Site: local: site_id foreign: id sfGuardUserPermission: options: symfony: form: false filter: false actAs: [Timestampable] columns: user_id: type: integer primary: true permission_id: type: integer primary: true relations: User: class: sfGuardUser local: user_id onDelete: CASCADE Permission: class: sfGuardPermission local: permission_id onDelete: CASCADE sfGuardUserGroup: options: symfony: form: false filter: false actAs: [Timestampable] columns: user_id: type: integer primary: true group_id: type: integer primary: true relations: User: class: sfGuardUser local: user_id onDelete: CASCADE Group: class: sfGuardGroup local: group_id onDelete: CASCADE sfGuardRememberKey: options: symfony: form: false filter: false actAs: [Timestampable] columns: user_id: integer remember_key: string(32) ip_address: string(50) relations: User: class: sfGuardUser local: user_id foreignAlias: RememberKeys foreignType: one onDelete: CASCADE sfGuardForgotPassword: options: symfony: form: false filter: false actAs: [Timestampable] columns: user_id: type: integer notnull: true unique_key: string(255) expires_at: type: timestamp notnull: true relations: User: class: sfGuardUser local: user_id type: one foreignType: one foreignAlias: ForgotPassword onDelete: CASCADE
le schéma de mon appli:
mes fixtures:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 article: columns: name: string(50) Site: connection: doctrine tableName: site columns: name: type: string(50) unique: true description: type: string(255)
j'ai juste créer un module frontend/article dans lequel j'ai mis un fichier config/security.yml:
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 sfGuardUser: User_admin: first_name: John last_name: Doe email_address: john.doe@gmail.com username: admin password: admin is_super_admin: true Site: S01 Groups: [Group_admin] User_test: first_name: test last_name: test email_address: test@gmail.com username: test password: test is_active: true Site: S01 Groups: [Group_Correspondant] Permissions: [Permission_Correspondant] User_test1: first_name: test1 last_name: test1 email_address: test1@gmail.com username: test1 password: test is_active: true Site: S01 Groups: [Group_Correspondant] Permissions: [Permission_Correspondant1] sfGuardGroup: Group_admin: name: admin description: Administrator group Permissions: [Permission_admin] Group_Correspondant: name: Correspondant description: Correspondant group Permissions: [Permission_admin] sfGuardPermission: Permission_admin: name: admin description: Administrator permission Permission_Correspondant: name: Perm_Correspondant description: Correspondant permission Permission_Correspondant1: name: Perm_Correspondant1 description: Correspondant permission
=> me demande aucune identification et m'affiche la page index
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 default: is_secure: false credentials: [Perm_Correspondant]
=> me demande une autorisation mais bloque car je n'ai pas les bons acces
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 default: is_secure: true credentials: [Correspondant] # qui est le nom du group
me demande une autorisation et valide l'accés si le user a cette permission.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 default: is_secure: true credentials: [Perm_Correspondant] # qui est le nom de la permission
Ma (mes questions) est:
- est ce qu'il existe un tuto sur ce sujet un peu plus fouillé que la doc symfony.
- a quoi serve les groups puisqu'il semblerait que seul les permissions soit utiles ?
ou bien le principe est d'affecter dans les fichiers security les permissions et de gerer les user par group, group qui cumule des permissions ?
j'ai l'impression d'avoir répondu a mon probléme la :/
Partager