MCPcopy Create free account
hub / github.com/apache/answer / UserVerifyEmail

Method UserVerifyEmail

internal/service/content/user_service.go:586–635  ·  view source on GitHub ↗
(ctx context.Context, req *schema.UserVerifyEmailReq)

Source from the content-addressed store, hash-verified

584}
585
586func (us *UserService) UserVerifyEmail(ctx context.Context, req *schema.UserVerifyEmailReq) (resp *schema.UserLoginResp, err error) {
587 data := &schema.EmailCodeContent{}
588 err = data.FromJSONString(req.Content)
589 if err != nil {
590 return nil, errors.BadRequest(reason.EmailVerifyURLExpired)
591 }
592
593 userInfo, has, err := us.userRepo.GetByEmail(ctx, data.Email)
594 if err != nil {
595 return nil, err
596 }
597 if !has {
598 return nil, errors.BadRequest(reason.UserNotFound)
599 }
600 if userInfo.MailStatus == entity.EmailStatusToBeVerified {
601 userInfo.MailStatus = entity.EmailStatusAvailable
602 err = us.userRepo.UpdateEmailStatus(ctx, userInfo.ID, userInfo.MailStatus)
603 if err != nil {
604 return nil, err
605 }
606 }
607 if err = us.userActivity.UserActive(ctx, userInfo.ID); err != nil {
608 log.Error(err)
609 return nil, err
610 }
611
612 // In the case of three-party login, the associated users are bound
613 if len(data.BindingKey) > 0 {
614 err = us.userExternalLoginService.ExternalLoginBindingUser(ctx, data.BindingKey, userInfo)
615 if err != nil {
616 return nil, err
617 }
618 }
619
620 accessToken, userCacheInfo, err := us.userCommonService.CacheLoginUserInfo(
621 ctx, userInfo.ID, userInfo.MailStatus, userInfo.Status, "")
622 if err != nil {
623 return nil, err
624 }
625
626 resp = &schema.UserLoginResp{}
627 resp.ConvertFromUserEntity(userInfo)
628 resp.Avatar = us.siteInfoService.FormatAvatar(ctx, userInfo.Avatar, userInfo.EMail, userInfo.Status).GetURL()
629 resp.AccessToken = accessToken
630 // User verified email will update user email status. So user status cache should be updated.
631 if err = us.authService.SetUserStatus(ctx, userCacheInfo); err != nil {
632 return nil, err
633 }
634 return resp, nil
635}
636
637// verifyPassword
638// Compare whether the password is correct

Callers

nothing calls this directly

Calls 10

FromJSONStringMethod · 0.95
CacheLoginUserInfoMethod · 0.80
GetURLMethod · 0.80
GetByEmailMethod · 0.65
UpdateEmailStatusMethod · 0.65
UserActiveMethod · 0.65
FormatAvatarMethod · 0.65
SetUserStatusMethod · 0.65
ConvertFromUserEntityMethod · 0.45

Tested by

no test coverage detected