Ako nastaviť prihlasovanie používateľov?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Takeshi
- Člen | 596
Ahojte,
snažil som sa postupovať podľa návodu … spravil som pár vecí, ale stále to všetko nemôžem dať dokopy
- vytvoril som triedu MyAuthenticator.php (podľa návodu)
- do súboru config.neon som vložil nasledújúci riadok
<?php
services:
...
authenticator: MyAuthenticator
?>
3. V databáze som si vytvoril tabuľku users(id,username,password)
… ale aj tak stale nechapem ako to cele prepojit s mojou
databázou->tabuľkou users
Ďakujem za radu
- Matey
- Člen | 142
Ahoj, v sandboxe je pripravené prihlasovanie Sandbox – UserManager
a to čo hľadáš je práve v authenticate()
<?php
public function authenticate(array $credentials)
{
list($username, $password) = $credentials;
$row = $this->database->table(self::TABLE_NAME)->where(self::COLUMN_NAME, $username)->fetch();
if (!$row) {
throw new Nette\Security\AuthenticationException('The username is incorrect.', self::IDENTITY_NOT_FOUND);
} elseif (!Passwords::verify($password, $row[self::COLUMN_PASSWORD_HASH])) {
throw new Nette\Security\AuthenticationException('The password is incorrect.', self::INVALID_CREDENTIAL);
} elseif (Passwords::needsRehash($row[self::COLUMN_PASSWORD_HASH])) {
$row->update([
self::COLUMN_PASSWORD_HASH => Passwords::hash($password),
]);
}
$arr = $row->toArray();
unset($arr[self::COLUMN_PASSWORD_HASH]);
return new Nette\Security\Identity($row[self::COLUMN_ID], $row[self::COLUMN_ROLE], $arr);
}
?>