@electr0zed/auth-gateway-cf 0.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.
Files changed (110) hide show
  1. package/README.md +59 -0
  2. package/dist/auth/index.d.ts +84 -0
  3. package/dist/auth/index.d.ts.map +1 -0
  4. package/dist/auth/index.js +609 -0
  5. package/dist/auth/index.js.map +1 -0
  6. package/dist/auth/pkceState.d.ts +40 -0
  7. package/dist/auth/pkceState.d.ts.map +1 -0
  8. package/dist/auth/pkceState.js +75 -0
  9. package/dist/auth/pkceState.js.map +1 -0
  10. package/dist/config.example.d.ts +2 -0
  11. package/dist/config.example.d.ts.map +1 -0
  12. package/dist/config.example.js +83 -0
  13. package/dist/config.example.js.map +1 -0
  14. package/dist/core/gateway.d.ts +11 -0
  15. package/dist/core/gateway.d.ts.map +1 -0
  16. package/dist/core/gateway.js +97 -0
  17. package/dist/core/gateway.js.map +1 -0
  18. package/dist/do/sessionDo.d.ts +11 -0
  19. package/dist/do/sessionDo.d.ts.map +1 -0
  20. package/dist/do/sessionDo.js +96 -0
  21. package/dist/do/sessionDo.js.map +1 -0
  22. package/dist/index.d.ts +7 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +16 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/providers/baseProvider.d.ts +22 -0
  27. package/dist/providers/baseProvider.d.ts.map +1 -0
  28. package/dist/providers/baseProvider.js +129 -0
  29. package/dist/providers/baseProvider.js.map +1 -0
  30. package/dist/providers/google.d.ts +9 -0
  31. package/dist/providers/google.d.ts.map +1 -0
  32. package/dist/providers/google.js +27 -0
  33. package/dist/providers/google.js.map +1 -0
  34. package/dist/providers/index.d.ts +3 -0
  35. package/dist/providers/index.d.ts.map +1 -0
  36. package/dist/providers/index.js +5 -0
  37. package/dist/providers/index.js.map +1 -0
  38. package/dist/routing/routeMatcher.d.ts +15 -0
  39. package/dist/routing/routeMatcher.d.ts.map +1 -0
  40. package/dist/routing/routeMatcher.js +83 -0
  41. package/dist/routing/routeMatcher.js.map +1 -0
  42. package/dist/sessions/durableObjectSession.d.ts +25 -0
  43. package/dist/sessions/durableObjectSession.d.ts.map +1 -0
  44. package/dist/sessions/durableObjectSession.js +90 -0
  45. package/dist/sessions/durableObjectSession.js.map +1 -0
  46. package/dist/sessions/index.d.ts +19 -0
  47. package/dist/sessions/index.d.ts.map +1 -0
  48. package/dist/sessions/index.js +32 -0
  49. package/dist/sessions/index.js.map +1 -0
  50. package/dist/sessions/jwtSession.d.ts +19 -0
  51. package/dist/sessions/jwtSession.d.ts.map +1 -0
  52. package/dist/sessions/jwtSession.js +49 -0
  53. package/dist/sessions/jwtSession.js.map +1 -0
  54. package/dist/stores/index.d.ts +3 -0
  55. package/dist/stores/index.d.ts.map +1 -0
  56. package/dist/stores/index.js +10 -0
  57. package/dist/stores/index.js.map +1 -0
  58. package/dist/stores/postgres.d.ts +74 -0
  59. package/dist/stores/postgres.d.ts.map +1 -0
  60. package/dist/stores/postgres.js +231 -0
  61. package/dist/stores/postgres.js.map +1 -0
  62. package/dist/types.d.ts +247 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +5 -0
  65. package/dist/types.js.map +1 -0
  66. package/dist/utils/csrf.d.ts +13 -0
  67. package/dist/utils/csrf.d.ts.map +1 -0
  68. package/dist/utils/csrf.js +42 -0
  69. package/dist/utils/csrf.js.map +1 -0
  70. package/dist/utils/helpers.d.ts +8 -0
  71. package/dist/utils/helpers.d.ts.map +1 -0
  72. package/dist/utils/helpers.js +22 -0
  73. package/dist/utils/helpers.js.map +1 -0
  74. package/dist/utils/http.d.ts +9 -0
  75. package/dist/utils/http.d.ts.map +1 -0
  76. package/dist/utils/http.js +23 -0
  77. package/dist/utils/http.js.map +1 -0
  78. package/dist/utils/jwt.d.ts +22 -0
  79. package/dist/utils/jwt.d.ts.map +1 -0
  80. package/dist/utils/jwt.js +96 -0
  81. package/dist/utils/jwt.js.map +1 -0
  82. package/dist/utils/passwordPolicy.d.ts +9 -0
  83. package/dist/utils/passwordPolicy.d.ts.map +1 -0
  84. package/dist/utils/passwordPolicy.js +29 -0
  85. package/dist/utils/passwordPolicy.js.map +1 -0
  86. package/dist/utils/passwords.d.ts +33 -0
  87. package/dist/utils/passwords.d.ts.map +1 -0
  88. package/dist/utils/passwords.js +139 -0
  89. package/dist/utils/passwords.js.map +1 -0
  90. package/dist/utils/propagation.d.ts +30 -0
  91. package/dist/utils/propagation.d.ts.map +1 -0
  92. package/dist/utils/propagation.js +60 -0
  93. package/dist/utils/propagation.js.map +1 -0
  94. package/dist/utils/returnTo.d.ts +2 -0
  95. package/dist/utils/returnTo.d.ts.map +1 -0
  96. package/dist/utils/returnTo.js +21 -0
  97. package/dist/utils/returnTo.js.map +1 -0
  98. package/dist/utils/roles.d.ts +3 -0
  99. package/dist/utils/roles.d.ts.map +1 -0
  100. package/dist/utils/roles.js +25 -0
  101. package/dist/utils/roles.js.map +1 -0
  102. package/dist/utils/turnstile.d.ts +12 -0
  103. package/dist/utils/turnstile.d.ts.map +1 -0
  104. package/dist/utils/turnstile.js +40 -0
  105. package/dist/utils/turnstile.js.map +1 -0
  106. package/dist/utils/verifyInternal.d.ts +8 -0
  107. package/dist/utils/verifyInternal.d.ts.map +1 -0
  108. package/dist/utils/verifyInternal.js +69 -0
  109. package/dist/utils/verifyInternal.js.map +1 -0
  110. package/package.json +48 -0
package/README.md ADDED
@@ -0,0 +1,59 @@
1
+ # Auth Gateway (Cloudflare Workers)
2
+
3
+ Simple authentication gateway for Cloudflare Workers.
4
+ Handles OAuth and password login, manages sessions, and forwards requests to internal services.
5
+
6
+ ---
7
+
8
+ ## Features
9
+
10
+ * OAuth login (e.g. Google)
11
+ * Email + password login
12
+ * Session handling (Durable Object or JWT)
13
+ * Route-based auth protection
14
+ * CSRF + optional Turnstile support
15
+ * Password hashing with pepper rotation
16
+ * Optional username support
17
+
18
+ ---
19
+
20
+ ## Basic Usage
21
+
22
+ ```ts
23
+ import createGateway from '@electr0zed/auth-gateway-cf';
24
+ import config from './config';
25
+
26
+ export default createGateway(config);
27
+ ```
28
+
29
+ ---
30
+
31
+ ## Auth Routes
32
+
33
+ ### OAuth
34
+
35
+ * `/auth/login`
36
+ * `/auth/callback`
37
+ * `/auth/logout`
38
+
39
+ ### Password
40
+
41
+ * `GET /auth/csrf`
42
+ * `POST /auth/password/register`
43
+ * `POST /auth/password/login`
44
+ * `POST /auth/password/change`
45
+
46
+ ---
47
+
48
+ ## Config Example
49
+
50
+ Can be found at src/config.example.ts
51
+
52
+ ---
53
+
54
+ ## Notes
55
+
56
+ * `/auth/*` is used internally by the gateway
57
+ * UI (e.g. `/sign-in`) should be handled separately
58
+ * Public env vars (e.g. Turnstile site key) are set at build time
59
+ * Worker secrets are configured via Wrangler
@@ -0,0 +1,84 @@
1
+ import type { ProjectConfig, UserStore, SessionStrategy } from '../types';
2
+ export declare class AuthRouter {
3
+ private cfg;
4
+ private env;
5
+ private store;
6
+ private strat;
7
+ constructor(cfg: ProjectConfig, env: Env, store: UserStore, strat: SessionStrategy);
8
+ /**
9
+ * Handles incoming authentication requests.
10
+ *
11
+ * @async
12
+ * @param {Request} request
13
+ * @returns {Promise<Response>}
14
+ */
15
+ handle(request: Request): Promise<Response>;
16
+ /**
17
+ * Handles login or linking of new oauth providers.
18
+ *
19
+ * @private
20
+ * @async
21
+ * @param {Request} request
22
+ * @param {URL} url
23
+ * @returns {Promise<Response>}
24
+ */
25
+ private loginOrLink;
26
+ /**
27
+ * Handles the OAuth callback.
28
+ *
29
+ * @private
30
+ * @async
31
+ * @param {Request} request
32
+ * @param {URL} url
33
+ * @returns {Promise<Response>}
34
+ */
35
+ private callback;
36
+ /**
37
+ * Handles user logout.
38
+ *
39
+ * @private
40
+ * @returns {Response}
41
+ */
42
+ private logout;
43
+ /**
44
+ * Selects the OAuth provider implementation and configuration.
45
+ *
46
+ * @private
47
+ * @param {?string} [explicit]
48
+ * @returns {{ impl: any; cfg: any; }}
49
+ */
50
+ private pickProvider;
51
+ /**
52
+ * Handles error redirection during auth flow.
53
+ *
54
+ * @private
55
+ * @param {string} code
56
+ * @param {?string} [returnTo]
57
+ * @returns {*}
58
+ */
59
+ private redirectError;
60
+ private csrf;
61
+ private passwordRegister;
62
+ private passwordLogin;
63
+ private passwordChange;
64
+ checkUserStates(userId: string): Promise<{
65
+ success: true;
66
+ } | {
67
+ success: false;
68
+ reason: 'account_disabled' | 'account_unapproved' | 'email_unverified';
69
+ }>;
70
+ private applyIssuedCookies;
71
+ private oauthEnabled;
72
+ private passwordEnabled;
73
+ authFeatureEnabled(): boolean;
74
+ private pepperEnvName;
75
+ private passwordPolicy;
76
+ private turnstileEnabled;
77
+ private turnstileSecret;
78
+ private turnstileTokenField;
79
+ private requireTurnstile;
80
+ private canAutoLoginAfterSignup;
81
+ getGlobalUnauthenticatedRedirectUrl(): string;
82
+ createUnauthenticatedRedirect(base: string, returnTo?: string, redirectTo?: string): Response;
83
+ }
84
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAA2B,MAAM,UAAU,CAAC;AAmBnG,qBAAa,UAAU;IAErB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,KAAK;gBAHL,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,eAAe;IAG/B;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsDjD;;;;;;;;OAQG;YACW,WAAW;IA+BzB;;;;;;;;OAQG;YACW,QAAQ;IAuJtB;;;;;OAKG;YACW,MAAM;IAUpB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAcpB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,IAAI;YAOE,gBAAgB;YA0GhB,aAAa;YA+Db,cAAc;IA4CtB,eAAe,CACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,kBAAkB,CAAA;KAAE,CAAC;YAyB5G,kBAAkB;IAQhC,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,eAAe;IAIvB,kBAAkB,IAAI,OAAO;IAI7B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,mBAAmB;YAMb,gBAAgB;IAmB9B,OAAO,CAAC,uBAAuB;IAY/B,mCAAmC,IAAI,MAAM;IAI7C,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ;CAK7F"}