bugfix/username-validation-fixes #72
@ -89,6 +89,9 @@ var MapGuesser = {
|
|||||||
|
|
||||||
formError.style.display = 'block';
|
formError.style.display = 'block';
|
||||||
formError.innerHTML = this.response.error.errorText;
|
formError.innerHTML = this.response.error.errorText;
|
||||||
|
if (typeof grecaptcha !== 'undefined') {
|
||||||
|
grecaptcha.reset();
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -364,11 +364,24 @@ class LoginController
|
|||||||
$newUser->setPlainPassword(\Container::$request->post('password'));
|
$newUser->setPlainPassword(\Container::$request->post('password'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strlen(\Container::$request->post('username')) > 0 && preg_match('/^[a-zA-Z0-9_\-\.]+$/', \Container::$request->post('username')) !== 1) {
|
if (strlen(\Container::$request->post('username')) > 0) {
|
||||||
|
$username = \Container::$request->post('username');
|
||||||
|
|
||||||
|
if (preg_match('/^[a-zA-Z0-9_\-\.]+$/', $username) !== 1) {
|
||||||
return new JsonContent(['error' => ['errorText' => 'Username can contain only english letters, digits, - (hyphen), . (dot), _ (underscore).']]);
|
return new JsonContent(['error' => ['errorText' => 'Username can contain only english letters, digits, - (hyphen), . (dot), _ (underscore).']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$newUser->setUsername(strlen(\Container::$request->post('username')) > 0 ? \Container::$request->post('username') : (new UsernameGenerator())->generate());
|
if ($this->userRepository->getByUsername($username) !== null) {
|
||||||
|
return new JsonContent(['error' => ['errorText' => 'The given username is already taken.']]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$usernameGenerator = new UsernameGenerator();
|
||||||
|
do {
|
||||||
|
$username = $usernameGenerator->generate();
|
||||||
|
} while ($this->userRepository->getByUsername($username));
|
||||||
|
}
|
||||||
|
|
||||||
|
$newUser->setUsername($username);
|
||||||
$newUser->setCreatedDate(new DateTime());
|
$newUser->setCreatedDate(new DateTime());
|
||||||
|
|
||||||
\Container::$persistentDataManager->saveToDb($newUser);
|
\Container::$persistentDataManager->saveToDb($newUser);
|
||||||
|
@ -290,7 +290,11 @@ class UserController implements IAuthenticationRequired
|
|||||||
}
|
}
|
||||||
|
|
||||||
$newUsername = \Container::$request->post('username');
|
$newUsername = \Container::$request->post('username');
|
||||||
if (strlen($newUsername) > 0 && $newUsername !== $user->getUsername()) {
|
if ($newUsername !== $user->getUsername()) {
|
||||||
|
if (strlen($newUsername) == 0) {
|
||||||
|
return new JsonContent(['error' => ['errorText' => 'Username cannot be empty.']]);
|
||||||
|
}
|
||||||
|
|
||||||
if (preg_match('/^[a-zA-Z0-9_\-\.]+$/', $newUsername) !== 1) {
|
if (preg_match('/^[a-zA-Z0-9_\-\.]+$/', $newUsername) !== 1) {
|
||||||
return new JsonContent(['error' => ['errorText' => 'Username can contain only english letters, digits, - (hyphen), . (dot), _ (underscore).']]);
|
return new JsonContent(['error' => ['errorText' => 'Username can contain only english letters, digits, - (hyphen), . (dot), _ (underscore).']]);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user