Guia completo sobre o sistema de autenticação e autorização da BR-Dev, incluindo exemplos de implementação e boas práticas.
O processo de autenticação é baseado em tokens JWT, que são gerados no login e devem ser incluídos em todas as requisições subsequentes.
POST /api/auth/login
// Request{
"email": "[email protected]",
"password": "senha123"
}
// Response{
"token": "eyJhbGciOiJIUzI1NiIs...",
"user": {
"id": "123",
"name": "Usuário Exemplo",
"email": "[email protected]",
"role": "admin"
}
}
// Headers{
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIs..."
}
O controle de acesso é baseado em roles (papéis) que definem as permissões de cada usuário no sistema.
enum Role {
ADMIN // Acesso total ao sistema
MANAGER // Gestão de projetos e equipes
DEVELOPER // Acesso a recursos de desenvolvimento
CLIENT // Acesso ao portal do cliente
}
// Exemplo de uso do middleware
app.get('/api/admin', authorize(['ADMIN']), (req, res) => {
// Rota protegida, apenas admins podem acessar
});
app.get('/api/projects', authorize(['ADMIN', 'MANAGER']), (req, res) => {
// Rota acessível por admins e managers
});
import { useAuth } from '@/hooks/useAuth';
function ProtectedComponent() {
const { user, login, logout } = useAuth();
if (!user) {
return <Navigate to="/login" />;
}
return <div>Conteúdo protegido</div>;
}
function PrivateRoute({ children, roles }) {
const { user } = useAuth();
if (!user) {
return <Navigate to="/login" />;
}
if (roles && !roles.includes(user.role)) {
return <Navigate to="/unauthorized" />;
}
return children;
}