Example #1
0
        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));
        }