Communitygithub.com

YepAPI/skills

Autorisation RBAC — gardes middleware, refus par défaut, vérifications des permissions au niveau des ressources.

Qu'est-ce que skills ?

Cette compétence implémente un système d'autorisation RBAC (Role-Based Access Control) strict pour les API. Elle impose des vérifications de permissions sur chaque route via un middleware, refuse l'accès par défaut si aucune permission explicite n'est accordée, et effectue des contrôles au niveau des ressources (par exemple, un éditeur ne peut modifier que ses propres contenus). Elle est conçue pour les serveurs Node.js utilisant Express ou des frameworks similaires, et met l'accent sur la sécurité côté serveur, la journalisation des audits, et la séparation entre l'authentification et l'autorisation. La compétence fournit des fonctions utilitaires (`can`) et un middleware (`requirePermission`) qui implémentent une hiérarchie de rôles (admin > éditeur > lecteur) avec héritage des permissions. Elle déconseille les vérifications uniquement côté UI, l'utilisation d'un booléen `isAdmin`, et l'oubli des contrôles au niveau des ressources, expliquant pourquoi ces pratiques sont dangereuses.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Autorisation RBAC

Règles

  • Vérifier les permissions sur CHAQUE route avec un middleware — ne jamais rendre l'autorisation optionnelle
  • Refuser par défaut : si aucune permission explicite n'est accordée, l'accès est refusé
  • Application côté serveur : masquer les éléments d'interface utilisateur n'est PAS de la sécurité, vérifier sur le serveur
  • Définir une hiérarchie de rôles : admin > éditeur > lecteur — les rôles supérieurs héritent des permissions inférieures
  • Contrôles au niveau des ressources : vérifier can(user, "edit", ressource) — pas seulement un accès basé sur le rôle
  • Auditer toutes les vérifications de permissions — journaliser qui a accédé à quoi et quand, en particulier pour les actions d'administration
  • Séparer l'authentification (qui êtes-vous ?) de l'autorisation (que pouvez-vous faire ?)
// Fonction utilitaire de vérification des permissions
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;
  // Vérification au niveau de la ressource : les éditeurs ne peuvent modifier que leurs propres ressources
  if (resource && action !== "read" && user.role !== "admin") {
    return resource.ownerId === user.id;
  }
  return true;
}
// Middleware de garde Express
function requirePermission(action: Action) {
  return (req, res, next) => {
    if (!req.user) return res.status(401).json({ error: "Non authentifié" });
    if (!can(req.user, action, req.resource)) {
      return res.status(403).json({ error: "Interdit" });
    }
    next();
  };
}

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

À Éviter

  • Vérifier les permissions uniquement dans l'interface utilisateur — les attaquants appellent votre API directement
  • Autoriser l'accès sauf s'il est explicitement refusé — toujours refuser par défaut
  • Utiliser un seul booléen isAdmin — les rôles doivent être granulaires et extensibles
  • Oublier les contrôles au niveau des ressources — "éditeur" ne doit pas signifier "peut modifier le contenu de tout le monde"
  • Ignorer l'autorisation sur les points d'accès "internes" — ils deviennent publics à la fin

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 associés