les credentials, simple... enfin pas vraiment...
Code:
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). |
sauf qu' en utilisant comme exemple le mot admin au niveau du group et des permissions dans les exemples du type:
Code:
1 2 3 4
|
all:
is_secure: true
credentials: admin |
ou
Code:
1 2 3
|
index:
credentials: [A, B] |
on se sait pas si il cause des groups ou des permissions.
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:
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:
Code:
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) |
mes fixtures:
Code:
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 |
j'ai juste créer un module frontend/article dans lequel j'ai mis un fichier config/security.yml:
Code:
1 2 3 4
|
default:
is_secure: false
credentials: [Perm_Correspondant] |
=> me demande aucune identification et m'affiche la page index
Code:
1 2 3 4
|
default:
is_secure: true
credentials: [Correspondant] # qui est le nom du group |
=> me demande une autorisation mais bloque car je n'ai pas les bons acces
Code:
1 2 3 4
|
default:
is_secure: true
credentials: [Perm_Correspondant] # qui est le nom de la permission |
me demande une autorisation et valide l'accés si le user a cette 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 :/