template-monorepo/internal/model/member/domain/usecase/step_up.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
}