@fonderie/auth 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60,6 +60,7 @@ interface IAuthConfig extends IAuthSecrets, IAuthRuntimeConfig {
60
60
  resolve?: (ctx: {
61
61
  meta: Record<string, unknown>;
62
62
  }) => Partial<IAuthRuntimeConfig>;
63
+ routes?: Partial<Record<AuthRouteId, AuthRouteOverride>>;
63
64
  }
64
65
 
65
66
  interface IAuthSecrets {
package/dist/index.cjs CHANGED
@@ -1939,44 +1939,42 @@ function buildAuthRoutes(store, config, bus) {
1939
1939
  const passthrough = (_ctx, next) => next();
1940
1940
  const ipLimit = (route) => buildAuthIpLimiter(route, store, config.rateLimit) ?? passthrough;
1941
1941
  const acctLimit = (route) => buildAuthAccountLimiter(route, store, config.rateLimit) ?? passthrough;
1942
+ const R = (id, method, path, ...handlers) => {
1943
+ const o = config.routes?.[id];
1944
+ if (!o) return [method, path, ...handlers];
1945
+ if (typeof o === "string") return [method, o, ...handlers];
1946
+ return [o.method ?? method, o.path ?? path, ...handlers];
1947
+ };
1942
1948
  const routes = [
1943
1949
  // Registration & Login (Public)
1944
- ["POST", "/auth/register", ipLimit("register"), (0, import_middlewares.validate)(registerSchema), auth.register],
1945
- ["POST", "/auth/login", ipLimit("login"), (0, import_middlewares.validate)(loginSchema), acctLimit("login"), auth.login],
1950
+ R("register", "POST", "/auth/register", ipLimit("register"), (0, import_middlewares.validate)(registerSchema), auth.register),
1951
+ R("login", "POST", "/auth/login", ipLimit("login"), (0, import_middlewares.validate)(loginSchema), acctLimit("login"), auth.login),
1946
1952
  // Token Management (Public)
1947
- ["POST", "/auth/refresh", (0, import_middlewares.validate)(refreshSchema), auth.refresh],
1953
+ R("refresh", "POST", "/auth/refresh", (0, import_middlewares.validate)(refreshSchema), auth.refresh),
1948
1954
  // Email — Password Recovery (Public)
1949
- ["POST", "/auth/email/forgot", ipLimit("forgot"), (0, import_middlewares.validate)(forgotPasswordSchema), acctLimit("forgot"), auth.forgotPassword],
1950
- ["POST", "/auth/email/reset", (0, import_middlewares.validate)(resetPasswordSchema), auth.resetPassword],
1955
+ R("forgotPassword", "POST", "/auth/email/forgot", ipLimit("forgot"), (0, import_middlewares.validate)(forgotPasswordSchema), acctLimit("forgot"), auth.forgotPassword),
1956
+ R("resetPassword", "POST", "/auth/email/reset", (0, import_middlewares.validate)(resetPasswordSchema), auth.resetPassword),
1951
1957
  // Verification (Protected — email or phone, determined by loginMethod)
1952
- ["POST", "/auth/verify", import_middlewares2.requireAuth, (0, import_middlewares.validate)(verifySchema), auth.verify],
1953
- ["GET", "/auth/send-verification", import_middlewares2.requireAuth, auth.sendVerification],
1958
+ R("verifyEmail", "POST", "/auth/verify", import_middlewares2.requireAuth, (0, import_middlewares.validate)(verifySchema), auth.verify),
1959
+ R("sendVerification", "GET", "/auth/send-verification", import_middlewares2.requireAuth, auth.sendVerification),
1954
1960
  // Account Management (Protected)
1955
- ["POST", "/auth/logout", import_middlewares2.requireAuth, (0, import_middlewares.validate)(refreshSchema), auth.logout],
1961
+ R("logout", "POST", "/auth/logout", import_middlewares2.requireAuth, (0, import_middlewares.validate)(refreshSchema), auth.logout),
1956
1962
  // User Profile (Protected; writes also gate on requireVerification)
1957
- ["GET", "/users", import_middlewares2.requireAuth, user.me],
1958
- ["PUT", "/users/profile", import_middlewares2.requireAuth, verifyGate, (0, import_middlewares.validate)(updateProfileSchema), user.updateProfile],
1959
- ["PUT", "/users/preferences", import_middlewares2.requireAuth, verifyGate, (0, import_middlewares.validate)(updatePreferencesSchema), user.updatePreferences],
1960
- ["PUT", "/users/email", import_middlewares2.requireAuth, verifyGate, (0, import_middlewares.validate)(updateEmailSchema), user.updateEmail],
1961
- ["PUT", "/users/phone", import_middlewares2.requireAuth, verifyGate, (0, import_middlewares.validate)(updatePhoneSchema), user.updatePhone],
1962
- ["PUT", "/users/password", import_middlewares2.requireAuth, (0, import_middlewares.validate)(changePasswordSchema), user.changePassword],
1963
- ["DELETE", "/users", import_middlewares2.requireAuth, verifyGate, user.deleteMe],
1963
+ R("me", "GET", "/users", import_middlewares2.requireAuth, user.me),
1964
+ R("updateProfile", "PUT", "/users/profile", import_middlewares2.requireAuth, verifyGate, (0, import_middlewares.validate)(updateProfileSchema), user.updateProfile),
1965
+ R("updatePreferences", "PUT", "/users/preferences", import_middlewares2.requireAuth, verifyGate, (0, import_middlewares.validate)(updatePreferencesSchema), user.updatePreferences),
1966
+ R("updateEmail", "PUT", "/users/email", import_middlewares2.requireAuth, verifyGate, (0, import_middlewares.validate)(updateEmailSchema), user.updateEmail),
1967
+ R("updatePhone", "PUT", "/users/phone", import_middlewares2.requireAuth, verifyGate, (0, import_middlewares.validate)(updatePhoneSchema), user.updatePhone),
1968
+ R("changePassword", "PUT", "/users/password", import_middlewares2.requireAuth, (0, import_middlewares.validate)(changePasswordSchema), user.changePassword),
1969
+ R("deleteMe", "DELETE", "/users", import_middlewares2.requireAuth, verifyGate, user.deleteMe),
1964
1970
  // MFA (email sessions only — requireVerified is always enforced here
1965
1971
  // because MFA is a security feature and email verification is meaningful)
1966
- ["POST", "/auth/mfa/setup", import_middlewares2.requireAuth, requireEmailLogin, import_middlewares2.requireVerified, mfa.setup],
1972
+ R("mfaSetup", "POST", "/auth/mfa/setup", import_middlewares2.requireAuth, requireEmailLogin, import_middlewares2.requireVerified, mfa.setup),
1967
1973
  // /auth/mfa/verify accepts both mfaPending tokens (TOTP/backup-code login)
1968
1974
  // and full tokens (setup confirmation), so requireAnyAuth is used here.
1969
- ["POST", "/auth/mfa/verify", ipLimit("mfaVerify"), import_middlewares2.requireAnyAuth, requireEmailLogin, import_middlewares2.requireVerified, (0, import_middlewares.validate)(mfaTokenSchema), mfa.verify],
1970
- ["POST", "/auth/mfa/disable", import_middlewares2.requireAuth, requireEmailLogin, import_middlewares2.requireVerified, (0, import_middlewares.validate)(mfaTokenSchema), mfa.disable],
1971
- [
1972
- "POST",
1973
- "/auth/mfa/backup-codes",
1974
- import_middlewares2.requireAuth,
1975
- requireEmailLogin,
1976
- import_middlewares2.requireVerified,
1977
- (0, import_middlewares.validate)(mfaTokenSchema),
1978
- mfa.regenerateBackupCodes
1979
- ]
1975
+ R("mfaVerify", "POST", "/auth/mfa/verify", ipLimit("mfaVerify"), import_middlewares2.requireAnyAuth, requireEmailLogin, import_middlewares2.requireVerified, (0, import_middlewares.validate)(mfaTokenSchema), mfa.verify),
1976
+ R("mfaDisable", "POST", "/auth/mfa/disable", import_middlewares2.requireAuth, requireEmailLogin, import_middlewares2.requireVerified, (0, import_middlewares.validate)(mfaTokenSchema), mfa.disable),
1977
+ R("mfaBackupCodes", "POST", "/auth/mfa/backup-codes", import_middlewares2.requireAuth, requireEmailLogin, import_middlewares2.requireVerified, (0, import_middlewares.validate)(mfaTokenSchema), mfa.regenerateBackupCodes)
1980
1978
  ];
1981
1979
  if (config.providers.includes("google")) {
1982
1980
  routes.push(