Oprávnění uživatelů s více rolemi
- Miky0007
- Člen | 73
Poradí prosím někdo jak udělat autentifikátor a autentizaci uživatelů.
Chtěl bych aby jednotlivý registrovaní uživatele mohli patřit více
rolím.
Definoval jsem si tabulku uživatele s nickem, heslem…
dále pak tabulku s rolemi:programátor, projektant, admin
a pak tabulku která nám řekne v kolika je uživatel rolích. V této
tabulce je vždy teda cizí klíč z tabulky uživatele a z tabulky role
Poradí prosím někdo jak udělat autentizaci a autorizaci? Aby když má jednotlivý uživatel více rolí měl i oprávnění všech rolí ke kterým patří?
Jsem v nette začátečník..Kdysi jsem v něm dělal, ale moc věcí se od té doby změnilo.
- David Matějka
- Moderator | 6445
https://api.nette.org/…dentity.html
authenticator vraci instanci Identity, jako druhej parametr posles seznam roli..
jako autorizator pouzij \Nette\Security\Permission
Nette\Security\User (tj to pristupny v presenteru pres
$this->user
) ma metodu
isAllowed($resource, $privilege)
, ktera projde vsechny role predany
Identity a pres Permission zjisti, jestli nektera z roli ma opravneni
k te akci..
- David Matějka
- Moderator | 6445
https://doc.nette.org/cs/database
pro strukturu databaze:
user
- id
- username
- password
user_role
- user_id
- role_id
role
- id
- name
kod v authenticatoru zhruba:
//ziskani uzivatele a overeni hesla atd.
//v $user se predpoklada activerow s uzivatelem.
$roles = array();
foreach($user->user_role as $user_role){
$roles[] = $user_role->role->name;
}
$data = $user->toArray();
unset($data['password']);
return new \Nette\Security\Identity($user->id, $roles, $data);
Editoval matej21 (4. 11. 2012 16:26)