Registrace duplicitního uživatele
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Webster.K
- Člen | 212
Zdravím všechny, narazil jsem na další problém u formulářů, resp. při registraci uživatele… Mám standardní registrační formulář (uživatelské jmeno, heslo a tlačítko na odeslání) a pak zpracování formuláře, které obsahuje jeden jediný řádek a to:
$this->newUser->add($values['username'],$values['password'],'guest');
V usermanageru mam vytvořenou funkci na přidání uživatele:
public function add($username, $password, $role)
{
try {
$this->database->table(self::TABLE_NAME)->insert(array(
self::COLUMN_NAME => $username,
self::COLUMN_PASSWORD_HASH => Passwords::hash($password),
self::COLUMN_ROLE => $role,
));
} catch (Nette\Database\UniqueConstraintViolationException $e) {
throw new DuplicateNameException;
}
}
Nicméně když odešlu formulář se dvěma stejnýmy Jmény i hesly, stejně to nového uživatele vytvoří. Dokázal by mi někdo poradit, co mám na tom špatně?
- Pavel Kravčík
- Člen | 1196
$form->addText('username')
->addRule(function($control){
return $this->database->user->getByName($control->value) ? TRUE : FALSE;
}, 'Zadané jméno je již obsazené');
Píšu z hlavy. Tohle používáme někde my. Jednoduché, funkční a uživatel může zvolit jiné sám.