Bonjour,
je travaille avec sfdoctrineguardplugin sous doctrine.le besoin est : comment récupérer le nom et le groupe de la personne connecté depuis la table sf_gurad_user pour le nom est sf_guard_group pour le group???
merci d'avance !!!
Bonjour,
je travaille avec sfdoctrineguardplugin sous doctrine.le besoin est : comment récupérer le nom et le groupe de la personne connecté depuis la table sf_gurad_user pour le nom est sf_guard_group pour le group???
merci d'avance !!!
Dans les actions tu peux faire :
pour récupérer l'utilisateur et à partir de là utiliser toutes les méthodes de l'objet sfGuardUser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $this->getUser();
Dans les templates, c'est :
qui te permet de manipuler les variables de la session.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $sf_user
oui merci
mais si par exemple :
j'ai une requette dans l'un de mes module et je veux récupérer le nom et la permission du personne connecté pour les étuliser dans la requette .
Si tu utilise le plugin sfForkedDoctrineApply, il fournit plusieurs méthodes pour avoir le nom, les permissions etc.
Sinon, je connais pas le nom des méthodes.
En fait, les autorisations sont gérée par sfGuard et pas sfFADP.
Tu as plusieurs solutions qui dépendent de la manière dont tu souhaites implémenter la chose. Si tu comptes mettre des droits par module, tu peux le faire directement au niveau d'un fichier security.yml dans le dossier config de chaque module.
Tu peux aussi envisager de mettre un nom d'un groupe dans un enregistrement et vérifier, une fois les données récupérée que la personne est bien membre de ce groupe par un $user->hasCredential($leNomDuGroupe) où $user est une instance de l'objet myUser.
Tu as de très nombreuses possibilités (et aussi quelques impossibilités), à toi de préciser quel est exactement ta demande. Tu peux facilement récupérer l'id d'un user. Tu peux aussi récupérer les groupes dont il est membre par un $user->getCredentials(). A toi de voir comment utiliser ces informations au mieux de tes besoins.
re,
voila exactement mon besoin,c'est la récupération de username au sein de ma fonction MissionTable.class.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT sf_guard_group.description,sf_guard_permission.name FROM sf_guard_user, sf_guard_user_group, sf_guard_group,missionaire WHERE sf_guard_user.id = sf_guard_user_group.user_id AND sf_guard_user_group.group_id = sf_guard_group.id AND sf_guard_user.username = recupérer login personne connectémerci d'avance et pour mon chéma je trouve pas d'alaice est se que je doit les ajouter manuelement au fihcier ou contunier commsa ???merci
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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332 SfGuardGroup: connection: doctrine tableName: sf_guard_group columns: id: type: integer(8) fixed: false unsigned: false primary: true autoincrement: true name: type: string(255) fixed: false unsigned: false primary: false notnull: false autoincrement: false description: type: string() fixed: false unsigned: false primary: false notnull: false autoincrement: false created_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false updated_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false relations: SfGuardGroupPermission: local: id foreign: group_id type: many SfGuardUserGroup: local: id foreign: group_id type: many SfGuardGroupPermission: connection: doctrine tableName: sf_guard_group_permission columns: group_id: type: integer(8) fixed: false unsigned: false primary: true autoincrement: false permission_id: type: integer(8) fixed: false unsigned: false primary: true autoincrement: false created_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false updated_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false relations: SfGuardGroup: local: group_id foreign: id type: one SfGuardPermission: local: permission_id foreign: id type: one SfGuardPermission: connection: doctrine tableName: sf_guard_permission columns: id: type: integer(8) fixed: false unsigned: false primary: true autoincrement: true name: type: string(255) fixed: false unsigned: false primary: false notnull: false autoincrement: false description: type: string() fixed: false unsigned: false primary: false notnull: false autoincrement: false created_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false updated_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false relations: SfGuardGroupPermission: local: id foreign: permission_id type: many SfGuardUserPermission: local: id foreign: permission_id type: many SfGuardUser: connection: doctrine tableName: sf_guard_user columns: id: type: integer(8) fixed: false unsigned: false primary: true autoincrement: true first_name: type: string(255) fixed: false unsigned: false primary: false notnull: false autoincrement: false last_name: type: string(255) fixed: false unsigned: false primary: false notnull: false autoincrement: false email_address: type: string(255) fixed: false unsigned: false primary: false notnull: true autoincrement: false username: type: string(128) fixed: false unsigned: false primary: false notnull: true autoincrement: false algorithm: type: string(128) fixed: false unsigned: false primary: false default: sha1 notnull: true autoincrement: false salt: type: string(128) fixed: false unsigned: false primary: false notnull: false autoincrement: false password: type: string(128) fixed: false unsigned: false primary: false notnull: false autoincrement: false is_active: type: integer(1) fixed: false unsigned: false primary: false default: '1' notnull: false autoincrement: false is_super_admin: type: integer(1) fixed: false unsigned: false primary: false default: '0' notnull: false autoincrement: false last_login: type: timestamp(25) fixed: false unsigned: false primary: false notnull: false autoincrement: false created_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false updated_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false matricule: type: string() fixed: false unsigned: false primary: false notnull: true autoincrement: false relations: SfGuardForgotPassword: local: id foreign: user_id type: many SfGuardRememberKey: local: id foreign: user_id type: many SfGuardUserGroup: local: id foreign: user_id type: many SfGuardUserPermission: local: id foreign: user_id type: many SfGuardUserGroup: connection: doctrine tableName: sf_guard_user_group columns: user_id: type: integer(8) fixed: false unsigned: false primary: true autoincrement: false group_id: type: integer(8) fixed: false unsigned: false primary: true autoincrement: false created_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false updated_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false relations: SfGuardGroup: local: group_id foreign: id type: one SfGuardUser: local: user_id foreign: id type: one SfGuardUserPermission: connection: doctrine tableName: sf_guard_user_permission columns: user_id: type: integer(8) fixed: false unsigned: false primary: true autoincrement: false permission_id: type: integer(8) fixed: false unsigned: false primary: true autoincrement: false created_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false updated_at: type: timestamp(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false relations: SfGuardPermission: local: permission_id foreign: id type: one SfGuardUser: local: user_id foreign: id type: one![]()
Si ta requête retourne quelque chose, cela tiens du miracle.
Tu fais appel à une table sf_guard_permission qui n'est pas dans la close FROM et tu embarques une table "missionnaire" qui n'est ni dans le SELECT ni liée aux autres tables dans les closes de ton WHERE et encore moins dans ton shema.yml
As-tu testé ta requête ainsi rédigée dans un outil de query, style phpMyAdmin ?
c'est seulement au moment de copier coller j'ai pas fait le tous voila le besoin exacte sans passer par les jointure:
j'obtient les erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 class MissionTable extends Doctrine_Table { function user() { $sf_user->getGuardUser()->getUserName(); }la variable $sf_user est accécible que depuis mon Layout ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Notice: Undefined variable: sf_user in C:\wamp\www\Gestion_missions\lib\model\doctrine\MissionTable.class.php on line 155 Fatal error: Call to a member function getGuardUser() on a non-object in C:\wamp\www\Gestion_missions\lib\model\doctrine\MissionTable.class.php on line 155
+ Est t'il possible de récupérer le groupe de la personne connecté avec une simple syntaxe.
Merci !!!!
As-tu modifier le MyUser dans le lib de l'application (appl/<nomApplication>/lib) pour qu'il hérite de celui de sfGuard ?
Bonjour;et merci .
non j'ai pas fait sa mais dans le chemain :
j'ai 4 dossier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part C:\wamp\www\Gestion_missions\lib
filter
form
model
symfony
c/f le readme de sfGuard, il FAUT modifier l'objet MyUser pour qu'il prenne en compte les particularités de sfGuard.
Ensuite, depuis l'objet user (soit par sf_user, soit par ->getUser() ) ont peut tester si l’utilisateur courant est membre d'un groupe ou récupérer la liste des droits de l'utilisateur.
voila le Myuser que j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part C:\wamp\www\Gestion_missions\apps\frontend\libqu'est se que je doit faire la parce que je voi déja k'il hérite de sfGuard???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?php class myUser extends sfGuardSecurityUser { }
Dans une table, pour récupérer l'objet user il faut utiliser :
La variable sf_user n'est définie que dans le template.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $user = sfContext::getInstance()->getUser(); $nameUser= $user->getGuardUser()->getName();
Bonjour michel Rotta voila j'ai peu récupérer le username de la personne connecté depuis ma class grace a :
et concérnent le group j'ai effectuer une requette fetchoine puisque mes etulisateur chaqu'un apartien q'ua a un seul group :
Code : Sélectionner tout - Visualiser dans une fenêtre à part sfContext::getInstance()->getUser()->getUserName()
et dans les class de SfDoctrineGuardPlugin j'ai redéfinie les relation seulement pour supprimé les alaice pas dans les class de base mais dans les class qui hérite .class.php.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function profils_group() { $q = Doctrine_Query::create() ->select('SP.description') ->from('sfGuardGroup SP') ->leftJoin('SP.sfGuardUserGroup SG') ->leftJoin('SG.sfGuardUser SPP') ->AndWhere('SPP.username=?',sfContext::getInstance()->getUser()->getUserName()); $value=$q->fetchOne() ; $this->group_connect=$value->getDescription();
A priori la requête me semble viable.
Par contre, je ne vois pas trop l'intérêt de récupérer le groupe. En effet, un utilisateur peut appartenir à plusieurs groupes. Donc un des groupes à peut d'intérêt.
De plus, le groupe n'est qu'un des deux moyens de donner des droits aux utilisateurs. Au final, ce qui compte c'est de savoir si un utilisateur à tel ou tel autre droits. Le fait qu'il l’obtienne par appartenance à un groupe (ou plusieurs) ou directement importe peu, ce qui compte c'est qu'il ait ou non le droits.
A partir de là, la méthode idéal pour récupérer les droits est, sur un objet user, ->getCredentials() qui va retourner un tableau de tous les droits. Encore mieux, cette méthode fait partie du sfBaseSecurityUser qu’étend le sfGuardUser. Si, un jour, pour une raison quelconque tu décide de changer ton outil de sécurité, si le nouveau étant sfBaseSecurityUser, comme sfGuard, tu n'auras pas, alors, à retoucher le code qui récupère les droits.
Accessoirement, savoir si un utilisateur à un droit particulier peut, à partir de l'objet user, ce faire par ->hasCredential().
Partager