'integer', 'privileges_version' => 'integer', 'user_jwt_issued_at' => 'datetime', 'user_jwt_expires_at' => 'datetime', ]; } public function jwtNeedsRefresh(int $refreshIntervalSeconds = 3600): bool { if (blank($this->user_jwt) || ! $this->user_jwt_issued_at) { return true; } return $this->user_jwt_issued_at->lte(now()->subSeconds($refreshIntervalSeconds)); } public function markPrivilegesChanged(): void { $this->increment('privileges_version'); } public function getName() { return $this->character_name; } public function getId() { return $this->character_id; } public function getRole() { $role = UserRole::where([ 'character_id' => $this->character_id, ])->first(); return $role->role; } }