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 })); }
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); } }