createdAt = new \DateTimeImmutable(); $this->servers = new ArrayCollection(); $this->actionLogs = new ArrayCollection(); $this->serverAccesses = new ArrayCollection(); } /** * @brief Retourne l'identifiant de l'utilisateur * @return int|null L'id, null si pas encore persisté en base */ public function getId(): ?int { return $this->id; } /** @return string|null Email de l'utilisateur */ public function getEmail(): ?string { return $this->email; } /** @param string $email @return static */ public function setEmail(string $email): static { $this->email = $email; return $this; } /** @return string|null Pseudo de l'utilisateur */ public function getPseudo(): ?string { return $this->pseudo; } /** @param string $pseudo @return static */ public function setPseudo(string $pseudo): static { $this->pseudo = $pseudo; return $this; } /** * @brief Retourne l'identifiant de connexion (email) pour Symfony Security * @return string L'email comme identifiant unique */ public function getUserIdentifier(): string { return (string) $this->email; } /** * @brief Retourne les roles de l'utilisateur * * ROLE_USER est toujours inclus automatiquement pour garantir * que tout les utilisateurs aient au moin un role de base. * * @return array Tableau de roles uniques */ public function getRoles(): array { $roles = $this->roles; $roles[] = 'ROLE_USER'; return array_unique($roles); } /** * @param array $roles Les roles a assigner (ex: ['ROLE_OPERATOR']) * @return static */ public function setRoles(array $roles): static { $this->roles = $roles; return $this; } /** @return string|null Mot de passe hashé */ public function getPassword(): ?string { return $this->password; } /** @param string $password Le hash du mot de passe @return static */ public function setPassword(string $password): static { $this->password = $password; return $this; } /** * @brief Verifie si le compte est actif * @return bool true si actif, false si désactivé par un admin */ public function isActive(): bool { return $this->isActive; } /** @param bool $isActive @return static */ public function setIsActive(bool $isActive): static { $this->isActive = $isActive; return $this; } /** @return \DateTimeImmutable|null Date d'inscription */ public function getCreatedAt(): ?\DateTimeImmutable { return $this->createdAt; } /** @return string|null Token de reinitialisation de mot de passe */ public function getResetToken(): ?string { return $this->resetToken; } /** @param string|null $resetToken null pour effacer le token @return static */ public function setResetToken(?string $resetToken): static { $this->resetToken = $resetToken; return $this; } /** @return \DateTimeImmutable|null Date d'expiration du token */ public function getResetTokenExpiresAt(): ?\DateTimeImmutable { return $this->resetTokenExpiresAt; } /** * @param \DateTimeImmutable|null $resetTokenExpiresAt * @return static */ public function setResetTokenExpiresAt(?\DateTimeImmutable $resetTokenExpiresAt): static { $this->resetTokenExpiresAt = $resetTokenExpiresAt; return $this; } /** * @brief Efface les données sensibles de l'utilisateur apres authentification * Requis par l'interface UserInterface, on laisse vide car on utilise pas plainPassword */ public function eraseCredentials(): void {} /** @return Collection Serveurs propriéte de cet utilisateur */ public function getServers(): Collection { return $this->servers; } /** @return Collection Logs des actions de cet utilisateur */ public function getActionLogs(): Collection { return $this->actionLogs; } /** @return Collection Accès aux serveurs assignés */ public function getServerAccesses(): Collection { return $this->serverAccesses; } /** * @brief Vérifie si l'utilisateur a le role admin * @return bool true si ROLE_ADMIN est dans les roles */ public function isAdmin(): bool { return in_array('ROLE_ADMIN', $this->getRoles()); } /** * @brief Vérifie si l'utilisateur est au moins opérateur * @return bool true si ROLE_OPERATOR ou ROLE_ADMIN */ public function isOperator(): bool { return $this->isAdmin() || in_array('ROLE_OPERATOR', $this->getRoles()); } }