Authorizátor s dynamickým nastavením
- Miky0007
- Člen | 73
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…
- Šaman
- Člen | 2666
Čá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)