public IActionResult Post(RequestLoginDto userInfo)
 {
     try
     {
         return(new JsonResult(_service.Login(userInfo))
         {
             StatusCode = 201
         });
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
Exemple #2
0
        public ResponseLoginDto Login(RequestLoginDto userInfo)
        {
            Usuario user = _query.GetUserByDNI(userInfo.Dni);

            if (user != null && user.Password == Utils.Encryption(userInfo.Password))
            {
                var secretKey = _configuration.GetSection("SecretKey").Value;
                var key       = Encoding.ASCII.GetBytes(secretKey);

                var claims = new[]
                {
                    new Claim("User", JsonConvert.SerializeObject(user))
                };

                var identity = new ClaimsIdentity(new GenericIdentity(user.DNI, "Auth"), claims);

                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject            = identity,
                    Expires            = DateTime.UtcNow.AddDays(1),
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature),
                    IssuedAt           = DateTime.UtcNow
                };

                var tokenHandler = new JwtSecurityTokenHandler();
                var createdToken = tokenHandler.CreateToken(tokenDescriptor);

                ResponseUserLoginDto usuarioResponse = new ResponseUserLoginDto
                {
                    Id        = user.Id,
                    Nombres   = user.Nombres,
                    Apellidos = user.Apellidos,
                    DNI       = user.DNI,
                    RolId     = user.RolId
                };

                return(new ResponseLoginDto {
                    Token = tokenHandler.WriteToken(createdToken), Usuario = usuarioResponse
                });
            }

            throw new Exception("El DNI o contraseña ingresado es incorrecto");
        }