package usecase import "context" type TokenUseCase interface { // NewToken 創建新 Token,通常為 Access Token NewToken(ctx context.Context, req AuthorizationReq) (TokenResp, error) // RefreshToken 刷新目前的 Token,包括一次性 Token RefreshToken(ctx context.Context, req RefreshTokenReq) (RefreshTokenResp, error) // CancelToken 取消 Token,包括取消其關聯的 One-Time Token CancelToken(ctx context.Context, req CancelTokenReq) error // ValidationToken 驗證 Token 是否有效 ValidationToken(ctx context.Context, req ValidationTokenReq) (ValidationTokenResp, error) // CancelTokens 根據 UID 或 Token ID 取消所有相關 Token,通常在用戶登出時使用 CancelTokens(ctx context.Context, req DoTokenByUIDReq) error // CancelTokenByDeviceID 根據 Device ID 取消所有相關的 Token CancelTokenByDeviceID(ctx context.Context, req DoTokenByDeviceIDReq) error // GetUserTokensByDeviceID 根據 Device ID 獲取所有 Token GetUserTokensByDeviceID(ctx context.Context, req DoTokenByDeviceIDReq) ([]*TokenResp, error) // GetUserTokensByUID 根據 UID 獲取所有 Token GetUserTokensByUID(ctx context.Context, req QueryTokenByUIDReq) ([]*TokenResp, error) // NewOneTimeToken 創建一次性 Token,例如 Refresh Token NewOneTimeToken(ctx context.Context, req CreateOneTimeTokenReq) (CreateOneTimeTokenResp, error) // CancelOneTimeToken 取消一次性 Token CancelOneTimeToken(ctx context.Context, req CancelOneTimeTokenReq) error // ReadTokenBasicData 檢查Token 帶的資料 ReadTokenBasicData(ctx context.Context, token string) (map[string]string, error) } // AuthorizationReq 定義授權請求的結構 type AuthorizationReq struct { GrantType string `json:"grant_type"` // 授權類型 DeviceID string `json:"device_id"` // 設備 ID Scope string `json:"scope"` // 授權範圍 Data map[string]string `json:"data"` // 附加數據 Expires int64 `json:"expires"` // 過期時間(秒) IsRefreshToken bool `json:"is_refresh_token"` // 是否為刷新令牌 Role string `json:"role"` // 是否為刷新令牌 Account string `json:"account"` // 登入時的帳號 }