37 lines
851 B
Go
37 lines
851 B
Go
|
|
package usecase
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"gateway/internal/model/member/domain/enum"
|
||
|
|
)
|
||
|
|
|
||
|
|
// IssueStepUpRequest creates a step-up token after TOTP verification.
|
||
|
|
type IssueStepUpRequest struct {
|
||
|
|
TenantID string
|
||
|
|
UID string
|
||
|
|
Purpose enum.StepUpPurpose
|
||
|
|
TTL time.Duration
|
||
|
|
}
|
||
|
|
|
||
|
|
// StepUpView is returned to the client after successful step-up verify.
|
||
|
|
type StepUpView struct {
|
||
|
|
StepUpToken string
|
||
|
|
ExpiresIn int
|
||
|
|
}
|
||
|
|
|
||
|
|
// ConsumeStepUpRequest validates and burns a one-time step-up token.
|
||
|
|
type ConsumeStepUpRequest struct {
|
||
|
|
TokenID string
|
||
|
|
TenantID string
|
||
|
|
UID string
|
||
|
|
Purpose enum.StepUpPurpose
|
||
|
|
}
|
||
|
|
|
||
|
|
// StepUpUseCase issues and consumes short-lived step-up sessions.
|
||
|
|
type StepUpUseCase interface {
|
||
|
|
Issue(ctx context.Context, req *IssueStepUpRequest) (*StepUpView, error)
|
||
|
|
Consume(ctx context.Context, req *ConsumeStepUpRequest) error
|
||
|
|
}
|