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
+
0
-

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
+
+2
-
	$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.

Webster.K
Člen | 212
+
+1
-

Děkuji za radu :) už jsem to vyřešil :) chybělo mi v databázi na tabulce users mít username jako unikátní :)