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

Method UserChangeEmailVerify

internal/service/content/user_service.go:709–777  ·  view source on GitHub ↗

UserChangeEmailVerify user change email verify code

(ctx context.Context, content string)

Source from the content-addressed store, hash-verified

707
708// UserChangeEmailVerify user change email verify code
709func (us *UserService) UserChangeEmailVerify(ctx context.Context, content string) (resp *schema.UserLoginResp, err error) {
710 data := &schema.EmailCodeContent{}
711 err = data.FromJSONString(content)
712 if err != nil {
713 return nil, errors.BadRequest(reason.EmailVerifyURLExpired)
714 }
715
716 _, exist, err := us.userRepo.GetByEmail(ctx, data.Email)
717 if err != nil {
718 return nil, err
719 }
720 if exist {
721 return nil, errors.BadRequest(reason.EmailDuplicate)
722 }
723
724 userInfo, exist, err := us.userRepo.GetByUserID(ctx, data.UserID)
725 if err != nil {
726 return nil, err
727 }
728 if !exist {
729 return nil, errors.BadRequest(reason.UserNotFound)
730 }
731 err = us.userRepo.UpdateEmail(ctx, data.UserID, data.Email)
732 if err != nil {
733 return nil, errors.BadRequest(reason.UserNotFound)
734 }
735 err = us.userRepo.UpdateEmailStatus(ctx, data.UserID, entity.EmailStatusAvailable)
736 if err != nil {
737 return nil, err
738 }
739 // if email status is to be verified, active user as well
740 if userInfo.MailStatus == entity.EmailStatusToBeVerified {
741 if err = us.userActivity.UserActive(ctx, userInfo.ID); err != nil {
742 log.Error(err)
743 return nil, err
744 }
745 }
746
747 roleID, err := us.userRoleService.GetUserRole(ctx, userInfo.ID)
748 if err != nil {
749 log.Error(err)
750 }
751
752 resp = &schema.UserLoginResp{}
753 resp.ConvertFromUserEntity(userInfo)
754 resp.Avatar = us.siteInfoService.FormatAvatar(ctx, userInfo.Avatar, userInfo.EMail, userInfo.Status).GetURL()
755 userCacheInfo := &entity.UserCacheInfo{
756 UserID: userInfo.ID,
757 EmailStatus: entity.EmailStatusAvailable,
758 UserStatus: userInfo.Status,
759 RoleID: roleID,
760 }
761 resp.AccessToken, resp.VisitToken, err = us.authService.SetUserCacheInfo(ctx, userCacheInfo)
762 if err != nil {
763 return nil, err
764 }
765 // User verified email will update user email status. So user status cache should be updated.
766 if err = us.authService.SetUserStatus(ctx, userCacheInfo); err != nil {

Callers

nothing calls this directly

Calls 13

FromJSONStringMethod · 0.95
GetUserRoleMethod · 0.80
GetURLMethod · 0.80
GetByEmailMethod · 0.65
GetByUserIDMethod · 0.65
UpdateEmailMethod · 0.65
UpdateEmailStatusMethod · 0.65
UserActiveMethod · 0.65
FormatAvatarMethod · 0.65
SetUserCacheInfoMethod · 0.65
SetUserStatusMethod · 0.65
SetAdminUserCacheInfoMethod · 0.65

Tested by

no test coverage detected