Nefunkční new Indentity, $user isLoggedIn()
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- resigo
- Člen | 20
Dobrý den,
mám problém s vytvořením nové identity. Hledal jsem si odpověď, ale nic
jsem nemohl najít. V configu mám aby sessions byly na 14 dní, tam by neměl
být problém, ale je možné, že to tím je.. jak to zjistím? Posílám vám
ukázku kódu, díky za radu a váš čas. :)
Presenter
public function handleRegister($email, $access_token)
{
$row = $this->context->userModel->userByEmail($email);
if($row)
{
$this->context->userModel->login($email, $access_token);
$this->flashMessage('Jste přihlášeni...','success');
}
}
Model
/**
* Login
* @return Nette\Security\Identity
* @throws Nette\Security\AuthenticationException
*/
public function login($email, $access_token)
{
$row = $this->database->table(self::TABLE_NAME)->where(self::COLUMN_EMAIL, $email)->fetch();
if (!$row) {
throw new Nette\Security\AuthenticationException('The email is incorrect.', self::IDENTITY_NOT_FOUND);
}
$arr = $row->toArray();
return new Nette\Security\Identity($row[self::COLUMN_ID], "user", $arr);
}
V šabloně zkouším jestli je $user přihlášen
{if $user->isLoggedIn()}
<div id="status">Přihlášen</div>
{/if}
- jiri.pudil
- Nette Blogger | 1029
Voláš někde Nette\Security\User::login?
Bez toho to nepůjde. (Pro zjednodušení: navzdory signatuře té metodě
můžeš předat přímo IIdentity
.)
- jiri.pudil
- Nette Blogger | 1029
Viz závorka (potažmo kód) – když jí předáš rovnou identitu, autentikátor se nezavolá.