示例#1
0
 /**
  * @param UserEntityInterface $user
  * @return array
  */
 public function __invoke(UserEntityInterface $user) : array
 {
     $errors = [];
     if (empty($user->getEmail())) {
         $errors[1302] = 'Email is empty';
     } elseif (strlen($user->getEmail()) > 255) {
         $errors[1303] = 'Email is too long';
     } else {
         /** @var UserRepositoryInterface $userRepository */
         $userRepository = $this->container->get(UserRepositoryInterface::class);
         $userExists = $userRepository->findByEmail($user->getEmail());
         if ($userExists && (!$user->getId() || $user->getId() !== $userExists->getId())) {
             $errors[1300] = 'Email is already in use';
         }
     }
     if (empty($user->getPassword())) {
         $errors[1301] = 'Password is empty';
     }
     return $errors;
 }
示例#2
0
 public function confirmEmail(UserEntityInterface $user, string $emailConfirmationToken) : UserEntityInterface
 {
     if ($user->isEmailConfirmed()) {
         throw new EmailAlreadyConfirmedException();
     } elseif ($user->hasEmailConfirmationTokenExpired()) {
         throw new EmailConfirmationTokenExpiredException();
     } elseif ($user->hasTooManyEmailConfirmationTokenAttempts()) {
         throw new TooManyEmailConfirmationTokenAttemptsException();
     }
     /** @var UserRepositoryInterface $userRepository */
     $userRepository = $this->container->get(UserRepositoryInterface::class);
     if ($user->getEmailConfirmationToken() !== $emailConfirmationToken) {
         $user->setEmailConfirmationTokenAttempts($user->getEmailConfirmationTokenAttempts() + 1);
         $userRepository->save($user);
         throw new InvalidEmailConfirmationTokenException();
     }
     $user->setIsEmailConfirmed(true);
     $user->setEmailConfirmationToken(null);
     $user->setEmailConfirmationTokenAttempts(0);
     $user->setEmailConfirmationTokenExpirationDatetime(null);
     $userRepository->save($user);
     return $user;
 }
示例#3
0
 public function setUser(UserEntityInterface $user) : SessionEntityInterface
 {
     $this->setUserId($user->getId());
     $this->user = $user;
     return $this;
 }