$userRoles IDs de roles del usuario */ public function __construct( private bool $isLoggedIn, private bool $isMobile, private array $userRoles = [] ) { } public function isLoggedIn(): bool { return $this->isLoggedIn; } public function isMobile(): bool { return $this->isMobile; } public function isDesktop(): bool { return !$this->isMobile; } /** * @return array */ public function getUserRoles(): array { return $this->userRoles; } public function hasRole(int $roleId): bool { return in_array($roleId, $this->userRoles, true); } /** * Crea instancia desde array (para deserializacion). * * @param array{is_logged_in: bool, is_mobile: bool, user_roles?: array} $data */ public static function fromArray(array $data): self { return new self( isLoggedIn: $data['is_logged_in'] ?? false, isMobile: $data['is_mobile'] ?? false, userRoles: $data['user_roles'] ?? [] ); } /** * Serializa a array para respuesta JSON. * * @return array{is_logged_in: bool, is_mobile: bool, user_roles: array} */ public function toArray(): array { return [ 'is_logged_in' => $this->isLoggedIn, 'is_mobile' => $this->isMobile, 'user_roles' => $this->userRoles, ]; } }