Ejemplo n.º 1
0
        public async Task <LoginResponse> Authentication(LoginRequest login)
        {
            var user = _userRepository.GetByCondition(u => u.Email.Equals(login.Email) && u.Password.Equals(login.Password)).Result.FirstOrDefault();

            if (user is null)
            {
                AddError("Login invalid");
                return(null);
            }

            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_jwtConfiguration.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Sid, user.Id.ToString()),
                    new Claim(ClaimTypes.Email, user.Email),
                    new Claim(ClaimTypes.Role, user.Role.Name)
                }),
                //Expires = DateTime.UtcNow.AddHours(2),
                Expires            = DateTime.UtcNow.AddSeconds(60),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(await Task.FromResult(new LoginResponse(tokenHandler.WriteToken(token))));
        }