make it possible to change email and username
This commit is contained in:
2 files changed
+34
-4
No files matched your search
@@ -8,6 +8,7 @@ use SokoWeb\Interfaces\Response\IRedirect;
|
||||
use SokoWeb\OAuth\GoogleOAuth;
|
||||
use MapGuesser\PersistentData\Model\User;
|
||||
use MapGuesser\Repository\GuessRepository;
|
||||
use MapGuesser\Repository\UserRepository;
|
||||
use MapGuesser\Repository\UserConfirmationRepository;
|
||||
use MapGuesser\Repository\UserInChallengeRepository;
|
||||
use MapGuesser\Repository\UserPasswordResetterRepository;
|
||||
@@ -19,6 +20,8 @@ use SokoWeb\Util\JwtParser;
|
||||
|
||||
class UserController implements IAuthenticationRequired
|
||||
{
|
||||
private UserRepository $userRepository;
|
||||
|
||||
private UserConfirmationRepository $userConfirmationRepository;
|
||||
|
||||
private UserPasswordResetterRepository $userPasswordResetterRepository;
|
||||
@@ -31,6 +34,7 @@ class UserController implements IAuthenticationRequired
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->userRepository = new UserRepository();
|
||||
$this->userConfirmationRepository = new UserConfirmationRepository();
|
||||
$this->userPasswordResetterRepository = new UserPasswordResetterRepository();
|
||||
$this->userPlayedPlaceRepository = new UserPlayedPlaceRepository();
|
||||
@@ -148,6 +152,32 @@ class UserController implements IAuthenticationRequired
|
||||
return new JsonContent(['error' => ['errorText' => $error]]);
|
||||
}
|
||||
|
||||
$newEmail = \Container::$request->post('email');
|
||||
if ($newEmail !== $user->getEmail()) {
|
||||
if (!filter_var($newEmail, FILTER_VALIDATE_EMAIL)) {
|
||||
return new JsonContent(['error' => ['errorText' => 'The given email address is not valid.']]);
|
||||
}
|
||||
|
||||
if ($this->userRepository->getByEmail($newEmail) !== null) {
|
||||
return new JsonContent(['error' => ['errorText' => 'The given email address belongs to another account.']]);
|
||||
}
|
||||
|
||||
$user->setEmail($newEmail);
|
||||
}
|
||||
|
||||
$newUsername = \Container::$request->post('username');
|
||||
if (strlen($newUsername) > 0 && $newUsername !== $user->getUsername()) {
|
||||
if (preg_match('/^[a-zA-Z0-9_\-\.]+$/', $newUsername) !== 1) {
|
||||
return new JsonContent(['error' => ['errorText' => 'Username can contain only english letters, digits, - (hyphen), . (dot), _ (underscore).']]);
|
||||
}
|
||||
|
||||
if ($this->userRepository->getByUsername($newUsername) !== null) {
|
||||
return new JsonContent(['error' => ['errorText' => 'The given username is already taken.']]);
|
||||
}
|
||||
|
||||
$user->setUsername($newUsername);
|
||||
}
|
||||
|
||||
if (strlen(\Container::$request->post('password_new')) > 0) {
|
||||
if (strlen(\Container::$request->post('password_new')) < 6) {
|
||||
return new JsonContent([
|
||||
|
||||
Reference in new issue
Block a user