package models // User represents a system user type User struct { ID string `db:"id" json:"id"` Email string `db:"email" json:"email"` Password string `db:"password" json:"-"` // Never expose password in JSON Role string `db:"role" json:"role"` Name string `db:"name" json:"name"` CreatedAt string `db:"created_at" json:"created_at"` UpdatedAt string `db:"updated_at" json:"updated_at"` } // RefreshToken represents a refresh token stored in the database type RefreshToken struct { ID string `db:"id" json:"id"` UserID string `db:"user_id" json:"user_id"` Token string `db:"token" json:"token"` ExpiresAt string `db:"expires_at" json:"expires_at"` IsRevoked bool `db:"is_revoked" json:"is_revoked"` CreatedAt string `db:"created_at" json:"created_at"` } // LoginRequest represents the login form data type LoginRequest struct { Email string `json:"email"` Password string `json:"password"` } // LoginResponse is the response sent after successful login type LoginResponse struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` User *User `json:"user"` RedirectURL string `json:"redirect_url"` } // RefreshRequest represents the refresh token request type RefreshRequest struct { RefreshToken string `json:"refresh_token"` } // RefreshResponse is the response for a token refresh type RefreshResponse struct { AccessToken string `json:"access_token"` }