Údaje přihlášeného uživatele

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

Ahoj,
na webu jsem si částečně rozchodil přihlašování uživatelů, ale teď když chci vypsat údaje přihlášeného uživatele tak mě to nic nevypíše.
zde je authenticator:

const
        TABLE_NAME = 'users',
        COLUMN_ID = 'id',
        COLUMN_USERNAME = 'username',
        COLUMN_NAME = 'name',
        COLUMN_SURNAME = 'surname',
        COLUMN_PASSWORD_HASH = 'password';

/** @var Nette\Database\Context */
private $database;

public function __construct(\Nette\Database\Context $database) {
    $this->database = $database;
}

/**
 * Performs an authentication.
 * @return Nette\Security\Identity
 * @throws Nette\Security\AuthenticationException
 */
public function authenticate(array $credentials) {
    list($username, $password) = $credentials;
    $password = self::removeCapsLock($password);

    $row = $this->database->table(self::TABLE_NAME)->where(self::COLUMN_USERNAME, $username)->fetch();

    if (!$row) {
        throw new Nette\Security\AuthenticationException('Špatné uživatelské jméno.', self::IDENTITY_NOT_FOUND);
    } elseif (!md5($password)) {
        throw new \Nette\Security\AuthenticationException('Špatné heslo.', self::INVALID_CREDENTIAL);
    }

    $arr = $row->toArray();
    unset($arr[self::COLUMN_PASSWORD_HASH]);
    var_dump($arr);exit;
    return new \Nette\Security\Identity($row[self::COLUMN_ID], $arr);
}

a v šabloně to vypisuji takhle:

<a href="/" class="ico user" n:if="$user->loggedIn">{$user->identity->name}</a>

Co mám prosím špatně? Mám aplikaci rozdělenou na moduly a občas mám i docela boderl v namespace. Je možné je vynechat uplně nebo lepší s nima?

Díky

Matey
Člen | 142
+
0
-

odstráň ten exit z

<?php
var_dump($arr); exit;
?>
.:M@rt!n:.
Člen | 201
+
0
-

To tomu je uplne ejdno.. uz ho tam nemam. zapomel jsem ho pred vlozenim sem smazat…

EDIT: Ještě přidám dump co vypíše v šabloně po přihlášení uživatele:

class Nette\Security\Identity#15 (3) { private $id => int(2) private $roles => array(4) { 'id' => int(2) 'name' => string(5) "admin" 'surname' => string(5) "admin" 'username' => string(5) "admin" } private $data => array(1) { 'name' => NULL } }

Editoval .:M@rt!n:. (25. 4. 2014 17:03)

Matey
Člen | 142
+
0
-

https://api.nette.org/…dentity.html

<?php
__construct( mixed $id, mixed $roles = NULL, array $data = NULL )
?>

toto je __construct pre Identity
takže by si mal vytvoriť Identity takto:

<?php
return new \Nette\Security\Identity($row[self::COLUMN_ID], null, $arr);
?>

ak tam nechceš role

Editoval Matey (25. 4. 2014 17:09)

.:M@rt!n:.
Člen | 201
+
0
-

aaaa, díky, to jsem nějak přehlédl, už to jede

Freestyler
Člen | 50
+
0
-

Můžeš sem prosím hodit celý fukční kód? Pokouším se rozběhat něco podobného a bez úspěchu :(

Matey
Člen | 142
+
0
-

je to priamo v sandboxe
https://github.com/…rManager.php