TIP: Jak snadno založit uživatele v sandboxu
- medhi
- Generous Backer | 255
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
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
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.