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

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

CZechBoY
Člen | 3608
+
+3
-

Jen doplnim, ze @inject je vypnuty v obyc tridach; je zapnuty tedy jen v presenterech.