45 lines
2.3 KiB
Go
45 lines
2.3 KiB
Go
|
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
|
|||
|
}
|