public Users AuthenticateUser(ApiUserLoginModel entity, out string token) { token = string.Empty; var user = _userManagementService.IsValidUser(entity.Mobile, entity.Password); if (user != null) { var claims = new[] { new Claim(ClaimTypes.MobilePhone, entity.Mobile) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_tokenManagement.Secret)); var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var expireDate = DateTime.Now.AddDays(_tokenManagement.AccessExpiration); var tokenDiscriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = expireDate, SigningCredentials = credentials }; var tokenHandler = new JwtSecurityTokenHandler(); var tokenObj = tokenHandler.CreateToken(tokenDiscriptor); token = tokenHandler.WriteToken(tokenObj); user.OnLine = true; _uow.UsersRepository.Update(user); } return(user); }
public IActionResult UserLogIn([FromBody] ApiUserLoginModel request) { try { var user = authService.AuthenticateUser(request, out string token); if (user != null && user.Technical != null) { user.Password = null; var model = new { user.Id, Name = user.ArabicName, user.Location, ServiceName = user.Technical?.Service?.ArabicName, user.UserName, user.Mobile, user.Technical.Pocket, user.CityId, user.DistrictId, token }; return(Ok(new ApiResponseModel { Status = EN_ResponseStatus.Success, Message = "Logged in successflly", Data = model, Errors = null })); } return(Ok(new ApiResponseModel { Status = EN_ResponseStatus.Faild, Message = "Invalid mobile or password", Data = null, Errors = new string[] { "Invalid mobile or password" } })); } catch (Exception ex) { return(Ok(new ApiResponseModel { Status = EN_ResponseStatus.Faild, Message = "Error: " + ex.Message, Data = null, Errors = new string[] { "Error: " + ex.Message } })); } }