<?php declare(strict_types=1); namespace mystic\forum\orm; use mystic\forum\attributes\Column; use mystic\forum\attributes\PrimaryKey; use mystic\forum\attributes\Table; use mystic\forum\attributes\Unique; #[Table("public.users")] class User extends Entity { public const SUPERUSER_ID = "SUPERUSER"; #[PrimaryKey] public string $id; #[Unique] public string $name; public string $displayName; #[Unique] public string $email; #[Unique] public ?string $pendingEmail; public ?\DateTimeImmutable $pendingEmailCreated; public \DateTimeImmutable $created; public string $passwordHash; public int $permissionMask; public bool $passwordResetRequired; public string $activationToken; public bool $activated; #[Unique] public ?string $passwordResetToken; public ?\DateTimeImmutable $passwordResetTokenCreated; #[Column(columnType: "bytea")] public ?string $profilePicture; public ?\DateTimeImmutable $nameLastChanged; public function hasPermission(int $perm): bool { if ($this->id === self::SUPERUSER_ID) return true; return ($this->permissionMask & $perm) === $perm; } }