Problém s ověřením hesla přes Nette\Security\Passwords

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Scorpio
Člen | 45
+
0
-

Zdravím narazil jsem na problém s ověřením hesla a nevím kde je chyba. Používam Nette 2.2.2 a již vytvořenou UserManager třídu.

// App/Model/UserManager.php //
    /**
     * Performs an authentication.
     * @return Nette\Security\Identity
     * @throws Nette\Security\AuthenticationException
     */
    public function authenticate(array $credentials) {
        list($username, $password) = $credentials;

        $row = $this->database->table(self::TABLE_NAME)->where(self::COLUMN_NAME, $username)->fetch();

        if (!$row) {
            throw new Nette\Security\AuthenticationException('The username is incorrect.', self::IDENTITY_NOT_FOUND);
        } elseif (!Passwords::verify($password, $row[self::COLUMN_PASSWORD_HASH])) {
            throw new Nette\Security\AuthenticationException('The password is incorrect.', self::INVALID_CREDENTIAL);
        } elseif (Passwords::needsRehash($row[self::COLUMN_PASSWORD_HASH])) {
            $row->update(array(
                self::COLUMN_PASSWORD_HASH => Passwords::hash($password),
            ));
        }

        $arr = $row->toArray();
        unset($arr[self::COLUMN_PASSWORD_HASH]);
        return new Nette\Security\Identity($row[self::COLUMN_ID], $row[self::COLUMN_ROLE], $arr);
    }

K vytvoření uživatele mám toto:

// App/Model/User.php //
namespace App\Model;

use Nette,
    Nette\Security\Passwords;

class User extends Nette\Object {

    /** @var Nette\Database\Context */
    private $database;

    public function __construct(Nette\Database\Context $database) {
        $this->database = $database;
    }

    public function add($data) {
        $this->database->table('user')->insert(array(
            "role" => 'user',
            "name" => $data['name'],
            "password" => Passwords::hash($data['password']),
            "email" => $data['email'],
            "hash" => uniqid(),
        ));
    }
}

Takřka nic sem neměnil jen se přihlašuju na email.
Když vytvořím uživatele a pak se chci přihlásit stále hlasí chybné heslo.
Netuším kde by mohla být chyba.

CZechBoY
Člen | 3608
+
+1
-

Chybné heslo nebo i jméno?

Scorpio
Člen | 45
+
0
-

Jméno kontroluje první podmínka a následuje heslo v tabulce je jeden uživatel. Pochybuju že jsem se 10× přepsal při tvorbě uživatele.

Editoval Scorpio (5. 8. 2014 12:26)

CZechBoY
Člen | 3608
+
0
-

Tak píše ti to chybný jméno nebo heslo?
Vkládáš do jména email nebo jméno a co chceš aby to validovalo?

iguana007
Člen | 970
+
+1
-

Jen takový tip, předáváš v třídě UserManager do konstanty COLUMN_PASSWORD_HASH správný sloupec tabulky tj.: „password“ a ne „hash“?

iguana007
Člen | 970
+
+7
-

Taky bych si zkontroloval, zda-li ti sloupec password dokaze pojmout cely hash – tj. zda-li se ti neusekne, kvuli nedostatecne delce column v databazi

Scorpio
Člen | 45
+
0
-

Byla to délka v MySQL tabulce děkuju moc nějak mě to nenapadlo měl jsem na heslo 50 znaků