@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.
- package/README.md +59 -0
- package/dist/auth/index.d.ts +84 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +609 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/pkceState.d.ts +40 -0
- package/dist/auth/pkceState.d.ts.map +1 -0
- package/dist/auth/pkceState.js +75 -0
- package/dist/auth/pkceState.js.map +1 -0
- package/dist/config.example.d.ts +2 -0
- package/dist/config.example.d.ts.map +1 -0
- package/dist/config.example.js +83 -0
- package/dist/config.example.js.map +1 -0
- package/dist/core/gateway.d.ts +11 -0
- package/dist/core/gateway.d.ts.map +1 -0
- package/dist/core/gateway.js +97 -0
- package/dist/core/gateway.js.map +1 -0
- package/dist/do/sessionDo.d.ts +11 -0
- package/dist/do/sessionDo.d.ts.map +1 -0
- package/dist/do/sessionDo.js +96 -0
- package/dist/do/sessionDo.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/baseProvider.d.ts +22 -0
- package/dist/providers/baseProvider.d.ts.map +1 -0
- package/dist/providers/baseProvider.js +129 -0
- package/dist/providers/baseProvider.js.map +1 -0
- package/dist/providers/google.d.ts +9 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +27 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +5 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/routing/routeMatcher.d.ts +15 -0
- package/dist/routing/routeMatcher.d.ts.map +1 -0
- package/dist/routing/routeMatcher.js +83 -0
- package/dist/routing/routeMatcher.js.map +1 -0
- package/dist/sessions/durableObjectSession.d.ts +25 -0
- package/dist/sessions/durableObjectSession.d.ts.map +1 -0
- package/dist/sessions/durableObjectSession.js +90 -0
- package/dist/sessions/durableObjectSession.js.map +1 -0
- package/dist/sessions/index.d.ts +19 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +32 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/jwtSession.d.ts +19 -0
- package/dist/sessions/jwtSession.d.ts.map +1 -0
- package/dist/sessions/jwtSession.js +49 -0
- package/dist/sessions/jwtSession.js.map +1 -0
- package/dist/stores/index.d.ts +3 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/index.js +10 -0
- package/dist/stores/index.js.map +1 -0
- package/dist/stores/postgres.d.ts +74 -0
- package/dist/stores/postgres.d.ts.map +1 -0
- package/dist/stores/postgres.js +231 -0
- package/dist/stores/postgres.js.map +1 -0
- package/dist/types.d.ts +247 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/csrf.d.ts +13 -0
- package/dist/utils/csrf.d.ts.map +1 -0
- package/dist/utils/csrf.js +42 -0
- package/dist/utils/csrf.js.map +1 -0
- package/dist/utils/helpers.d.ts +8 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +22 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/http.d.ts +9 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +23 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/jwt.d.ts +22 -0
- package/dist/utils/jwt.d.ts.map +1 -0
- package/dist/utils/jwt.js +96 -0
- package/dist/utils/jwt.js.map +1 -0
- package/dist/utils/passwordPolicy.d.ts +9 -0
- package/dist/utils/passwordPolicy.d.ts.map +1 -0
- package/dist/utils/passwordPolicy.js +29 -0
- package/dist/utils/passwordPolicy.js.map +1 -0
- package/dist/utils/passwords.d.ts +33 -0
- package/dist/utils/passwords.d.ts.map +1 -0
- package/dist/utils/passwords.js +139 -0
- package/dist/utils/passwords.js.map +1 -0
- package/dist/utils/propagation.d.ts +30 -0
- package/dist/utils/propagation.d.ts.map +1 -0
- package/dist/utils/propagation.js +60 -0
- package/dist/utils/propagation.js.map +1 -0
- package/dist/utils/returnTo.d.ts +2 -0
- package/dist/utils/returnTo.d.ts.map +1 -0
- package/dist/utils/returnTo.js +21 -0
- package/dist/utils/returnTo.js.map +1 -0
- package/dist/utils/roles.d.ts +3 -0
- package/dist/utils/roles.d.ts.map +1 -0
- package/dist/utils/roles.js +25 -0
- package/dist/utils/roles.js.map +1 -0
- package/dist/utils/turnstile.d.ts +12 -0
- package/dist/utils/turnstile.d.ts.map +1 -0
- package/dist/utils/turnstile.js +40 -0
- package/dist/utils/turnstile.js.map +1 -0
- package/dist/utils/verifyInternal.d.ts +8 -0
- package/dist/utils/verifyInternal.d.ts.map +1 -0
- package/dist/utils/verifyInternal.js +69 -0
- package/dist/utils/verifyInternal.js.map +1 -0
- 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"}
|