Proč mi nefungují práva?

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

Zdravím nejde mi prostě zaboha ve verzi 2.2.6 práva uživatelů o co se snažím ?
Snažím se že v presentru potřebuji co může ovládat admin a co guest .

if($this->getUser()->isInRole('admin'))
{
	echo'admin';
}else{
	echo'guest';
}

(Když změním práva v adminéru na „guest“ furt vidím „admin“.)

David Matějka
Moderator | 6445
+
+2
-

Predpokladam, ze pouzivas authenticator z sandboxu (respektive ze pouzivas standartni identitu Nette\Security\Identity)?
Ta se totiz pri prihlaseni serializuje do session. Pokud tedy po prihlaseni provedes nejakou zmenu, neni to v teto identite reflektovano. Zkus se odhlasit a uvidis :)

Pokud chces mit v identite stale cerstva data, viz https://forum.nette.org/…dem-pristupu#…

lukyn94
Člen | 30
+
0
-

Takže to mohu řešit následovně ? Potřebuji ty zadaný práva z db hned vybrat a ne až když se odhlásím a pak přihlásím .

$user = $this->userModel->fetchOneBy(['id' => $this->getUser()->getId()]);

if($user->role =='admin')
{
	echo'admin';
}else{
	echo'guest';
}
David Matějka
Moderator | 6445
+
0
-

Ano, nebo me napada, ze muzes pri kazdem requestu aktualizovat session, do startupu nejakyho base presenteru dej

$user = $this->userModel->fetchOneBy(['id' => $this->getUser()->getId()]);
$this->user->identity->setRoles(array($user->role));
lukyn94
Člen | 30
+
0
-

Super děkuji .