Authenticatio­nException

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

Jen detail – šlo by do této třídy přidat ještě:

<?php
class AuthenticationException extends Exception
{

	/**#@+ @deprecated */
	const IDENTITY_NOT_FOUND = 1;
	const INVALID_CREDENTIAL = 2;
	const FAILURE = 3;
	const NO_ROLES = 4;
	/**#@-*/

}
?>

Pro případ, kdy jsou implementované role, ale k uživateli nebyla nalezena žádná role.
Díky

David Grudl
Nette Core | 8129
+
0
-

Nedochází mi, jak to souvisí s autentifikací. Nemáš příklad?

Jakub Šulák
Člen | 222
+
0
-
<?php
    public function authenticate(array $credentials)
    {
        // jméno, heslo i role mohou být získány třeba z databáze
        $id = $this->getUserID($credentials['username'], $credentials['password']);
        $roles = $this->getRolesByID($id);
        return new Identity($id, $roles); // zde je důležité právě předání rolí
    }
?>

Je fakt, že nejde o autentikaci, ale spíš o autorizaci…

Každopádně pokud bych měl $roles jako prázdnou množinu, měl by skript vyhodit vyjímku, protože každý uživatel systému by měl mít alespoň jednu roli (samozřejmě v případě, kdy mám role implementované), ne?

David Grudl
Nette Core | 8129
+
0
-

Jakub Šulák napsal(a):

Je fakt, že nejde o autentikaci, ale spíš o autorizaci…

Každopádně pokud bych měl $roles jako prázdnou množinu, měl by skript vyhodit vyjímku, protože každý uživatel systému by měl mít alespoň jednu roli (samozřejmě v případě, kdy mám role implementované), ne?

Vhodnější se mi pak jeví tu konstantu definovat přímo v třídě autorizátoru.