template-monorepo/internal/logic/member/step_up_helper.go

46 lines
1.0 KiB
Go
Raw Normal View History

2026-05-27 09:28:13 +00:00
package member
import (
"context"
"strings"
memberenum "gateway/internal/model/member/domain/enum"
domusecase "gateway/internal/model/member/domain/usecase"
"gateway/internal/svc"
)
func parseStepUpPurpose(raw string) (memberenum.StepUpPurpose, error) {
p := memberenum.StepUpPurpose(strings.TrimSpace(raw))
if p == "" {
return memberenum.StepUpPurposeChangePassword, nil
}
if !p.Valid() {
return "", errb.InputInvalidFormat("unsupported step-up purpose")
}
return p, nil
}
func requireStepUp(sc *svc.ServiceContext) error {
if sc.MemberStepUp == nil {
return errb.SysNotImplemented("member step-up not configured")
}
return nil
}
func issueStepUpAfterVerify(
ctx context.Context,
sc *svc.ServiceContext,
tenantID, uid string,
purpose memberenum.StepUpPurpose,
) (*domusecase.StepUpView, error) {
if err := requireStepUp(sc); err != nil {
return nil, err
}
return sc.MemberStepUp.Issue(ctx, &domusecase.IssueStepUpRequest{
TenantID: tenantID,
UID: uid,
Purpose: purpose,
TTL: 0,
})
}