public async Task <IActionResult> Login([FromBody] CredencialesDto credencialesDto)
        {
            var usuario = await _context.tbl_usuarios.FirstOrDefaultAsync(x => x.Usuario == credencialesDto.usuario);

            if (usuario == null)
            {
                return(StatusCode(400, new { Mensaje = "Usuario o Contraseña incorrecto" }));
            }

            if (usuario.Pass != credencialesDto.contrasena)
            {
                return(StatusCode(400, new { Mensaje = "Usuario o Contraseña incorrecto" }));
            }

            if (usuario.Habilitado == 0)
            {
                return(StatusCode(400, new { Mensaje = "Usuario inhabilitado, pongase en contacto con el administrador del sistema" }));
            }

            if (usuario.Nivel == 1)
            {
                return(StatusCode(400, new { Mensaje = "No posee el nivel de autorizacion para ingresar a este modulo" }));
            }


            var claims = new List <Claim>
            {
                new Claim("id", usuario.Id.ToString()),
                new Claim("nombre", usuario.Nombres),
                new Claim("identificacion", usuario.Cedula),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(ClaimTypes.Role, usuario.Nivel.ToString())
            };



            var key         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["jwt"]));
            var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expires     = DateTime.UtcNow.AddMinutes(60); // Tiempo de expiracion

            var jwtToken = new JwtSecurityToken(
                issuer: null,
                audience: null,
                claims: claims,
                expires: expires,
                signingCredentials: credentials);

            var token = new JwtSecurityTokenHandler().WriteToken(jwtToken);

            TokenDto autorizacion = new TokenDto();

            autorizacion.Token      = token;
            autorizacion.Expiration = expires;

            return(Ok(new { Autorizacion = autorizacion }));
        }
Beispiel #2
0
        public UsuarioDto Autenticar(CredencialesDto dto)
        {
            try
            {
                Usuario usuario = _usuarioRepository.GetBy(dto.Correo, dto.Contraseña);
                if (usuario == null)
                {
                    throw new Exception("Correo o contraseña no son validos.");
                }

                return(usuario.ToDto());
            }
            catch (Exception e)
            {
                throw new Exception("Error al intentar autenticar al usuario.", e);
            }
        }