TIP: Jak snadno založit uživatele v sandboxu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
medhi
Generous Backer | 255
+
0
-

Ahoj, napadlo mě toto řešení, když jsem na základě sandboxu dělal novou aplikaci. Jde o aplikaci pro backend, kde se mi nechtělo dělat formulář pro zakládání uživatelů, protože jich bude jenom pár. A přes Adminer se těžko zakládá uživatel, když nevíte, jak zahashovat heslo. Navíc to heslo by mělo být soukromé a neměl by ho správce znát.

Do Authenticatoru jsem přidal pouze toto, mělo by být jasné, na které místo:

		if ($row->password == '')
		{
			// set new password and salt

			$salt = Strings::random(22);

			$this->database->table('users')->where(array("id" => $row->id))->update(array(
				"password" => $this->calculateHash($password, $salt),
				"salt" => $salt,
			));

		}
		elseif ($row->password !== $this->calculateHash($password, $row->password)) {
			throw new Security\AuthenticationException('The password is incorrect.', self::INVALID_CREDENTIAL);
		}

Přes Adminer vložíte do databáze pouze nového uživatele bez hesla a saltu. Heslo si tak zvolí nový uživatel při prvním přihlášení.

Filip Procházka
Moderator | 4668
+
0
-

Vytvořil jsem si něco podobného :)

https://github.com/…ibs/User.php#L78

Když se přihlásíš a uživatel neexistuje, tak se automaticky vytvoří. Pak stačí v databázi přepnout isActive = 1 a je hotovo :)

medhi
Generous Backer | 255
+
0
-

Filip Procházka napsal(a):

Vytvořil jsem si něco podobného :)

https://github.com/…ibs/User.php#L78

Když se přihlásíš a uživatel neexistuje, tak se automaticky vytvoří. Pak stačí v databázi přepnout isActive = 1 a je hotovo :)

To jsem měl kdysi na Srazech, ale má to jeden háček. Přijde někdo a nepamatuje si, jaký má login (nebo email), tak nějaký zkusí. A místo, aby mu to řeklo, že tento to není, tak mu to založí už 2. účet. Lidé jsou pak zmatení a vznikají duplicitní účty.

Filip Procházka
Moderator | 4668
+
0
-

Dobrý postřeh. Do administrační části mi to ale stačí :)