public async Task <UserLoginModelOut> GetUserAsync(UserLoginModelIn modelIn) { GeneralDbContext db = new GeneralDbContext(); var ret = db.Database.SqlQuery <UserLoginModelOut>("SELECT Id,AccessCode,Name FROM v_user WHERE AccessCode=@AccessCode AND Pass=@Password", new SqlParameter("AccessCode", modelIn.AccessCode), new SqlParameter("Password", modelIn.Password.ToBase64())); if (ret == null) { return(null); } var _list = await ret.ToListAsync(); if (_list.Count == 0) { return(null); } else { return(_list[0]); } }
public async Task <IHttpActionResult> Login(UserLoginModelIn modelIn) { try { if (modelIn.IsNull()) { return(BadRequest(new ApiMessageResponse <TokenModelOut>("Modelo Inválido"))); } if (!ModelState.IsValid) { return(BadRequest(new ApiMessageResponse <TokenModelOut>(ModelState.StringifyModelErrors()))); } UserService userService = new UserService(); UserLoginModelOut _user = await userService.GetUserAsync(modelIn); if (_user.IsNull()) { return(BadRequest(new ApiMessageResponse <TokenModelOut>("Usuario no válido"))); } var secretKey = ApplicationJjwtContext.SecretKey; var secretKeyMessage = ApplicationJjwtContext.SecretKeyMessage; var sessionMinutes = ApplicationJjwtContext.SessionMinutes; var TokenModelIn = new TokenModelIn() { UserId = _user.Id.ToString(), UserFullName = _user.Name, SessionMinutes = sessionMinutes }; if (!string.IsNullOrEmpty(secretKeyMessage)) { return(BadRequest(new ApiMessageResponse <TokenModelOut>("No autenticado"))); } var ret = JjwtTokens.CreateToken(secretKey, TokenModelIn); ret.UserId = _user.Id; ret.UserName = _user.Name; return(Ok(new ApiMessageResponse <TokenModelOut>(ret))); } catch (Exception ex) { return(BadRequest(new ApiMessageResponse <TokenModelOut>(ex.GetFirstException().Message))); } }
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); }