UserRegisterByEmail user register
(ctx context.Context, registerUserInfo *schema.UserRegisterReq)
| 477 | |
| 478 | // UserRegisterByEmail user register |
| 479 | func (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) |
nothing calls this directly
no test coverage detected