API RESTful em PHP para gestão de livraria, com autenticação JWT e controle de acesso baseado em papéis/permissões (RBAC).
- Autenticação de usuário → emissão de token JWT.
- Verificação de token nas requisições para endpoints protegidos.
- Papéis (roles) e permissões associadas.
- Endpoints CRUD para entidades como Livros, Usuários, etc.
├── config/ → arquivos de configuração (ex: chave JWT, credenciais BD, definições de roles/permissões)
├── controller/ → lógica dos endpoints / controladores
├── entities/ → modelos / entidades de dados
├── models/ → acesso e manipulação de dados no banco
├── util/ → funções utilitárias (JWT, verificação de permissão, etc.)
├── index.php → ponto de entrada da API
├── testRole.php → script para testar roles / permissões
├── bookstore.sql → script SQL para criar base e tabelas iniciais
└── README.md → documentação do projeto
- PHP >= 7.4 (ou versão que o projeto suporte)
- Extensões PHP: pdo(mais driver do SGBD, ex:pdo_mysql),opensslou similar para JWT
- Composer (se estiver usando pacotes externos)
- Servidor web local ou uso do servidor embutido do PHP
git clone https://github.com/CodeShark37/PHP-Library-API.git
cd PHP-Library-APIcomposer install- 
Definir chave secreta JWT no(s) arquivo(s) de configuração 
- 
Ajustar credenciais do banco de dados (host, usuário, senha, nome do DB) 
- 
Definir roles/permissões iniciais 
- 
Possivelmente configurar tempo de expiração do token JWT 
- 
Fazer login → receber token JWT 
- 
Enviar requisições protegidas incluindo no cabeçalho HTTP: 
Authorization: Bearer <seu_token_jwt>
- 
Executar testRole.php para validar funcionamento de roles / permissões 
- 
Usar Postman ou cURL para testar os endpoints: 
curl -X POST http://localhost:8000/login \
  -H "Content-Type: application/json" \
  -d '{"username":"usuario","password":"senha"}'Em seguida, usar o token para acessar outros endpoints protegidos.
- 
Usar bookstore.sql para criar as tabelas iniciais necessárias 
- 
Garantir que as credenciais definidas na configuração batem com o ambiente local 
- 
Contribuições são bem-vindas! Siga: 
- 
Fazer fork 
- 
Criar branch para a feature ou correção (git checkout -b minha-feature) 
- 
Fazer commits descritivos 
- 
Abrir pull request explicando as mudanças 
- 
Testar antes de submeter