entries = new ArrayCollection(); $this->userGroups = new ArrayCollection(); $this->roles = ['ROLE_USER']; } /** * @ORM\PrePersist * @ORM\PreUpdate */ public function timestamps() { if (is_null($this->createdAt)) { $this->createdAt = new \DateTime(); } $this->updatedAt = new \DateTime(); } /** * Set name. * * @param string $name * * @return User */ public function setName($name) { $this->name = $name; return $this; } /** * Get name. * * @return string */ public function getName() { return $this->name; } /** * @return \DateTime */ public function getCreatedAt() { return $this->createdAt; } /** * @return \DateTime */ public function getUpdatedAt() { return $this->updatedAt; } /** * @param Entry $entry * * @return User */ public function addEntry(Entry $entry) { $this->entries[] = $entry; return $this; } /** * @return ArrayCollection */ public function getEntries() { return $this->entries; } public function isEqualTo(UserInterface $user) { return $this->username === $user->getUsername(); } /** * Set config. * * @param Config $config * * @return User */ public function setConfig(Config $config = null) { $this->config = $config; return $this; } /** * Get config. * * @return Config */ public function getConfig() { return $this->config; } /** * @return bool */ public function isTwoFactorAuthentication() { return $this->twoFactorAuthentication; } /** * @param bool $twoFactorAuthentication */ public function setTwoFactorAuthentication($twoFactorAuthentication) { $this->twoFactorAuthentication = $twoFactorAuthentication; } public function isEmailAuthEnabled() { return $this->twoFactorAuthentication; } public function getEmailAuthCode() { return $this->authCode; } public function setEmailAuthCode($authCode) { $this->authCode = $authCode; } public function addTrustedComputer($token, \DateTime $validUntil) { $this->trusted[$token] = $validUntil->format('r'); } public function isTrustedComputer($token) { if (isset($this->trusted[$token])) { $now = new \DateTime(); $validUntil = new \DateTime($this->trusted[$token]); return $now < $validUntil; } return false; } /** * @param Client $client * * @return User */ public function addClient(Client $client) { $this->clients[] = $client; return $this; } /** * @return ArrayCollection */ public function getClients() { return $this->clients; } /** * Only used by the API when creating a new user it'll also return the first client (which was also created at the same time). * * @return Client */ public function getFirstClient() { if (!empty($this->clients)) { return $this->clients->first(); } } /** * @param Group $group * * @return UserGroup */ public function getUserGroupFromGroup(Group $group) { foreach ($this->userGroups as $userGroup) { if ($userGroup->getGroup() == $group) { return $userGroup; } } return null; } /** * @param Group $group * @param $role */ public function setGroupRole(Group $group, $role) { if ($userGroup = $this->getUserGroupFromGroup($group)) { $userGroup->setRole($role); } } /** * @param Group $group * * @return int */ public function getGroupRoleForUser(Group $group) { if ($userGroup = $this->getUserGroupFromGroup($group)) { return $userGroup->getRole(); } return 0; } /** * @param Group $group * * @return bool */ public function inGroup(Group $group) { if ($group::ACCESS_REQUEST === $group->getAcceptSystem()) { $userGroup = $this->getUserGroupFromGroup($group); return $userGroup->isAccepted(); } return null !== $this->getUserGroupFromGroup($group); } /** * @return ArrayCollection */ public function getGroups() { $groups = new ArrayCollection(); foreach ($this->userGroups as $userGroup) { $groups->add($userGroup->getGroup()); } return $groups; } }