Services
Services
Users
Gère les comptes utilisateurs, la garde des jetons Twitch, le statut d’accès, le staff et la délégation.
Sur cette page
Le service Users (app/db/users/) est l’autorité centrale de gestion des identités dans ItsBagelBot.
Architecture
- Propriété : possède le schéma MySQL Users contenant les identifiants Twitch, les préférences, les jetons OAuth et l’e-mail de contact chiffrés, les statuts des comptes, les attributions Premium promotionnelles, les rôles du staff avec un journal d’audit et les délégations du tableau de bord.
- Niveaux de statut : détermine si un compte est
free,paidouvip, ce qui régit son accès aux fonctionnalités Premium ou aux voies de routage.paidpeut venir d’un abonnement Tebex ou d’une attribution de concours ;vipest permanent. - Événements : publie
data.users.changed(avec une révision d’état) etdata.users.deleted, et diffuse des invalidations de cache. Les services fonctionnels nettoient eux-mêmes leurs données après une suppression. - RPC : sert le tableau de bord (
bagel.rpc.dashboard.*), les opérations admin sur les comptes (bagel.rpc.admin.user.*), l’application de la facturation (bagel.rpc.internal.billing.apply), l’éligibilité et les attributions des concours, la délégation et la projection sans secret (bagel.rpc.internal.projection.users.get). - Coffre de jetons : gère les jetons OAuth Twitch sensibles. Il sert de coffre interne ; les autres services, comme Outgress, interrogent Users de façon sécurisée par RPC NATS (
bagel.rpc.internal.tokens.*, opérationsgetetsave) afin d’obtenir un accès pour agir au nom de l’utilisateur. Les jetons et les e-mails de contact sont chiffrés au repos.
Authentification entre services
L’autorisation NATS restreint l’accès aux sujets bagel.rpc.internal.tokens.*. Seuls les services autorisés, Twitch Outgress et Users lui-même, peuvent accéder à ces sujets, ce qui protège strictement les jetons en clair au sein du cluster.