46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
|
|
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,
|
||
|
|
})
|
||
|
|
}
|