Ejemplo n.º 1
0
        public ResponseLoginInfo LoginWithoutRefeshToken(RequestLoginInfo requestLoginInfo)
        {
            var    resLogin = new ResponseLoginInfo();
            string token    = string.Empty;

            try
            {
                var loginUser = _user.Find(u => u.UserName == requestLoginInfo.UserName && u.UserPassword == requestLoginInfo.Password).FirstOrDefault();
                if (loginUser != null)
                {
                    token = GenerateJSONWebTokenWithoutExpired(requestLoginInfo);
                    if (!string.IsNullOrWhiteSpace(token))
                    {
                        resLogin.UserName     = loginUser.UserName;
                        resLogin.UserFullName = loginUser.UserLastName + " " + loginUser.UserMiddleName + " " + loginUser.UserFirstName;
                        resLogin.Role         = loginUser.RoleName;
                        resLogin.token        = token;
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
            }
            return(resLogin);
        }
Ejemplo n.º 2
0
        private string GenerateJSONWebTokenWithoutExpired(RequestLoginInfo requestLoginInfo)
        {
            string token = "";

            try
            {
                var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));
                var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
                var claims      = new[]
                {
                    new Claim("UserName", requestLoginInfo.UserName),
                    new Claim("uuid", requestLoginInfo.uuid),
                    new Claim("ostype", requestLoginInfo.ostype)
                };

                var tokenGenerated = new JwtSecurityToken(_config["Jwt:Issuer"],
                                                          _config["Jwt:Issuer"],
                                                          claims,
                                                          signingCredentials: credentials);
                token = new JwtSecurityTokenHandler().WriteToken(tokenGenerated);
            }
            catch (System.Exception ex)
            {
                _logger.LogError(ex, ex.Message);
            }
            return(token);
        }
 public ActionResult Login(RequestLoginInfo requestLoginInfo)
 {
     try
     {
         var resLogin = new ResponseLoginInfo();
         resLogin = _authServices.LoginWithoutRefeshToken(requestLoginInfo);
         if (resLogin != null && resLogin.UserName != null)
         {
             var prevUserLogin = new UserLogin();
             prevUserLogin = _userLoginServices.Get(requestLoginInfo.UserName);
             if (prevUserLogin == null || prevUserLogin.UserName == null)
             {
                 var newUserLogin = new UserLogin
                 {
                     LoginId            = "",
                     UserName           = requestLoginInfo.UserName,
                     uuid               = requestLoginInfo.uuid,
                     ostype             = requestLoginInfo.ostype,
                     token              = resLogin.token,
                     registration_token = resLogin.registration_token
                 };
                 var createdUser = _userLoginServices.Create(newUserLogin);
                 if (createdUser != null)
                 {
                     return(Ok(new ResponseContext
                     {
                         code = (int)Common.ResponseCode.SUCCESS,
                         message = Common.Message.LOGIN_SUCCESS,
                         data = resLogin
                     }));
                 }
                 else
                 {
                     return(StatusCode(StatusCodes.Status500InternalServerError, new ResponseMessage
                     {
                         status = "ERROR",
                         message = "Cannot update user login information"
                     }));
                 }
             }
             else
             {
                 var updateUserLogin = new UserLogin
                 {
                     LoginId            = prevUserLogin.LoginId,
                     UserName           = requestLoginInfo.UserName,
                     uuid               = requestLoginInfo.uuid,
                     ostype             = requestLoginInfo.ostype,
                     token              = resLogin.token,
                     registration_token = resLogin.registration_token
                 };
                 var updateCount = _userLoginServices.Update(prevUserLogin.LoginId, updateUserLogin);
                 if (updateCount >= 0)
                 {
                     return(Ok(new ResponseContext
                     {
                         code = (int)Common.ResponseCode.SUCCESS,
                         message = Common.Message.LOGIN_SUCCESS,
                         data = resLogin
                     }));
                 }
                 else
                 {
                     return(StatusCode(StatusCodes.Status500InternalServerError, new ResponseMessage
                     {
                         status = "ERROR",
                         message = "Cannot update user login information"
                     }));
                 }
             }
         }
         else
         {
             return(StatusCode(StatusCodes.Status401Unauthorized, new ResponseContext
             {
                 code = (int)Common.ResponseCode.ERROR,
                 message = Common.Message.INCORRECT_USERNAME_PASSWORD,
                 data = null
             }));
         }
     }
     catch (System.Exception ex)
     {
         _logger.LogError(ex, ex.Message);
         return(StatusCode(StatusCodes.Status500InternalServerError, new ResponseMessage {
             status = "ERROR", message = ex.Message
         }));
     }
 }