Chyba pri špatném zadaní jména nebo hesla ve formuláři

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

Ahoj prosím o radu.
Mám prihlašovací formulář do admina. Problém je vtom že když zadám špatne jméno nebo heslo tak se mi zobrazí chybové hlášení
Nette\Security\AuthenticationException #1
Zvolene uzivatelske jmeno neexistuje. search►

To je špatně. Měla by tam být klasika masagge.Která oznámí že zadane heslo nebo jméno nejsou správne, ale to tam není z nějakeho důvodu který nevím se to vše zachytí v exception v UserManageru a vyhodí exception. Nevíte mi poradit kde jsem udělal chybu? Děkuji za radu jsem jenom na začátku tak se omlouvam za tento ty dotazu ale tento problém jsem tady bohužel nenašel.

Ješte jednou děkuji za pomoc a radu.

<?php

namespace App\Model;

use Nette;
use Nette\Security\Passwords;


/**
 * Users management.
 */
class UserManager extends Nette\Object implements Nette\Security\IAuthenticator
{
	const
		TABLE_NAME = 'uzivatel',
		COLUMN_ID = 'id',
		COLUMN_NAME = 'uzivatelskeJmeno',
		COLUMN_PASSWORD_HASH = 'heslo',
		COLUMN_ROLE = 'role';


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


	public function __construct(Nette\Database\Context $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->table(self::TABLE_NAME)->where(self::COLUMN_NAME, $username)->fetch();

                if (!$row) {
			throw new Nette\Security\AuthenticationException('Zvolene uzivatelske jmeno neexistuje.', self::IDENTITY_NOT_FOUND);

		} elseif (!Passwords::verify($password, $row[self::COLUMN_PASSWORD_HASH])) {
			throw new Nette\Security\AuthenticationException('Zvolene heslo je chybne. Zadajte spravne heslo.', 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], NULL , $arr);
	}


	/**
	 * Adds new user.
	 * @param  string
	 * @param  string
	 * @return void
	 */
	public function add($username, $password)
	{
		try {
			$this->database->table(self::TABLE_NAME)->insert(array(
				self::COLUMN_NAME => $username,
				self::COLUMN_PASSWORD_HASH => Passwords::hash($password),
			));
		} catch (Nette\Database\UniqueConstraintViolationException $e) {
			throw new DuplicateNameException;
		}
	}

}



class DuplicateNameException extends \Exception
{}

 SignPresenter vypadá takto :
<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

namespace App\AdminModule\Presenter;

use Nette\Application\UI\Form;

/**
 * Description of SignPresenter
 *
 * @author parti
 */
class SignPresenter extends BasePresenter {

    /**
     *
     * @var \App\Model\UserManager
     */
    private $um;

    public function __construct(\App\Model\UserManager $um) {
        parent::__construct();


        $this->um = $um;
    }

    public function actionDefault() {
        if ($this->user->isLoggedIn()) {
            $this->redirect("Hompage:default");
            exit;
        }
        $this->redirect("in");
        exit;
    }

    public function actionIn() {
        //echo \Nette\Security\Passwords::hash('kubik');
    }

    public function createComponentForm() {
        $form = new Form;
        $form->addText('username', 'Username:')
                ->setRequired('Prosím zadejte svoje uživatelské jméno.');

        $form->addPassword('password', 'Password:')
                ->setRequired('Prosím zadejte vaše uživatelské heslo.');

        $form->addCheckbox('remember', 'Keep me signed in');

        $form->addSubmit('send', 'Sign in');

        $form->onSuccess[] = array($this, 'formSucceeded');
        return $form;
    }

    public function formSucceeded(Form $form, $values) {
        //$this->um->add($values->username, $values->password);

        if ($values->remember) {
            $this->user->setExpiration('14 days', FALSE);
        } else {
            $this->user->setExpiration('20 minutes', TRUE);
        }

        try {
            $this->user->login($values->username, $values->password);
            $this->redirect('Homepage:default');
        } catch (Nette\Security\AuthenticationException $e) {

            $this->flashMessage($e->getMessage(), 'danger');
            //$form->addError('The username or password you entered is incorrect.');
        }
    }

    public function actionOut() {
        $this->user->logout();
        $this->flashMessage('Odhášní uspešné', 'succes');
        $this->redirect('in');
        exit;
    }

}
<div class="container">
    <form n:name=form>
        <div class="row">
            <div class="col-lg-4">
                <p class="form-group">
                    <label class="control-label" n:name=username>
                        Prihlasovaci jmeno
                    </label>
                    <input class="form-control" n:name=username />
                </p>
                <p class="form-group">
                    <label class="control-label" n:name=password>
                        Heslo
                    </label>
                    <input class="form-control" n:name=password />
                </p>
                <p>
                    <input class="btn btn-success" n:name="send" value="Prihlaseni">
                </p>
                <p class="checkbox">
                    <label n:name='remember'>
                        <input n:name="remember"> Zapamatovat
                    </label>
                </p>
            </div>
        </div>
    </form>
</div>
ZahorskyJan
Člen | 59
+
+3
-

Zkusím si tipnout, že je to tím chybějícím use Nette; v presenteru nebo jenom přidat do toho catch ještě lomítko na začátek třídy.

parti
Člen | 117
+
0
-

MOC KRÁT Děkuji vše funguje. HURÁ :O)