@mostajs/auth-magic-qr
v0.1.0
Published
Connexion par QR (option A) : le QR encode un lien de connexion — badge PERSISTANT (jeton signé HMAC → endpoint de session) ou lien magique ÉPHÉMÈRE (écran). Compose @mostajs/auth (magic-link) + @mostajs/qrpanel (rendu) par injection. Membre de mosta-auth
Maintainers
Readme
@mostajs/auth-magic-qr
Auteur : Dr Hamid MADANI [email protected]
Connexion par QR — option A : le QR encode un lien de connexion. Deux usages, pilotables par l'hôte (.env) :
- Badge persistant — QR d'un jeton signé HMAC (
userId.exp.sig) → URL/login/qr?token=…; l'hôte le vérifie et ouvre une session. Idéal pour un badge physique (pépinière, événement).badgeTtl=0= sans expiration. - Lien éphémère — QR d'un magic-link frais (
@mostajs/auth) pour affichage à l'écran (scan = connexion sur mobile).
Composition (DEVRULES §10) : ne réimplémente RIEN — le magic-link vient de @mostajs/auth (injection requestMagicLink) et le rendu QR de @mostajs/qrpanel (injection renderQr). Membre de mosta-auth-stack (à côté de @mostajs/auth, auth-lite, auth-flow).
import { createAuthMagicQr } from '@mostajs/auth-magic-qr';
import { qrLive } from '@mostajs/qrpanel';
const aq = createAuthMagicQr({
secret: process.env.AUTH_QR_SECRET, baseUrl: 'https://market.amia.fr',
badgeTtl: 0, renderQr: (url) => qrLive(url, 'Scanner pour se connecter'),
requestMagicLink: (id) => auth.requestLink(id), // @mostajs/auth
});
const badge = aq.badgeQr('user-42'); // QR de badge (à imprimer)
// endpoint : GET /login/qr?token=… → const { userId } = aq.verifyBadge(token) ; ouvrir session.API : voir llms.txt. Tests : npm test (4). AGPL-3.0-or-later.
