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

před 6 lety

medhi
Bronze Partner | 189
+
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í.

před 6 lety

Filip Procházka
Moderator | 4693
+
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 :)

před 6 lety

medhi
Bronze Partner | 189
+
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.

před 6 lety

Filip Procházka
Moderator | 4693
+
0
-

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