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); }
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 })); } }