Nastaveni ACL deny + allow

balicekt
Člen | 47
+
0
-

Dobry den,

resim nastaveni ACL v configu mam toto:

  • allow([guest], Admin:Settings, Nette\Security\Permission::ALL)

vysledek
$acl->isAllowed(‘Admin:Settings’) ⇒ TRUE
$acl->isAllowed(‘Admin:Settings’, ‘yyy’) ⇒ TRUE

Pokud to zmenima na:

  • allow([guest], Admin:Settings, Nette\Security\Permission::ALL)
  • deny ([guest], Admin:Settings, [xxx])

vysledek:
$acl->isAllowed(‘Admin:Settings’) ⇒ FALSE
$acl->isAllowed(‘Admin:Settings’, ‘xxx’) ⇒ FALSE

Proc kdyz dam deny pouze pro xxx mam najednou vsechno v resource Admin:Settings na false?

Dekuji za rady.

David Matějka
Moderator | 6276
+
0
-

Ahoj, nahlédnutí na signaturu té metody ti to vysvětlí:

public function isAllowed($resource = IAuthorizator::ALL, $privilege = IAuthorizator::ALL): bool
balicekt
Člen | 47
+
0
-

Ahoj, dekuji za odpoved. Bohuzel tomu stale moc nerozumim. Kdyz mam deny pouze privilege xxx, tak proc jsou deny vsechny privilege? Popripade jak tohle resit kdyz mam 20 ruznych privilege a chci zakazat danemu uzivateli pouze 1 z nich?

David Matějka
Moderator | 6276
+
0
-

vsechny nejsou deny, ale vsechny nejsou povoleny. ty se ptas „je povolen pristup pro resource "Admin:Settings“ a vsechny jeho opravneni?" a jelikoz neni povolen pro vsechny, tak to vrati false

balicekt
Člen | 47
+
0
-

Dekuji za vysvetleni. Uz je to jasne jak to funguje.