AgentSkillsCN

auth-access

为多租户会计事务所实施JWT/刷新令牌认证、RBAC角色管理,以及安全的邀请机制。关键词:登录、注册、刷新令牌、重置密码、邀请、角色、权限。

SKILL.md
--- frontmatter
name: auth-access
description: Implémentation auth JWT/refresh, rôles RBAC et invitations sécurisées pour cabinet comptable multi-tenant. Mots-clés: login, register, refresh token, reset password, invitation, roles, permissions.

Skill: Authentification & Accès

Utilise ce skill pour toute tâche liée à l’authentification, aux rôles et aux permissions.

Quand l’utiliser

  • Création des endpoints register, login, refresh, logout, forgot-password, reset-password
  • Mise en place JWT access token court + refresh token en cookie httpOnly
  • Contrôle d’accès par rôles SUPER_ADMIN, CABINET_ADMIN, COLLABORATEUR, CLIENT
  • Invitation collaborateur/client par email avec token signé à durée limitée

Règles d’implémentation

  1. Préfixer les routes avec /api/v1.
  2. Réponse API uniforme:
    • Succès: { success: true, data, meta? }
    • Erreur: { success: false, error: { code, message } }
  3. Access token: durée courte (ex. 15 min), refresh token longue durée (ex. 30 jours).
  4. Stocker le refresh token en cookie httpOnly, secure, sameSite.
  5. Valider toutes les entrées avec Zod avant logique métier.
  6. Vérifier les permissions à deux niveaux: middleware de route + service.
  7. Journaliser les actions sensibles (auth.login, auth.reset-password, auth.invite).

Flux attendus

  • Inscription cabinet: crée organisation + admin cabinet atomiquement.
  • Connexion: retourne access token, pose cookie refresh, met à jour lastLoginAt.
  • Refresh: vérifie token, rotation du refresh token, invalide ancien.
  • Invitation: génère token 48h, email sécurisé, activation compte au premier login.
  • Reset password: token one-time, expiration stricte, invalidation post-usage.

Points de sécurité

  • Rate limit renforcé sur endpoints auth.
  • Hash de mot de passe avec bcryptjs.
  • Messages d’erreur non verbeux (éviter l’énumération d’emails).
  • Invalidation des sessions à la déconnexion.

Exemples de demandes

  • « Ajoute l’endpoint /api/v1/auth/refresh avec rotation du refresh token »
  • « Implémente un middleware RBAC pour limiter la validation d’écritures »
  • « Crée le flux invitation client avec lien expirant 48h »