/** * @param User $user * @return $this */ public function create(User $user) { $expiresAt = (new DateTime())->add(new DateInterval("P7D")); $token = (new Token())->setUser($user)->setToken(Generator::generateToken())->setExpiresAt($expiresAt); $this->getManager()->persist($token); $this->getManager()->flush(); $this->deleteExpiresTokens($user); return $token; }
/** * @param $username * @param $password * @param $roleName * @return User|null * @throws RoleNotFoundException * @throws UserExistsException */ public function create($username, $password, $roleName) { $role = $this->roleRepo->findOneByName($roleName); if (!$role instanceof Role) { throw new RoleNotFoundException($roleName); } $user = $this->userRepo->findOneByUsername($username); if ($user instanceof User) { throw new UserExistsException($username); } $salt = Generator::generateSalt(); $encryptedPassword = Generator::hash($salt, $this->secret, $password); $user = (new User())->setUsername($username)->setPassword($encryptedPassword)->setRole($role)->setSalt($salt)->setDeleted(false)->setActive(true); $this->getManager()->persist($user); $this->tokenService->create($user); $this->getManager()->flush(); return $user; }