Exemplo n.º 1
0
        /// <summary>
        /// Login Authenticate
        /// </summary>
        /// <param name="request">user name and Password</param>
        /// <returns> value </returns>
        public async Task <APIResponse <string> > Authenticate(APIUserLoginRequest request)
        {
            string  userName = request.UserName;
            AppUser user     = null;
            bool    flag     = false;

            user = await _userManager.FindByNameAsync(userName);

            if (user == null)
            {
                flag = false;
            }
            else
            {
                SignInResult result = await _signInManager
                                      .PasswordSignInAsync(request.UserName, request.Password, request.IsRememberMe, true);

                if (!result.Succeeded)
                {
                    flag = false;
                }
                else
                {
                    flag = true;
                }
            }

            if (!flag)
            {
                return(new APIResponse <string>()
                {
                    Message = "User name or Password is correct !",
                    ResponseBody = null
                });
            }

            IList <string> roles = await _userManager.GetRolesAsync(user);

            var claims = new[]
            {
                new Claim(ClaimTypes.Email, user.Email),
                new Claim(ClaimTypes.GivenName, user.FirstName),
                new Claim(ClaimTypes.Role, string.Join(";", roles)),
                new Claim(ClaimTypes.Name, request.UserName)
            };
            SymmetricSecurityKey key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Tokens:Key"]));
            SigningCredentials   creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            JwtSecurityToken token = new JwtSecurityToken(_config["Tokens:Issuer"],
                                                          _config["Tokens:Issuer"],
                                                          claims,
                                                          expires: DateTime.Now.AddMinutes(30),
                                                          signingCredentials: creds);

            return(new APIResponse <string>()
            {
                Message = null,
                ResponseBody = new JwtSecurityTokenHandler().WriteToken(token)
            });
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Authenticate([FromBody] APIUserLoginRequest userLoginRequest)
        {
            APIResponse <string> result = await _userService.Authenticate(userLoginRequest);

            return(Ok(result));
        }