autentizace a autorizace → role

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

Ahoj, klasicky provedu autorizaci:

<?php
class UsersModel extends Object implements IAuthenticator
{

	/**
	 * Performs an authentication
	 * @param  array
	 * @return IIdentity
	 * @throws AuthenticationException
	 */
	public function authenticate(array $credentials)
	{
		$username = $credentials[self::USERNAME];
                $password = sha1($credentials[self::PASSWORD]);

		$row = dibi::fetch('SELECT * FROM [net_users] WHERE %and', array(
                    array('login_user = %s', $username),
                    array('password_user = %s', $password),
                ));

		if (!$row) {
                    throw new AuthenticationException("Uživatel '$username' nebyl nalezen.", self::IDENTITY_NOT_FOUND);
		}

		if ($row->password_user !== $password) {
			throw new AuthenticationException("Chybné heslo.", self::INVALID_CREDENTIAL);
		}

		unset($row->password);
                return new Identity($row->real_firstname.' '.$row->real_lastname, $row->group, $row);
	}

}

?>

ale pokud si vypisu:

<?php
$user = Environment::getUser();
dump($user->getRoles()); exit();
?>

dostanu:

<?php
array(1) {
   0 => string(5) "guest"
}
?>

neměl bych dostat hodnu nastavenou při inicializaci Identity?
někde jsem četl – že „quest“ je výchozí, pokud se nezdaří přihlášení, či co.

jak to mu mám rozumět a jak dojít k nápravě? Díky :-)

Editoval Gaudentius (19. 4. 2010 21:02)

Ondřej Mirtes
Člen | 1536
+
0
-

Co máš uvnitř $row->group? Co ti vypíše Environment::getUser()->isAuthenticated()? :)

RDPanek
Člen | 189
+
0
-
<?php
Environment::getUser()->isAuthenticated()
//bool(TRUE)
?>

a

<?php
Environment::getUser()->getRoles()
//admin
?>

taky cajk :-|

Ondřej Mirtes
Člen | 1536
+
0
-

Takže už je vše v pořádku?