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

Method EmailLogin

internal/service/content/user_service.go:157–216  ·  view source on GitHub ↗

EmailLogin email login

(ctx context.Context, req *schema.UserEmailLoginReq)

Source from the content-addressed store, hash-verified

155
156// EmailLogin email login
157func (us *UserService) EmailLogin(ctx context.Context, req *schema.UserEmailLoginReq) (resp *schema.UserLoginResp, err error) {
158 siteLogin, err := us.siteInfoService.GetSiteLogin(ctx)
159 if err != nil {
160 return nil, err
161 }
162 if !siteLogin.AllowPasswordLogin {
163 return nil, errors.BadRequest(reason.NotAllowedLoginViaPassword)
164 }
165 userInfo, exist, err := us.userRepo.GetByEmail(ctx, req.Email)
166 if err != nil {
167 return nil, err
168 }
169 if !exist || userInfo.Status == entity.UserStatusDeleted {
170 return nil, errors.BadRequest(reason.EmailOrPasswordWrong)
171 }
172 if !us.verifyPassword(ctx, req.Pass, userInfo.Pass) {
173 return nil, errors.BadRequest(reason.EmailOrPasswordWrong)
174 }
175 ok, externalID, err := us.userExternalLoginService.CheckUserStatusInUserCenter(ctx, userInfo.ID)
176 if err != nil {
177 return nil, err
178 }
179 if !ok {
180 return nil, errors.BadRequest(reason.EmailOrPasswordWrong)
181 }
182
183 err = us.userRepo.UpdateLastLoginDate(ctx, userInfo.ID)
184 if err != nil {
185 log.Errorf("update last login data failed, err: %v", err)
186 }
187
188 roleID, err := us.userRoleService.GetUserRole(ctx, userInfo.ID)
189 if err != nil {
190 log.Error(err)
191 }
192
193 resp = &schema.UserLoginResp{}
194 resp.ConvertFromUserEntity(userInfo)
195 resp.Avatar = us.siteInfoService.FormatAvatar(ctx, userInfo.Avatar, userInfo.EMail, userInfo.Status).GetURL()
196 userCacheInfo := &entity.UserCacheInfo{
197 UserID: userInfo.ID,
198 EmailStatus: userInfo.MailStatus,
199 UserStatus: userInfo.Status,
200 RoleID: roleID,
201 ExternalID: externalID,
202 }
203 resp.AccessToken, resp.VisitToken, err = us.authService.SetUserCacheInfo(ctx, userCacheInfo)
204 if err != nil {
205 return nil, err
206 }
207 resp.RoleID = userCacheInfo.RoleID
208 if resp.RoleID == role.RoleAdminID {
209 err = us.authService.SetAdminUserCacheInfo(ctx, resp.AccessToken, userCacheInfo)
210 if err != nil {
211 return nil, err
212 }
213 }
214

Callers 1

UserEmailLoginMethod · 0.80

Calls 11

verifyPasswordMethod · 0.95
GetUserRoleMethod · 0.80
GetURLMethod · 0.80
GetSiteLoginMethod · 0.65
GetByEmailMethod · 0.65
UpdateLastLoginDateMethod · 0.65
FormatAvatarMethod · 0.65
SetUserCacheInfoMethod · 0.65
SetAdminUserCacheInfoMethod · 0.65
ConvertFromUserEntityMethod · 0.45

Tested by

no test coverage detected