Zobrazení username v šabloně
- CZechBoY
- Člen | 3608
Při autentizaci vytváříš identitu.
Třeba v sandboxu ty data pro identitu jsou v $arr
https://github.com/…rManager.php#L62
- kiCkZ
- Člen | 153
CZechBoY napsal(a):
Při autentizaci vytváříš identitu.
Třeba v sandboxu ty data pro identitu jsou v$arr
https://github.com/…rManager.php#L62
Super, ale jak je tedy mam pak vypsat to potřebuji.
Někdy mi přijde, že místo jasné odpovědi tu mam jen komentáře okolo co
jak se dělá.
Moje funkce na autentizaci
public function authenticate(array $credentials): Nette\Security\IIdentity {
list($username,$password) = $credentials;
$row = $this->database->table(self::TABLE_NAME)->where(self::COLUMN_NAME,$username)->fetch();
if(!$row) {
throw new Nette\Security\AuthenticationException('Uživatel nenalezen');
} elseif(!password_verify($password, $row['password'])) {
throw new Nette\Security\AuthenticationException('Špatné heslo.');
}
$array = $row->toArray();
return new Nette\Security\Identity($row[self::COLUMN_ID],$array);
}
Editoval kiCkZ (17. 8. 2017 10:22)
- kiCkZ
- Člen | 153
CZechBoY napsal(a):
No vypiš to jako bys to vypisoval z toho
$array
.$user->getIdentity()->...
Navíc koukám, že ty předáváš to
$arr
do rolí a ne do dat identity.Samozřejmě bez konkrétního kusu kodu a struktury databáze nelze konkrétně poradit.
Nakonec jsem tedy přidal do tohoto řádku username:
return new Nette\Security\Identity($row[self::COLUMN_ID],$row[self::COLUMN_NAME],$array);
A v šabloně jsem to upravil na
$user->getIdentity()->username
Výsledný kód:
public function authenticate(array $credentials): Nette\Security\IIdentity {
list($username,$password) = $credentials;
$row = $this->database->table(self::TABLE_NAME)->where(self::COLUMN_NAME,$username)->fetch();
if(!$row) {
throw new Nette\Security\AuthenticationException('Uživatel nenalezen');
} elseif(!password_verify($password, $row['password'])) {
throw new Nette\Security\AuthenticationException('Špatné heslo.');
}
$array = $row->toArray();
return new Nette\Security\Identity($row[self::COLUMN_ID],$row[self::COLUMN_NAME],$array);
}
Je to takto v pořádku ?