Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jan Demel
Tvůrce
Avatar
Jan Demel:19.7.2014 12:28

Ahoj lidi. Dneska jsem se zase po delší době podíval na Nette že se naučím něco nového. Trochu jsem ale narazil. Díval jsem se na tutoriály na Nette.org, ale pořád to nemám dobře. Snažím se o přihlášení uživatele za pomocí databáze, ale když vyplním správně username i password tak mi to vyhodí tuto chybu (viz. níže). Třídu UserManager jsem si trochu poupravil tak to bude možná tím. Přikládám i snímek jak vypadá moje tabulka users v databázi a zdrojový kód funkce authenticate třídy UserManager. Budu velice vděčný, kdyby jste mi poradili jak na to. Předem moc děkuju :)

public function authenticate(array $credentials)
        {
                list($username, $password) = $credentials;

                $row = $this->database->table('users')->where('username', $username)->fetch();

                if (!$row) {
                        throw new Nette\Security\AuthenticationException('The username is incorrect.');

                } elseif (Passwords::verify($password, $row->password)) {
                        throw new Nette\Security\AuthenticationException('The password is incorrect.');

                }

                return new Nette\Security\Identity($row->id, $row->role);
        }

Databáze: http://oi58.tinypic.com/23w8bdg.jpg

Odpovědět
19.7.2014 12:28
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):19.7.2014 13:18

Ahoj,

napadá mě, zkus promazat cache Nette\Database.

Btw, za slovem viz není tečka - nejedná se o zkratku, ale o rozkazovací způsob slova vidět :-)

Nahoru Odpovědět
19.7.2014 13:18
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Demel:19.7.2014 14:05

Nepomohlo :/ Jo a děkuju za poučení :D

Nahoru Odpovědět
19.7.2014 14:05
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):19.7.2014 14:22

Hmm, tak to ti asi neporadím. :-(
Spíš se zkus zeptat přímo na fóru Nette, tam je mnohem větší šance než tady, že ti někdo poradí.

Nahoru Odpovědět
19.7.2014 14:22
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Demel
Tvůrce
Avatar
Jan Demel:19.7.2014 20:21

Kdyby tady ještě někdo řešil podobnou věc tak tu pošlu jak jsem to vyřešil. Celou tu metodu jsem přepsal takto.

public function authenticate(array $credentials)
        {
                list($username, $password) = $credentials;

                $row = $this->database->table('users')->where('username', $username)->fetch();

                if (!$row) {
                        throw new Nette\Security\AuthenticationException('The username is incorrect.');

                } else if ($password != $row->password) {
                        throw new Nette\Security\AuthenticationException('The password is incorrect.');
                }

                $arr = $row->toArray();
                //unset($row['password']);

                return new Nette\Security\Identity($row['id'], $row['role'], $arr, $row['username']);
        }

EDIT: do Identity vracím taky Username, který ale základní konstruktor Identity neobsahuje. Musíte si ho když tak připsat.

Editováno 19.7.2014 20:22
Nahoru Odpovědět
19.7.2014 20:21
To co se zdá být nemožné, je vždy možné.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.