Dibi + Defaultní Authenticator chyba

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

Ahoj všichni,
potřeboval bych poradit, kde dělám chybu. S Dibi jsem nedávno začal, ale vůbec nevím, jak rozchodit authenticator včetně Dibi.

Zde je můj Authenticator:

<?php

use Nette\Security,
	Nette\Utils\Strings;

/**
 * Users authenticator.
 */
class Authenticator extends Nette\Object implements Security\IAuthenticator
{
	/** @var Nette\Database\Connection */
	private $database;



	public function __construct(\DibiConnection $database)
	{
		$this->database = $database;
	}



	/**
	 * Performs an authentication.
	 * @return Nette\Security\Identity
	 * @throws Nette\Security\AuthenticationException
	 */
	public function authenticate(array $credentials)
	{
		list($username, $password) = $credentials;
		$row = $this->database->select("*")->from('users')->where('username', $username)->fetchSingle();

		if (!$row) {
			throw new Security\AuthenticationException('The username is incorrect.', self::IDENTITY_NOT_FOUND);
		}

		if ($row->password !== $this->calculateHash($password, $row->password)) {
			throw new Security\AuthenticationException('The password is incorrect.', self::INVALID_CREDENTIAL);
		}

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



	/**
	 * Computes salted password hash.
	 * @param  string
	 * @return string
	 */
	public static function calculateHash($password, $salt = NULL)
	{
		if ($password === Strings::upper($password)) { // perhaps caps lock is on
			$password = Strings::lower($password);
		}
		return sha1($password);
	}

}

Tady je chyba z laděnky.

Díky moc všem za pomoc.

vvoody
Člen | 910
+
0
-
$row = $this->database->select("*")->from('users')->where('username = %s', $username)->fetchSingle();
stibto
Člen | 6
+
0
-

vvoody napsal(a):

$row = $this->database->select("*")->from('users')->where('username = %s', $username)->fetchSingle();

Děkuji mockrát, už to funguje. :-)
Nenapadlo mě, že to jde i takhle. Zkoušel sem to různě nahrávat do pole, atd. ale tohle je skvělý řešení. Díky!

stibto
Člen | 6
+
0
-

Tak ještě jedna malá chybička.
http://images.g6.cz/…2_125451.png

Nevěděli byste, co s tím prosím?

Filip Procházka
Moderator | 4668
+
0
-

Přečti si prosím tento článek, je psaný přesně pro tebe ;)