Jak dostat do AuthorizatorFactory aktuálně přihlášeného uživatele
- thm
- Člen | 147
Čauves,
jsem v lese. Potřeboval bych dostat do AuthorizatorFactory aktuálně
přihlášeného uživatele, tak abych tam mohl načíst z DB práva pro
aktuálně přihlášeného uživatele a nemusel načítat práva všech
uživatelů.
Podobně bych toto využil i v případě, že bych nenačítal z databáze všechny role, jenom ty, které má jenom ten konkrétní uživatel.
Ve factory mám toto:
public function create(){
$permission = new Permission;
//Basic roles
$permission->addRole(self::ROLE_GUEST);
$permission->addRole(self::ROLE_USER, self::ROLE_GUEST);
$permission->addRole(self::ROLE_ADMINISTRATOR, self::ROLE_USER);
//Other roles
foreach($this->userManager->getRoles() as $role) $permission->addRole($role);
//Basic resources
$permission->addResource(self::RES_ADMIN_TOOLS);
//Other resources
foreach($this->authorityManager->getResources() as $resource) $permission->addResource($resource);
//Basic privileges
$permission->allow(self::ROLE_ADMINISTRATOR, self::RES_ADMIN_TOOLS, Permission::ALL);
//Other privileges
//Zde potřebuju zavolat permissionManagera, který mi řekne všechny privileges ke konkrétnímu uživateli
return $permission;
}
v configu v services
authorizatorFactory: App\AuthorizatorFactory
authorizator: @authorizatorFactory::create
Jde to nějak?
Editoval thm (10. 2. 2015 13:14)
- Zax
- Člen | 370
A co třeba si injektnout IUserStorage a načítat ty informace z něj?
EDIT: samozřejmě identita může existovat i když není user přihlášen, nicméně IUserStorage má metodu isAuthenticated(), takže není vůbec problém si to ověřit a už vůbec není třeba různě ohýbat služby v configu :-D
Editoval Zax (11. 2. 2015 17:23)
- David Matějka
- Moderator | 6445
Mohlo by jit:
1. vypnout injectovani Authorizatoru do usera:
services:
user:
arguments: [authorizator: null]
2. Nette\Security\User
injectnout do AuthorizatorFactory pres
konstruktor jako normalni zavislost
3. po vytvoreni permission to nasetovat userovi
$this->user->setAuthorizator($permission);
- kalatalabnik
- Člen | 35
Identitu můžeš při odhlášení vymastit, pak ti tam nic nezůstane, viz. https://doc.nette.org/…thentication#…
Citace: Při odhlášení se identita nesmaže a je nadále k dispozici. Takže ačkoliv má uživatel identitu, nemusí být přihlášený. Pokud bychom chtěli identitu explicitně smazat, odhlásíme uživatele voláním $user->logout(TRUE).
Editoval kalatalabnik (11. 2. 2015 9:46)