public async Task <IActionResult> LoginUser(FJC_LoginRequest fJC_Login) { try { await ManageRecaptcha.ValidateUser(fJC_Login.captcha); var result = await _loginService.LoginDataUser(fJC_Login); BSC_LoginResponse loginResponse = new BSC_LoginResponse() { Error = result.Rows[0]["Error"].ToString(), Audience = result.Rows[0]["Audience"].ToString(), EmailID = result.Rows[0]["EmailID"].ToString(), Name = result.Rows[0]["Name"].ToString(), Token = result.Rows[0]["Token"].ToString() }; if (loginResponse.Error.Trim() == string.Empty) { loginResponse.Token = Token_Handling.Generate_token(loginResponse); return(Ok(new { message = "User logged in successfully", data = loginResponse })); } else { switch (loginResponse.Error) { case "Multiple login requests": throw new CustomException.MultipleRequests(); case "Invalid User ID OR Password": throw new CustomException.InvalidPassword(); case "Invalid User ID": throw new CustomException.InvalidUserID(); default: throw new CustomException.InvalidAttempt(); } } } catch (Exception ex) { return((new HandleCatches()).ManageExceptions(ex)); } }
public static string Generate_token(BSC_LoginResponse loginResponse) { //normally this will be your site URL var issuer = "https://evoting.bigshareonline.com"; var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key)); var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256); //Create a List of Claims, Keep claims name short var permClaims = new List <Claim>(); permClaims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())); permClaims.Add(new Claim("ChecksumID", loginResponse.Token)); permClaims.Add(new Claim("Email", loginResponse.EmailID)); //Create Security Token object by giving required parameters var token = new JwtSecurityToken(issuer, //Issure issuer, //Audience permClaims, expires: DateTime.Now.AddMinutes(30), signingCredentials: credentials); return(new JwtSecurityTokenHandler().WriteToken(token)); }