forked from GNUsocial/gnu-social
[ENTITY][LocalUser] Add method 'findByNicknameOrEmail'
This commit is contained in:
parent
e6d20bd30d
commit
6d22932092
@ -25,6 +25,7 @@ use App\Core\DB\DB;
|
|||||||
use App\Core\Entity;
|
use App\Core\Entity;
|
||||||
use App\Core\UserRoles;
|
use App\Core\UserRoles;
|
||||||
use App\Util\Common;
|
use App\Util\Common;
|
||||||
|
use App\Util\Exception\DuplicateFoundException;
|
||||||
use DateTimeInterface;
|
use DateTimeInterface;
|
||||||
use Exception;
|
use Exception;
|
||||||
use libphonenumber\PhoneNumber;
|
use libphonenumber\PhoneNumber;
|
||||||
@ -302,6 +303,24 @@ class LocalUser extends Entity implements UserInterface
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the nickname or email already in use locally?
|
||||||
|
*
|
||||||
|
* @return self Returns self if nickname or email found
|
||||||
|
*/
|
||||||
|
public static function findByNicknameOrEmail(string $nickname, string $email): ?self
|
||||||
|
{
|
||||||
|
$users = DB::findBy('local_user', ['or' => ['nickname' => $nickname, 'outgoing_email' => $email, 'incoming_email' => $email]]);
|
||||||
|
switch (count($users)) {
|
||||||
|
case 0:
|
||||||
|
return null;
|
||||||
|
case 1:
|
||||||
|
return $users[0];
|
||||||
|
default:
|
||||||
|
throw new DuplicateFoundException('Multiple values in table local_user match the requested criteria');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function checkPassword(string $new_password): bool
|
public function checkPassword(string $new_password): bool
|
||||||
{
|
{
|
||||||
// Timing safe password verification
|
// Timing safe password verification
|
||||||
|
Loading…
Reference in New Issue
Block a user