User::getRoles() blbne, pokud authenticate vrátí Identitu bez rolí

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

Při použití IAuthenticatoru, který nevrací žádné role(např SimpleAuthenticator) User::getRoles vrací:

  • v případě, že jsem odhlášen User::$guestrole, což je v pořádku:
  • v případě, že jsem přihlášen, tak NULL místo User::$authenticatedrole

    Chybně se zkoumá $user->identity namísto $user->identity->roles. Po přihlášení je $identity vždy neNULLová a tak nikdy nedojde na druhou část ternárního operátoru.

zmíněný Kód):

public function getRoles()
	{
		if (!$this->isLoggedIn()) {
			return array($this->guestRole);
		}

		$identity = $this->getIdentity();
		return $identity	     ? $identity->getRoles() : array($this->authenticatedRole);
		//úprava:
		return $identity->getRoles() ? $identity->getRoles() : array($this->authenticatedRole);
	}

Editoval bojovyletoun (6. 3. 2011 11:29)

bojovyletoun
Člen | 667
+
0
-

Zpřehlednil jsem příspěvek.