MCPcopy Index your code
hub / github.com/apache/answer / UserRegisterByEmail

Method UserRegisterByEmail

internal/service/content/user_service.go:479–561  ·  view source on GitHub ↗

UserRegisterByEmail user register

(ctx context.Context, registerUserInfo *schema.UserRegisterReq)

Source from the content-addressed store, hash-verified

477
478// UserRegisterByEmail user register
479func (us *UserService) UserRegisterByEmail(ctx context.Context, registerUserInfo *schema.UserRegisterReq) (
480 resp *schema.UserLoginResp, errFields []*validator.FormErrorField, err error,
481) {
482 _, has, err := us.userRepo.GetByEmail(ctx, registerUserInfo.Email)
483 if err != nil {
484 return nil, nil, err
485 }
486 if has {
487 errFields = append(errFields, &validator.FormErrorField{
488 ErrorField: "e_mail",
489 ErrorMsg: reason.EmailDuplicate,
490 })
491 return nil, errFields, errors.BadRequest(reason.EmailDuplicate)
492 }
493
494 userInfo := &entity.User{}
495 userInfo.EMail = registerUserInfo.Email
496 userInfo.DisplayName = registerUserInfo.Name
497 userInfo.Pass, err = us.encryptPassword(ctx, registerUserInfo.Pass)
498 if err != nil {
499 return nil, nil, err
500 }
501 userInfo.Username, err = us.userCommonService.MakeUsername(ctx, registerUserInfo.Name)
502 if err != nil {
503 errFields = append(errFields, &validator.FormErrorField{
504 ErrorField: "name",
505 ErrorMsg: reason.UsernameInvalid,
506 })
507 return nil, errFields, err
508 }
509 userInfo.IPInfo = registerUserInfo.IP
510 userInfo.MailStatus = entity.EmailStatusToBeVerified
511 userInfo.Status = entity.UserStatusAvailable
512 userInfo.LastLoginDate = time.Now()
513 err = us.userRepo.AddUser(ctx, userInfo)
514 if err != nil {
515 return nil, nil, err
516 }
517 if err := us.userNotificationConfigService.SetDefaultUserNotificationConfig(ctx, []string{userInfo.ID}); err != nil {
518 log.Errorf("set default user notification config failed, err: %v", err)
519 }
520
521 // send email
522 data := &schema.EmailCodeContent{
523 Email: registerUserInfo.Email,
524 UserID: userInfo.ID,
525 }
526 code := token.GenerateToken()
527 verifyEmailURL := fmt.Sprintf("%s/users/account-activation?code=%s", us.getSiteUrl(ctx), code)
528 title, body, err := us.emailService.RegisterTemplate(ctx, verifyEmailURL)
529 if err != nil {
530 return nil, nil, err
531 }
532 go us.emailService.SendAndSaveCode(ctx, userInfo.ID, userInfo.EMail, title, body, code, data.ToJSONString())
533
534 roleID, err := us.userRoleService.GetUserRole(ctx, userInfo.ID)
535 if err != nil {
536 log.Error(err)

Callers

nothing calls this directly

Calls 15

encryptPasswordMethod · 0.95
getSiteUrlMethod · 0.95
ToJSONStringMethod · 0.95
GenerateTokenFunction · 0.92
MakeUsernameMethod · 0.80
RegisterTemplateMethod · 0.80
SendAndSaveCodeMethod · 0.80
GetUserRoleMethod · 0.80
GetURLMethod · 0.80
GetByEmailMethod · 0.65
AddUserMethod · 0.65

Tested by

no test coverage detected