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
+
0
-

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
+
0
-

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.)

resigo
Člen | 20
+
0
-

Nevolám. Mohl bych se zeptat, jak ji zavolat aby odkazovala na můj login a ne na authenticate? Omlouvám se, moc tomu nerozumím. Děkuji.

jiri.pudil
Nette Blogger | 1029
+
0
-

Viz závorka (potažmo kód) – když jí předáš rovnou identitu, autentikátor se nezavolá.

resigo
Člen | 20
+
0
-

Moc děkuji za radu, už všechno běží.

$identity = $this->context->userModel->login($email, $access_token);
$user->login($identity);