public async Task <UserLogInModelOut> LogIn(UserLoginModelIn modelIn, UserTokenSessionModel userTokenSessionModel) { UserTokenSession userTokenSession = _mapper.Map <UserTokenSession>(userTokenSessionModel); UserLogInModelOut response = new UserLogInModelOut(); User user = await _repos.Users.GetUserByEmailAndPassword(modelIn.Email, modelIn.Password); if (user == null) { response.AddError(CustomErrorEnum.UnsuccessfulLogIn); return(response); } response.Id = user.Id; response.Email = user.Email; response.EmailIsVerified = user.EmailIsVerified; response.PhoneNumber = user.PhoneNumber; response.Token = HashingUtilities.GetHashSHA512(Guid.NewGuid().ToString()); userTokenSession.UserId = user.Id; userTokenSession.Date = DateTime.UtcNow; userTokenSession.LastUpdateDate = DateTime.UtcNow; userTokenSession.Token = response.Token; await _repos.UserTokenSessions.Create(userTokenSession); if (await _repos.SaveAsync() == 0) { response.AddError(CustomErrorEnum.UnsuccessfulLogIn); return(response); } UserTokenSessionCacheModel clientTokenSessionCacheModel = _mapper.Map <UserTokenSessionCacheModel>(userTokenSession); _memoryCache.Set(response.Token, clientTokenSessionCacheModel, _cacheExpirationByMinutes.Value); return(response); }
public async Task LogOut(string token, UserLogOutModelOut response) { if (!_memoryCache.TryGetValue(token, out UserTokenSessionCacheModel userTokenSessionCacheModel)) { response.AddError(CustomErrorEnum.TokenExpire); return; } UserTokenSession session = await _repos.UserTokenSessions.GetByIdAsync(userTokenSessionCacheModel.Id); session.CloseActionIsLogout = true; _repos.UserTokenSessions.Update(session); if (await _repos.SaveAsync() == 0) { response.AddError(CustomErrorEnum.UnsuccessfulLogOut); } }