function it_doesnt_activate_user_with_wrong_token(UserRepository $repository, User $user, EnableUserCommand $command) { $command->confirmationToken()->shouldBeCalled()->willReturn('confirmation-token'); $user->enableAccount()->shouldNotBeCalled(); $repository->userOfConfirmationToken(new UserToken('confirmation-token'))->shouldBeCalled()->willReturn(null); $repository->persist($user)->shouldNotBeCalled(); $this->shouldThrow(UserTokenNotFoundException::class)->during__invoke($command); }
function it_logs_the_user_in(LogInUserCommand $command, UserRepository $repository, User $user) { $encoder = new DummyUserPasswordEncoder('encodedPassword'); $command->email()->shouldBeCalled()->willReturn('*****@*****.**'); $command->password()->shouldBeCalled()->willReturn('plainPassword'); $user->login('plainPassword', $encoder)->shouldBeCalled(); $repository->userOfEmail(new UserEmail('*****@*****.**'))->shouldBeCalled()->willReturn($user); $repository->persist($user)->shouldBeCalled(); $this->__invoke($command); }
/** * Builds the user with the given sql row attributes. * * @param array $row Array which contains attributes of user * * @return User */ private function buildUser($row) { $createdOn = new \DateTimeImmutable($row['created_on']); $updatedOn = new \DateTimeImmutable($row['updated_on']); $lastLogin = null === $row['last_login'] ? null : new \DateTimeImmutable($row['last_login']); $confirmationToken = null; if (null !== $row['confirmation_token_token']) { $confirmationToken = new UserToken($row['confirmation_token_token']); $this->set($confirmationToken, 'createdOn', new \DateTimeImmutable($row['confirmation_token_created_on'])); } $invitationToken = null; if (null !== $row['invitation_token_token']) { $invitationToken = new UserToken($row['invitation_token_token']); $this->set($invitationToken, 'createdOn', new \DateTimeImmutable($row['invitation_token_created_on'])); } $rememberPasswordToken = null; if (null !== $row['remember_password_token_token']) { $rememberPasswordToken = new UserToken($row['remember_password_token_token']); $this->set($rememberPasswordToken, 'createdOn', new \DateTimeImmutable($row['remember_password_token_created_on'])); } $user = User::signUp(new UserId($row['id']), new UserEmail($row['email']), UserPassword::fromEncoded($row['password'], $row['salt']), $this->rolesToArray($row['roles'])); $user = $this->set($user, 'createdOn', $createdOn); $user = $this->set($user, 'updatedOn', $updatedOn); $user = $this->set($user, 'lastLogin', $lastLogin); $user = $this->set($user, 'confirmationToken', $confirmationToken); $user = $this->set($user, 'invitationToken', $invitationToken); $user = $this->set($user, 'rememberPasswordToken', $rememberPasswordToken); return $user; }
/** * {@inheritdoc} */ public function read() { if (null === $this->user) { return []; } $roles = array_map(function (UserRole $role) { return $role->role(); }, $this->user->roles()); $encodedPassword = !$this->user->password() ? null : $this->user->password()->encodedPassword(); $salt = !$this->user->password() ? null : $this->user->password()->salt(); $confirmationToken = !$this->user->confirmationToken() ? null : $this->user->confirmationToken()->token(); $invitationToken = !$this->user->invitationToken() ? null : $this->user->invitationToken()->token(); $rememberPasswordToken = !$this->user->rememberPasswordToken() ? null : $this->user->rememberPasswordToken()->token(); return ['id' => $this->user->id()->id(), 'confirmation_token' => $confirmationToken, 'created_on' => $this->user->createdOn(), 'email' => $this->user->email()->email(), 'invitation_token' => $invitationToken, 'last_login' => $this->user->lastLogin(), 'encoded_password' => $encodedPassword, 'salt' => $salt, 'remember_password_token' => $rememberPasswordToken, 'roles' => $roles, 'updated_on' => $this->user->updatedOn()]; }
/** * {@inheritdoc} */ public function remove(User $aUser) { unset($this->users[$aUser->id()->id()]); if ($this->eventBus instanceof UserEventBus) { $this->handle($aUser->events()); } }