private async Task GenerateToken(HttpContext context) { var username = context.Request.Form["username"]; var password = context.Request.Form["password"]; var identity = await _options.IdentityResolver(username, password); if (identity == null) { context.Response.StatusCode = 400; await context.Response.WriteAsync("Invalid username or password."); return; } var now = DateTime.UtcNow; var claims = new Claim[] { new Claim(JwtRegisteredClaimNames.Sub, username), new Claim(JwtRegisteredClaimNames.Jti, await _options.NonceGenerator()), new Claim(JwtRegisteredClaimNames.Iat, new DateTimeOffset(now).ToUniversalTime().ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64) }; // Create the JWT and write it to a string var jwt = new JwtSecurityToken( issuer: _options.Issuer, audience: _options.Audience, claims: claims, notBefore: now, expires: now.Add(_options.Expiration), signingCredentials: _options.SigningCredentials); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); var response = new { access_token = encodedJwt, expires_in = (int)_options.Expiration.TotalSeconds }; // Serialize and return the response context.Response.ContentType = "application/json"; await context.Response.WriteAsync(JsonConvert.SerializeObject(response, _serializerSettings)); }
private async Task GenerateToken(HttpContext context) { //var username = context.Request.Form["username"]; //admin //var password = context.Request.Form["password"]; //gwtsoft //var _loginType = context.Request.Form["LoginType"]; LoginDataModel loginData = new LoginDataModel(); string username = ""; string password = ""; string _loginType = ""; string MemberID = ""; string MemberNo = ""; try { using (var reader = new System.IO.StreamReader(context.Request.Body)) { var request_body = reader.ReadToEnd(); loginData = JsonConvert.DeserializeObject <LoginDataModel>(request_body, _serializerSettings); if (loginData.username == null) { loginData.username = ""; } if (loginData.password == null) { loginData.password = ""; } if (loginData.LoginType == null) { loginData.LoginType = ""; } username = loginData.username; password = loginData.password; _loginType = loginData.LoginType; } } catch (Exception ex) { string error = ex.Message; } string ipaddress = "127.0.0.1"; // set ipaddress if (context.Connection.RemoteIpAddress != null) { ipaddress = context.Connection.RemoteIpAddress.ToString(); } string clienturl = context.Request.Headers["Referer"]; dynamic result = null; string ipaddresslist = ""; if (_loginType == "1") { result = doAdminTypeloginValidation(username, password, clienturl, ipaddress); if (result == null || result.Count <= 0) { context.Response.StatusCode = 400; await context.Response.WriteAsync("Invalid username or password."); return; } if (result[0].access_status == 1) { context.Response.StatusCode = 400; await context.Response.WriteAsync("This user account is deleted."); return; } if (result[0].access_status == 2) { context.Response.StatusCode = 400; await context.Response.WriteAsync("This user account is locked.Please check your email to unlock your account!!!"); return; } ipaddresslist = result[0].restricted_iplist; } else if (_loginType == "2") { result = doCustomerTypeloginValidation(username, password, clienturl, ipaddress); if (result == null || result.Count <= 0) { context.Response.StatusCode = 400; string Message = "Invalid username or password."; var objresponse = new { status = 0, messages = Message }; await context.Response.WriteAsync(JsonConvert.SerializeObject(objresponse)); // await context.Response.WriteAsync("Invalid username or password."); return; } if (result[0].access_status == 1) { context.Response.StatusCode = 400; string Message = "This user account is deleted."; var objresponse = new { status = 0, messages = Message }; await context.Response.WriteAsync(JsonConvert.SerializeObject(objresponse)); // await context.Response.WriteAsync("This user account is deleted."); return; } if (result[0].access_status == 2) { context.Response.StatusCode = 400; string Message = "This user account is locked.Please check your email to unlock your account!!!"; var objresponse = new { status = 0, messages = Message }; await context.Response.WriteAsync(JsonConvert.SerializeObject(objresponse)); // await context.Response.WriteAsync("This user account is locked.Please check your email to unlock your account!!!"); return; } } else { // result = (_repository.Member.GetMemberLoginValidation(username)).ToList(); if (result.Count > 0) { MemberID = result[0].memberID.ToString(); MemberNo = result[0].memberNo; } if (result == null || result.Count <= 0) { context.Response.StatusCode = 400; await context.Response.WriteAsync("Invalid username or password."); return; } if (result[0].access_status == 1) { context.Response.StatusCode = 400; await context.Response.WriteAsync("This user account is deleted."); return; } if (result[0].access_status == 2) { context.Response.StatusCode = 400; await context.Response.WriteAsync("This user account is locked.Please check your email to unlock your account!!!"); return; } } Boolean sameip = true; if (ipaddresslist != "" && ipaddresslist != null) { sameip = false; string[] ipaddressarr = ipaddresslist.Split(','); for (int ip_index = 0; ip_index < ipaddressarr.Length; ip_index++) { if (ipaddress == ipaddressarr[ip_index].Trim()) { sameip = true; break; } } } if (sameip == false) { context.Response.StatusCode = 400; await context.Response.WriteAsync("Your IP Address is invalid for this account."); return; } if (_loginType == "1") { string userID = result[0].AdminID.ToString(); var now = DateTime.UtcNow; var _tokenData = new TokenData(); _tokenData.Sub = result[0].AdminName; _tokenData.Jti = await _options.NonceGenerator(); _tokenData.Iat = new DateTimeOffset(now).ToUniversalTime().ToUnixTimeSeconds().ToString(); _tokenData.UserID = userID; _tokenData.Userlevelid = result[0].AdminLevelID.ToString(); //_tokenData.CompanyID = result[0].CompanyID; // _tokenData.branchID = result[0].branchID; _tokenData.LoginType = _loginType.ToString(); _tokenData.TicketExpireDate = now.Add(_options.Expiration); var claims = Globalfunction.GetClaims(_tokenData); // Create the JWT and write it to a string var jwt = new JwtSecurityToken( issuer: _options.Issuer, audience: _options.Audience, claims: claims, notBefore: now, expires: now.Add(_options.Expiration), signingCredentials: _options.SigningCredentials); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); var settingresult = (_repository.Setting.GetPasswordValidation()).ToList(); var pwdlength = settingresult[0].Value; var response = new { access_token = encodedJwt, expires_in = (int)_options.Expiration.TotalSeconds, UserID = userID, LoginType = _loginType, userLevelID = result[0].AdminLevelID, displayName = result[0].AdminName, CompanyID = result[0].CompanyID, //branchID = result[0].branchID, MemberID = MemberID, userImage = result[0].ImagePath, PWDLength = pwdlength.ToString() }; context.Response.ContentType = "application/json"; await context.Response.WriteAsync(JsonConvert.SerializeObject(response, _serializerSettings)); } else if (_loginType == "2") { string userID = result[0].customerID.ToString(); var now = DateTime.UtcNow; var _tokenData = new TokenData(); _tokenData.Sub = result[0].customername; _tokenData.Jti = await _options.NonceGenerator(); _tokenData.Iat = new DateTimeOffset(now).ToUniversalTime().ToUnixTimeSeconds().ToString(); _tokenData.UserID = userID; // _tokenData.branchID = result[0].branchID; _tokenData.LoginType = _loginType.ToString(); _tokenData.TicketExpireDate = now.Add(_options.Expiration); var claims = Globalfunction.GetClaims(_tokenData); // Create the JWT and write it to a string var jwt = new JwtSecurityToken( issuer: _options.Issuer, audience: _options.Audience, claims: claims, notBefore: now, expires: now.Add(_options.Expiration), signingCredentials: _options.SigningCredentials); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); var settingresult = (_repository.Setting.GetPasswordValidation()).ToList(); var pwdlength = settingresult[0].Value; var response = new { access_token = encodedJwt, expires_in = (int)_options.Expiration.TotalSeconds, UserID = userID, LoginType = Convert.ToInt32(_loginType), displayName = result[0].customername, CustomerID = result[0].customerID, LoginName = result[0].username, Customercode = result[0].customercode, PWDLength = pwdlength.ToString() }; var objresponse = new { status = 1, messages = "success", data = response }; context.Response.ContentType = "application/json"; // await context.Response.WriteAsync(JsonConvert.SerializeObject(response, _serializerSettings)); await context.Response.WriteAsync(JsonConvert.SerializeObject(objresponse, _serializerSettings)); } else { string memberID = result[0].memberID.ToString(); var now = DateTime.UtcNow; var _tokenData = new TokenData(); _tokenData.Sub = result[0].memberName; _tokenData.Jti = await _options.NonceGenerator(); _tokenData.Iat = new DateTimeOffset(now).ToUniversalTime().ToUnixTimeSeconds().ToString(); _tokenData.UserID = memberID; // _tokenData.Userlevelid = result[0].AdminLevelID.ToString(); //_tokenData.LoginType = _loginType.ToString(); _tokenData.TicketExpireDate = now.Add(_options.Expiration); var claims = Globalfunction.GetClaims(_tokenData); // Create the JWT and write it to a string var jwt = new JwtSecurityToken( issuer: _options.Issuer, audience: _options.Audience, claims: claims, notBefore: now, expires: now.Add(_options.Expiration), signingCredentials: _options.SigningCredentials); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); var settingresult = (_repository.Setting.GetPasswordValidation()).ToList(); var pwdlength = settingresult[0].Value; var response = new { access_token = encodedJwt, expires_in = (int)_options.Expiration.TotalSeconds, // UserID = userID, // LoginType = _loginType, // userLevelID = result[0].AdminLevelID, displayName = result[0].memberName, MemberID = MemberID, MemberNo = MemberNo, //userImage = result[0].ImagePath, PWDLength = pwdlength.ToString() }; context.Response.ContentType = "application/json"; await context.Response.WriteAsync(JsonConvert.SerializeObject(response, _serializerSettings)); } // Serialize and return the response }