Authorizátor s dynamickým nastavením

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Miky0007
Člen | 73
+
0
-

Ahoj poradí prosím někdo jak by šel upravit authorizátor…Aby dokázal načítat oprávnění z databáze? Ted jsem to měl vymyšleno staticky asi takhle:

<?php
class Authorizator extends Nette\Object
    implements Nette\Security\IAuthorizator
{
    private $database;

	public function __construct(Nette\Database\Connection $database)
	{
		$this->database = $database;
	}


    function isAllowed($role, $resource, $privilege)
    {
      if ($role === 'admin') {
			return TRUE;
		}

      if ($role === 'projektant') {
	if (is_array($resource)) {
		list($type, $userId, $row) = $resource;
			if ($type === '') {


			}
	}
        }
         if ($role === 'host') {
	if (is_array($resource)) {
		list($type, $userId, $row) = $resource;
			if ($type === '') {


			}
	}
        }

		return FALSE;
    }

}
?>

Ale chtěl bych vytvořit administrační rozhraní s checkboxi…kde by šlo oprávnění jednotlivých rolí měnit…

Miky0007
Člen | 73
+
0
-

Nějak jsem tam odpověď na můj dotaz nenašel..Ale díky

Šaman
Člen | 2666
+
0
-

Částečně našel, jenom jsi ji neviděl. Na složitější přidělování práv se používá Access Control List (ACL). Nepotřebuješ pak tolik vnořených ifů. A o tom se píše v tom odkazu výše.
Na to, co chceš dělat ty kdysi existoval doplněk: https://componette.org/search/?…. Ale asi není upravený na nové Nette, můžeš se u něho inspirovat.
Je to složitější, než co hledáš, ale skutečně dynamické přidělování nevychází jen z role, ale i z ID konkrétního uživatele a konkrétního zdroje (např. máš práva editovat jen svoje příspěvky, komentovat jen příspěvky z nějaké skupiny apod.)

Editoval Šaman (26. 12. 2012 22:18)

Miky0007
Člen | 73
+
0
-

No mrknu na to a uvidím, jestli se v tom nějak vyznám..díky