Změna hesla uživatelů jako správce
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- .:M@rt!n:.
- Člen | 201
Rád bych měl možnost jako přihlášený admin v administraci měnit hesla ostatních uživatelů (v případě že původní zapomenou), ale nějak se mě nedaří přijít na řešení.
Vytvoření formuláře:
protected function createComponentUzivatelForm() {
$form = new Form();
$ucet = array(
'admin'=>'admin',
'user'=>'user'
);
$form->addText('username', 'Jméno:');
$form->addPassword('password', 'Heslo:')
->addRule(Form::MIN_LENGTH, 'Heslo musí mít alespoň %d znaků.', 5);
$form->addPassword('confirmPassword', 'Potvrzení hesla:')
->addRule(Form::FILLED, 'Heslo je nutné zadat ještě jednou pro potvrzení.')
->addRule(Form::EQUAL, 'Zadná hesla se musejí shodovat.', $form['password']);
$form->addSelect('ucet', 'Typ účtu: ', $ucet)
->setPrompt('-------------- Vyberte --------------')
->addRule(Form::FILLED, 'Je nutné vybrat typ účtu.');
$presenter = $this;
$form->addSubmit('create', 'Přidat')->setAttribute('class', 'default');
$form->addSubmit('cancel', 'Zrušit')->setValidationScope(FALSE)
->onClick[] = function () use ($presenter) {
$presenter->redirect('default');
};
$form->onSuccess[] = callback($this, 'uzivatelFormSubmitted');
$form->addProtection('Vypršel časový limit, odešlete formulář znovu.'); //Obrana před Cross-Site Request Forgery (CSRF)
return $form;
}
a obsluha:
public function uzivatelFormSubmitted(Form $form) {
$id = (int) $this->getParameter('id');
if ($id > 0) {
$this->uzivatel->find($id)->insert(array(
'username' => $form->values->username,
'password' => md5($form->values->password),
'ucet' => $form->values->ucet
));
$this->flashMessage('Uživatel upraven.', 'success');
} else {
$this->context->createUzivatel()->insert(array(
'username' => $form->values->username,
'password' => md5($form->values->password),
'ucet' => $form->values->ucet
));
$this->flashMessage('Uživatel přidán.', 'success');
}
$this->redirect('this');
}
Bohužel takto změna hesla neproběhne… Prosím tedy o radu, jak mohu do
této obsluhy zakomponovat změnu hesla pro daného uživatele??
Zkoušel jsem to i podle quickstartu, kde si každý uživatel změní své
heslo, ale neúspěšně…
- .:M@rt!n:.
- Člen | 201
Jo díky, této chyby jsem si vůbec nevšiml, tam má být samozřejmě update a už to jde. Víc očí víc vidí ;)