/** * @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; }
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; }
public function setUser(UserEntityInterface $user) : SessionEntityInterface { $this->setUserId($user->getId()); $this->user = $user; return $this; }