Údaje přihlášeného uživatele
- .:M@rt!n:.
- Člen | 201
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
- .:M@rt!n:.
- Člen | 201
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
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)
- Freestyler
- Člen | 50
Můžeš sem prosím hodit celý fukční kód? Pokouším se rozběhat něco podobného a bez úspěchu :(