backend/pkg/permission/domain/usecase/token.go

45 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package usecase
import (
"context"
"backend/pkg/permission/domain/entity"
)
// TokenUseCase 定義與 Token 相關的操作接口
//
//nolint:interfacebloat
type TokenUseCase interface {
// NewToken 創建新 Token通常為 Access Token
NewToken(ctx context.Context, req entity.AuthorizationReq) (entity.TokenResp, error)
// RefreshToken 刷新目前的 Token包括一次性 Token
RefreshToken(ctx context.Context, req entity.RefreshTokenReq) (entity.RefreshTokenResp, error)
// CancelToken 取消 Token包括取消其關聯的 One-Time Token
CancelToken(ctx context.Context, req entity.CancelTokenReq) error
// ValidationToken 驗證 Token 是否有效
ValidationToken(ctx context.Context, req entity.ValidationTokenReq) (entity.ValidationTokenResp, error)
// CancelTokens 根據 UID 或 Token ID 取消所有相關 Token通常在用戶登出時使用
CancelTokens(ctx context.Context, req entity.DoTokenByUIDReq) error
// CancelTokenByDeviceID 根據 Device ID 取消所有相關的 Token
CancelTokenByDeviceID(ctx context.Context, req entity.DoTokenByDeviceIDReq) error
// GetUserTokensByDeviceID 根據 Device ID 獲取所有 Token
GetUserTokensByDeviceID(ctx context.Context, req entity.DoTokenByDeviceIDReq) ([]*entity.TokenResp, error)
// GetUserTokensByUID 根據 UID 獲取所有 Token
GetUserTokensByUID(ctx context.Context, req entity.QueryTokenByUIDReq) ([]*entity.TokenResp, error)
// NewOneTimeToken 創建一次性 Token例如 Refresh Token
NewOneTimeToken(ctx context.Context, req entity.CreateOneTimeTokenReq) (entity.CreateOneTimeTokenResp, error)
// CancelOneTimeToken 取消一次性 Token
CancelOneTimeToken(ctx context.Context, req entity.CancelOneTimeTokenReq) error
// ReadTokenBasicData 檢查Token 帶的資料
ReadTokenBasicData(ctx context.Context, token string) (map[string]string, error)
// Blacklist operations
// BlacklistToken 將 JWT token 加入黑名單 (立即撤銷)
BlacklistToken(ctx context.Context, token string, reason string) error
// IsTokenBlacklisted 檢查 JWT token 是否在黑名單中
IsTokenBlacklisted(ctx context.Context, jti string) (bool, error)
// BlacklistAllUserTokens 將用戶的所有 token 加入黑名單 (全設備登出)
BlacklistAllUserTokens(ctx context.Context, uid string, reason string) error
}