Přihlášení uživatele nepobírá orm
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Cerx
- Člen | 1
Ahoj! Snažím se použít Nextras\Orm pro přihlášování uživatele…
řádek který háže error funguje v HomepagePresenteru jak má, ale když se
snažím orm použít v samostatné classe (souboru) dostávám error
Trying to get property of non-object
viz https://waa.ai/kYqb.png což
nemám ponětí co znamená.
Musím nějak tu public variable předat do auth funkce?
<?php
use Nette\Security as NS;
use Nextras\Orm;
class Login extends Nette\Object implements NS\IAuthenticator
{
/** @var \App\Model\Orm\Orm @inject */
public $orm;
function authenticate(array $credentials)
{
list($username, $password) = $credentials;
$user = $this->orm->Users->getUser($username);
if (!$user) {
throw new NS\AuthenticationException('User not found.');
}
if (!NS\Passwords::verify($password, $user->pass)) {
throw new NS\AuthenticationException('Invalid password.');
}
return new NS\Identity($user->id, "user", ['username' => $user->name]);
}
}
Věděl by někdo co s tím?
Díky!
- Bazzar
- Člen | 1
Ahoj,
vypadá to, že se ti nepředala instance pomocí DI, tak zkus tohle.
/** @var App\Models\Orm\Orm */
private $orm;
public function __construct(\App\Models\Orm\Orm $orm)
{
$this->orm = $orm;
}
....
// Takhle bych to udělal já
$user = $this->orm->users->getBy(['username' => $username]);
//
Pokud budeš pracovat s repositářem, tak více najdeš na https://codedoc.pub/…ository.html.
B.
Editoval Bazzar (10. 6. 2016 6:58)