NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Mezinárodní den IT společnosti je tady! Pouze nyní můžeš získat 90 % extra kreditů při nákupu od 1199 kreditů s promo kódem AJTACI90. Tak neváhej!

Diskuze: Nette - Přihlašování pomocí UserManager.php

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
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
+1
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.