'array', 'last_used_at' => 'datetime', 'expires_at' => 'datetime', ]; } public function tokenable(): MorphTo { return $this->morphTo(); } public function can(string $ability): bool { return in_array('*', $this->abilities ?? []) || in_array($ability, $this->abilities ?? []); } public function markAsUsed(): void { $this->update(['last_used_at' => now()]); } public function isExpired(): bool { return $this->expires_at && $this->expires_at->isPast(); } }