Update isUniqueName() method for users
For https://github.com/forkbb/forkbb/issues/1
This commit is contained in:
parent
341a400f3b
commit
9af4f15504
1 changed files with 11 additions and 5 deletions
|
@ -23,16 +23,22 @@ class IsUniqueName extends Action
|
|||
$vars = [
|
||||
':id' => (int) $user->id,
|
||||
':name' => $user->username,
|
||||
':norm' => $this->manager->normUsername($user->username),
|
||||
':normL' => $this->manager->normUsername(\mb_strtolower($user->username, 'UTF-8')), // ????
|
||||
':normU' => $this->manager->normUsername(\mb_strtoupper($user->username, 'UTF-8')), // ????
|
||||
];
|
||||
$query = 'SELECT u.username
|
||||
$query = 'SELECT 1
|
||||
FROM ::users AS u
|
||||
WHERE LOWER(u.username)=LOWER(?s:name) AND u.id!=?i:id';
|
||||
WHERE u.id!=?i:id
|
||||
AND (
|
||||
LOWER(u.username)=LOWER(?s:name)
|
||||
OR u.username_normal=?s:norm
|
||||
OR LOWER(u.username_normal)=?s:normL
|
||||
OR UPPER(u.username_normal)=?s:normU
|
||||
)';
|
||||
|
||||
$result = $this->c->DB->query($query, $vars)->fetchAll();
|
||||
|
||||
return ! \count($result);
|
||||
|
||||
// ???? нужен нормализованный username для определения уникальности
|
||||
// это https://www.unicode.org/Public/security/latest/confusables.txt преобразование не очень :(
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue