ACL nezrovalosti v dedičnosti
- orech
- Člen | 40
Zdravím,
1. Rád by som nastavil Resource
s tak, aby jeden dedil od
druhého. Konkrétne mám App:Admin
(ide o rozcestník
v administrácii) a User:Admin
(správa užívateľov). Nastavil
som to nasledovne:
Role mám nasledúce:
A adminovi som pridal oprávnenie pre správu užívateľov (ku ktorej sa musí dostať cez rozcestník):
Do rozcestníku sa ale nedostanem:
Nejako nerozumiem, prečo ak User:Admin
dedí od
App:Admin
, tzn. (ak to preženiem) mal by mať všetky
„vlastnosti“ App:Admin
a potom ešte niečo „svoje“ extra,
nie sú obe volania isAllowed TRUE
.
Skúšal som to aj otočiť, no dostal som error, že Resource
už existuje.
2. Je tu ešte jedna vec, ktorú neviem pochopiť, možno len napísať. Rád by som, aby admin nemohol mazať užívateľov (môže s nimi robiť, čo chce, okrem mazania):
Zamietnutie jedného privilégia kompletne zakáže celý resource.
Vopred veľmi pekne ďakujem za rady a vysvetlenie.
- David Matějka
- Moderator | 6445
Nejako nerozumiem, prečo ak User:Admin dedí od App:Admin, tzn. (ak to preženiem) mal by mať všetky “vlastnosti” App:Admin a potom ešte niečo “svoje” extra
Tak to preci je, User:Admin
dedi od App:Admin
a
allow nastavujes na User:Admin
, tedy na childu, nikoliv na parentu.
Pokud bys allow nastavil pro App:Admin
, tak by isAllowed vracelo
TRUE
pro oba resources.
a k 2, chovani je spravne, jelikoz nespecifikujes privilege, tak se
predpoklada defaultni hodnota ALL
, tedy se ptas, jestli muze delat
vse s tim resource
- Michal Vyšinský
- Člen | 608
Ty ale povoluješ roli admin resource ‚User:Admin‘ čili potomka, takže to neznamená, že rodič pro něj bude také povolený. Takže logicky musíš povolit pro roli ‚admin‘ předka a ne potomka:
- pak ti obě volání ‚isAllowed‘ vrátí TRUE.
Co se toho druhého týče, tak výchozí hodnota ‚pprivilege‘ pro ‚isAllowed‘ je ' self::ALL' to znamená, že vrátí TRUE jen tehdy, když máš povolené vše. Jinak vrátí FALSE. Budeš tedy muset specifikovat privilege.
@DavidMatějka byl rychlejší :)
Editoval Michal Vyšinský (30. 6. 2015 15:56)