'datetime', 'attempts' => 'integer', 'verified_at' => 'datetime', 'verification_token_expires_at' => 'datetime', ]; } public function isExpired(): bool { return $this->expires_at->isPast(); } public function hasExceededMaxAttempts(): bool { return $this->attempts >= (int) config('auth.phone_verification.max_attempts', 5); } public function isVerificationTokenExpired(): bool { return $this->verification_token_expires_at === null || $this->verification_token_expires_at->isPast(); } }