Communitygithub.com

YepAPI/roles

Autorización RBAC — guardas de middleware, denegar por defecto, verificaciones de permisos a nivel de recurso.

¿Qué es roles?

Este skill proporciona una implementación sólida de control de acceso basado en roles (RBAC) para APIs REST. Está diseñado para desarrolladores que construyen aplicaciones web o APIs con Node.js/Express (TypeScript) y necesitan un enfoque sistemático de autorización. El skill impone un principio de denegación por defecto, garantizando que ningún endpoint quede desprotegido accidentalmente. Define una jerarquía de roles (admin > editor > viewer) donde los roles superiores heredan permisos de los inferiores. Además de verificaciones a nivel de rol, incluye comprobaciones a nivel de recurso, por ejemplo, que un editor solo pueda modificar sus propios recursos. El skill también recomienda auditoría de todas las comprobaciones de permisos, separación clara entre autenticación y autorización, y evitar errores comunes como ocultar elementos de la interfaz de usuario en lugar de aplicar la seguridad en el servidor. Es adecuado para equipos que buscan una guía práctica y ejemplos de código reutilizables para middleware de Express, especialmente al manejar datos de usuario sensibles o múltiples roles con permisos granulares.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/rbac-authorization

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Autorización RBAC

Reglas

  • Verifica los permisos en CADA ruta con middleware — nunca hagas la autorización opcional
  • Denegar por defecto: si no se concede un permiso explícito, se deniega el acceso
  • Aplicación del lado del servidor: ocultar elementos de la interfaz de usuario NO es seguridad, verifica en el servidor
  • Define una jerarquía de roles: admin > editor > viewer — los roles superiores heredan permisos inferiores
  • Verificaciones a nivel de recurso: verifica can(user, "edit", resource) — no solo acceso basado en rol
  • Audita todas las comprobaciones de permisos — registra quién accedió a qué y cuándo, especialmente para acciones de administración
  • Separa la autenticación (¿quién eres?) de la autorización (¿qué puedes hacer?)
// Ayudante de comprobación de permisos
type Action = "read" | "create" | "update" | "delete";
type Resource = { ownerId: string; [key: string]: any };

function can(user: { id: string; role: string }, action: Action, resource?: Resource): boolean {
  const permissions: Record<string, Action[]> = {
    admin: ["read", "create", "update", "delete"],
    editor: ["read", "create", "update"],
    viewer: ["read"],
  };
  const allowed = permissions[user.role];
  if (!allowed?.includes(action)) return false;
  // Verificación a nivel de recurso: los editores solo pueden modificar sus propios recursos
  if (resource && action !== "read" && user.role !== "admin") {
    return resource.ownerId === user.id;
  }
  return true;
}
// Guardia de middleware Express
function requirePermission(action: Action) {
  return (req, res, next) => {
    if (!req.user) return res.status(401).json({ error: "No autenticado" });
    if (!can(req.user, action, req.resource)) {
      return res.status(403).json({ error: "Prohibido" });
    }
    next();
  };
}

app.put("/api/posts/:id", loadResource, requirePermission("update"), updatePost);

Evitar

  • Verificar permisos solo en la interfaz de usuario — los atacantes llaman a tu API directamente
  • Permitir el acceso a menos que se deniegue explícitamente — siempre denegar por defecto
  • Usar un solo booleano isAdmin — los roles deben ser granulares y extensibles
  • Olvidar las verificaciones a nivel de recurso — "editor" no debería significar "puede editar el contenido de todos"
  • Omitir la autorización en endpoints "internos" — eventualmente se vuelven públicos

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Skills relacionados