Dědění práv a neočekávané chování allow/deny
- CZechBoY
- Člen | 3608
Zdravím,
používám klasickou Permission třídu v Nette. Nastavuju oprávnění přes
php potomka ala
parent::addRole('ma_povoleno');
parent::addRole('nema_povoleno', 'ma_povoleno');
parent::addResource('Resrc');
parent::allow('nema_povoleno', self::ALL, self::ALL);
parent::allow('ma_povoleno', self::ALL, self::ALL);
parent::deny('nema_povoleno', 'Resrc', 'action1');
parent::allow('ma_povoleno', 'Resrc', 'action1');
Pokud má uživatel roli pouze nema_povoleno
, tak je vše ok.
Pokud má ale obě role (ma_povoleno
,
nema_povoleno
) tak
$user->isAllowed('Resrc', 'action1');
vrací TRUE.
Nevíte co by mohlo na to mít vliv?
Potřebuju, aby když bude mít uživatel roli nema_povoleno
tak se
vrátilo false.
Nápady, kritika?
edit: pořádí v autorizátoru ani rolí uživatele nehraje roli
Editoval CZechBoY (27. 11. 2015 22:07)
- enumag
- Člen | 2118
Pokud se nemýlím tak stačí aby libovolná role uživatele měla danou resource/permission povolenou. V tvém případě když má obě role tak se tam dostane protože role ma_povoleno má allow.
Pokud má jen roli nema_povoleno tak tahle role zdědí práva od ma_povoleno, ale tuto danou resource/permission jsi explicitně zakázal.
V obou případech se to tedy chová korektně.
Editoval enumag (27. 11. 2015 23:17)