'integer', 'status' => 'integer', 'ext' => 'array', 'refresh_token_expires_at' => 'datetime', 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; /** * Get the name of the unique identifier for the user. */ public function getId() { return $this->id; } /** * Retrieve a user by their unique identifier. */ public static function retrieveById($key): ?Authenticatable { return static::query()->find($key); } /** * Set the user's password (auto-hash). */ public function setPasswordAttribute($value): void { $this->attributes['password'] = password_hash($value, PASSWORD_DEFAULT); } /** * Verify the user's password. */ public function verifyPassword(string $password): bool { return password_verify($password, $this->password); } /** * Check if refresh token is valid. */ public function isRefreshTokenValid(): bool { if (!$this->refresh_token || !$this->refresh_token_expires_at) { return false; } return $this->refresh_token_expires_at->isFuture(); } }