Nesprávně zadané heslo při použití UserManager z Model (sandbox)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Payne
- Člen | 14
Dobrý den,
jsem začátečník, a potřebuji vytvořit aplikaci s autentifikací.
Pro autentifikaci používám třídy ze sandboxu (model/Passwords a
model/UserManager) prakticky bez úprav, ale nemohu přijít na způsob, jak se
přihlásit. Pokaždé získám hlášku „Incorrect password“.
Napadá mě, že by na to mohl mít vliv salt, který (pokud není zadán) je
náhodně generovaný. Mohl by mi někdo poradit?
Přikládám Presenter pro registraci (v případě nutnosti dodám další ale
jak říkám, používám defaultní třídy ze sandboxu)
<?php
namespace App\Presenters;
use Nette,
App\Model,
App\Model\Passwords;
class RegisterPresenter extends BasePresenter {
/** @var Nette\Database\Context */
private $database;
public function __construct(Nette\Database\Context $database) {
$this->database = $database;
}
public function createComponentRegisterForm() {
$form = new Nette\Application\UI\Form;
$form->addText('name', 'Jméno:')
->setRequired();
$form->addText('password', 'Heslo:')
->setRequired();
$form->addText('email', 'Email:')
->setRequired();
$form->addSubmit('send', 'Registrovat');
$form->onSuccess[] = $this->registerFormSucceeded;
return $form;
}
public function registerFormSucceeded($form) {
$values = $form->getValues();
$options['salt'] = Passwords::salt();
$this->database->table('users')->insert(array(
'username' => $values->name,
'password' => Passwords::hash($values->password, $options),
'salt' => $options['salt'],
));
$this->flashMessage('Úspěšně registrován', 'success');
$this->redirect('this');
}
}