From codigo
Implementar um sistema completo de autenticação e autorização — com login, registro, tokens JWT, refresh tokens, roles e permissões — seguindo boas práticas de segurança, para proteger os recursos da aplicação.
How this skill is triggered — by the user, by Claude, or both
Slash command
/codigo:autenticacao-e-autorizacao-implementacaoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Implementar um sistema completo de autenticação e autorização — com login, registro, tokens JWT, refresh tokens, roles e permissões — seguindo boas práticas de segurança, para proteger os recursos da aplicação.
Implementar um sistema completo de autenticação e autorização — com login, registro, tokens JWT, refresh tokens, roles e permissões — seguindo boas práticas de segurança, para proteger os recursos da aplicação.
Você é um engenheiro de segurança que implementa sistemas de autenticação robustos. Seus princípios: (1) nunca invente criptografia — use bibliotecas comprovadas (bcrypt, argon2, jose), (2) defesa em profundidade — múltiplas camadas de proteção, (3) princípio do menor privilégio — cada role tem acesso mínimo necessário, (4) tokens com vida curta — access token expira rápido, refresh token renova, (5) falhe de forma segura — em caso de dúvida, negar acesso.
Implemente o sistema de autenticação para:
**Stack:** [ex: Node.js/Express, Python/FastAPI, Go/Gin]
**Banco de dados:** [PostgreSQL, MongoDB, MySQL]
**ORM:** [Prisma, SQLAlchemy, GORM]
**Tipo de auth:** [JWT, session-based, OAuth2 — ou recomendar]
**Tipos de usuário:** [ex: admin, manager, user, viewer]
**Permissões:** [o que cada tipo pode fazer]
**Requisitos especiais:** [2FA, OAuth social, magic link, API keys]
**Frontend:** [SPA, SSR, mobile — afeta onde guardar tokens]
Entregue:
**1. Arquitetura do sistema** - Diagrama do fluxo completo
**2. Schema do banco** - Tabelas users, refresh_tokens, roles
**3. Endpoints da API** - register, login, refresh, logout, forgot/reset password
**4. Middleware de autenticação** - Validar JWT, injetar usuário
**5. Middleware de autorização** - Verificar roles e permissões
**6. Segurança implementada** - Checklist de boas práticas
**7. Código completo** - Implementação funcional de cada componente
**8. Testes** - Cenários críticos de auth
Stack: Node.js/Express + TypeScript Banco: PostgreSQL com Prisma Auth: JWT (access + refresh) Roles: admin (tudo), editor (CRUD conteúdo), viewer (leitura) Frontend: React SPA
import { Request, Response, NextFunction } from 'express'; import jwt from 'jsonwebtoken';
interface JwtPayload { userId: string; role: string; }
export function authenticate(req: Request, res: Response, next: NextFunction) { const header = req.headers.authorization; if (!header?.startsWith('Bearer ')) { return res.status(401).json({ error: { code: 'MISSING_TOKEN', message: 'Token de autenticação não fornecido.' } }); }
const token = header.split(' ')[1];
try { const payload = jwt.verify(token, process.env.JWT_SECRET!) as JwtPayload; req.user = { id: payload.userId, role: payload.role }; next(); } catch (err) { if (err instanceof jwt.TokenExpiredError) { return res.status(401).json({ error: { code: 'TOKEN_EXPIRED', message: 'Token expirado. Use o refresh token.' } }); } return res.status(401).json({ error: { code: 'INVALID_TOKEN', message: 'Token inválido.' } }); } }
export function authorize(...allowedRoles: string[]) { return (req: Request, res: Response, next: NextFunction) => { if (!allowedRoles.includes(req.user.role)) { return res.status(403).json({ error: { code: 'FORBIDDEN', message: 'Sem permissão para acessar este recurso.' } }); } next(); }; }
// Uso: router.get('/admin/users', authenticate, authorize('admin'), listUsers);
Tags: Intermediário | Template | Código, Dev & Automação
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
npx claudepluginhub tiagopgr/skills-ia --plugin codigo