Exemplo n.º 1
0
        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 }
         }));
     }
 }