@rudderjs/auth 0.2.0 → 0.2.1
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 +63 -21
- package/boost/skills/auth-setup/SKILL.md +273 -0
- package/dist/auth-manager.d.ts +31 -1
- package/dist/auth-manager.d.ts.map +1 -1
- package/dist/auth-manager.js +53 -12
- package/dist/auth-manager.js.map +1 -1
- package/dist/gate-observers.d.ts +37 -0
- package/dist/gate-observers.d.ts.map +1 -0
- package/dist/gate-observers.js +38 -0
- package/dist/gate-observers.js.map +1 -0
- package/dist/gate.d.ts +3 -0
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +72 -15
- package/dist/gate.js.map +1 -1
- package/dist/index.d.ts +13 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -39
- package/dist/index.js.map +1 -1
- package/dist/require-guest.d.ts +10 -0
- package/dist/require-guest.d.ts.map +1 -0
- package/dist/require-guest.js +25 -0
- package/dist/require-guest.js.map +1 -0
- package/dist/routes.d.ts +43 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +43 -0
- package/dist/routes.js.map +1 -0
- package/package.json +38 -8
- package/{pages/react/forgot-password/+Page.tsx → views/react/ForgotPassword.tsx} +17 -4
- package/{pages/react/login/+Page.tsx → views/react/Login.tsx} +25 -7
- package/{pages/react/register/+Page.tsx → views/react/Register.tsx} +17 -4
- package/{pages/react/reset-password/+Page.tsx → views/react/ResetPassword.tsx} +20 -5
- package/pages/react/login/+guard.ts +0 -15
- package/pages/react/register/+guard.ts +0 -15
- package/pages/solid/forgot-password/+Page.tsx +0 -62
- package/pages/solid/login/+Page.tsx +0 -66
- package/pages/solid/login/+guard.ts +0 -15
- package/pages/solid/register/+Page.tsx +0 -72
- package/pages/solid/register/+guard.ts +0 -15
- package/pages/solid/reset-password/+Page.tsx +0 -94
- package/pages/vue/forgot-password/+Page.vue +0 -60
- package/pages/vue/login/+Page.vue +0 -63
- package/pages/vue/login/+guard.ts +0 -15
- package/pages/vue/register/+Page.vue +0 -68
- package/pages/vue/register/+guard.ts +0 -15
- package/pages/vue/reset-password/+Page.vue +0 -93
package/dist/gate.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { currentAuth } from './auth-manager.js';
|
|
2
|
+
// Lazy accessor — reads the process-wide singleton set by gate-observers.ts.
|
|
3
|
+
let _gateObs;
|
|
4
|
+
function _getGateObservers() {
|
|
5
|
+
if (_gateObs === undefined) {
|
|
6
|
+
_gateObs = globalThis['__rudderjs_gate_observers__'] ?? null;
|
|
7
|
+
}
|
|
8
|
+
return _gateObs;
|
|
9
|
+
}
|
|
2
10
|
// ─── Policy Base Class ────────────────────────────────────
|
|
3
11
|
export class Policy {
|
|
4
12
|
}
|
|
@@ -20,9 +28,15 @@ export class Gate {
|
|
|
20
28
|
// ── Check abilities ───────────────────────────────────
|
|
21
29
|
static async allows(ability, ...args) {
|
|
22
30
|
const user = await this.resolveUser();
|
|
23
|
-
if (!user)
|
|
31
|
+
if (!user) {
|
|
32
|
+
this._emitObservation(ability, null, { allowed: false, resolvedVia: 'default' }, args, 0);
|
|
24
33
|
return false;
|
|
25
|
-
|
|
34
|
+
}
|
|
35
|
+
const start = performance.now();
|
|
36
|
+
const result = await this._check(user, ability, ...args);
|
|
37
|
+
const duration = Math.round(performance.now() - start);
|
|
38
|
+
this._emitObservation(ability, user, result, args, duration);
|
|
39
|
+
return result.allowed;
|
|
26
40
|
}
|
|
27
41
|
static async denies(ability, ...args) {
|
|
28
42
|
return !(await this.allows(ability, ...args));
|
|
@@ -54,23 +68,24 @@ export class Gate {
|
|
|
54
68
|
for (const cb of this._beforeCallbacks) {
|
|
55
69
|
const result = await cb(user, ability);
|
|
56
70
|
if (result === true)
|
|
57
|
-
return true;
|
|
71
|
+
return { allowed: true, resolvedVia: 'before' };
|
|
58
72
|
if (result === false)
|
|
59
|
-
return false;
|
|
73
|
+
return { allowed: false, resolvedVia: 'before' };
|
|
60
74
|
}
|
|
61
75
|
// Check if the first arg is a model instance with a registered policy
|
|
62
76
|
const model = args[0];
|
|
63
77
|
if (model && typeof model === 'object') {
|
|
64
78
|
const policyClass = this.findPolicy(model);
|
|
65
79
|
if (policyClass) {
|
|
66
|
-
|
|
80
|
+
const allowed = await this.callPolicy(policyClass, user, ability, ...args);
|
|
81
|
+
return { allowed, resolvedVia: 'policy', policy: policyClass.name };
|
|
67
82
|
}
|
|
68
83
|
}
|
|
69
84
|
// Fall back to defined abilities
|
|
70
85
|
const callback = this._abilities.get(ability);
|
|
71
86
|
if (!callback)
|
|
72
|
-
return false;
|
|
73
|
-
return callback(user, ...args);
|
|
87
|
+
return { allowed: false, resolvedVia: 'default' };
|
|
88
|
+
return { allowed: await callback(user, ...args), resolvedVia: 'ability' };
|
|
74
89
|
}
|
|
75
90
|
static findPolicy(model) {
|
|
76
91
|
if (!model || typeof model !== 'object')
|
|
@@ -105,6 +120,25 @@ export class Gate {
|
|
|
105
120
|
return false;
|
|
106
121
|
return method.call(policy, user, ...args);
|
|
107
122
|
}
|
|
123
|
+
/** Emit an observation event to the gate observer registry (if present). */
|
|
124
|
+
static _emitObservation(ability, user, result, args, duration) {
|
|
125
|
+
const obs = _getGateObservers();
|
|
126
|
+
if (!obs)
|
|
127
|
+
return;
|
|
128
|
+
const model = args[0];
|
|
129
|
+
const modelName = model && typeof model === 'object' && 'constructor' in model
|
|
130
|
+
? model.constructor.name
|
|
131
|
+
: undefined;
|
|
132
|
+
obs.emit({
|
|
133
|
+
ability,
|
|
134
|
+
userId: user ? user.getAuthIdentifier() : null,
|
|
135
|
+
allowed: result.allowed,
|
|
136
|
+
resolvedVia: result.resolvedVia,
|
|
137
|
+
policy: result.policy,
|
|
138
|
+
model: modelName,
|
|
139
|
+
duration,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
108
142
|
/** @internal — reset all definitions. Used for testing. */
|
|
109
143
|
static reset() {
|
|
110
144
|
this._abilities.clear();
|
|
@@ -125,13 +159,35 @@ class GateForUser {
|
|
|
125
159
|
this.beforeCallbacks = beforeCallbacks;
|
|
126
160
|
}
|
|
127
161
|
async allows(ability, ...args) {
|
|
162
|
+
const start = performance.now();
|
|
163
|
+
const result = await this._check(ability, ...args);
|
|
164
|
+
const duration = Math.round(performance.now() - start);
|
|
165
|
+
const obs = _getGateObservers();
|
|
166
|
+
if (obs) {
|
|
167
|
+
const model = args[0];
|
|
168
|
+
const modelName = model && typeof model === 'object' && 'constructor' in model
|
|
169
|
+
? model.constructor.name
|
|
170
|
+
: undefined;
|
|
171
|
+
obs.emit({
|
|
172
|
+
ability,
|
|
173
|
+
userId: this.user.getAuthIdentifier(),
|
|
174
|
+
allowed: result.allowed,
|
|
175
|
+
resolvedVia: result.resolvedVia,
|
|
176
|
+
policy: result.policy,
|
|
177
|
+
model: modelName,
|
|
178
|
+
duration,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
return result.allowed;
|
|
182
|
+
}
|
|
183
|
+
async _check(ability, ...args) {
|
|
128
184
|
// Before callbacks
|
|
129
185
|
for (const cb of this.beforeCallbacks) {
|
|
130
186
|
const result = await cb(this.user, ability);
|
|
131
187
|
if (result === true)
|
|
132
|
-
return true;
|
|
188
|
+
return { allowed: true, resolvedVia: 'before' };
|
|
133
189
|
if (result === false)
|
|
134
|
-
return false;
|
|
190
|
+
return { allowed: false, resolvedVia: 'before' };
|
|
135
191
|
}
|
|
136
192
|
// Policy check
|
|
137
193
|
const model = args[0];
|
|
@@ -144,22 +200,23 @@ class GateForUser {
|
|
|
144
200
|
if (policy.before) {
|
|
145
201
|
const result = await policy.before(this.user);
|
|
146
202
|
if (result === true)
|
|
147
|
-
return true;
|
|
203
|
+
return { allowed: true, resolvedVia: 'before' };
|
|
148
204
|
if (result === false)
|
|
149
|
-
return false;
|
|
205
|
+
return { allowed: false, resolvedVia: 'before' };
|
|
150
206
|
}
|
|
151
207
|
const method = policy[ability];
|
|
152
208
|
if (typeof method !== 'function')
|
|
153
|
-
return false;
|
|
154
|
-
|
|
209
|
+
return { allowed: false, resolvedVia: 'default' };
|
|
210
|
+
const allowed = await method.call(policy, this.user, ...args);
|
|
211
|
+
return { allowed, resolvedVia: 'policy', policy: PolicyCtor.name };
|
|
155
212
|
}
|
|
156
213
|
}
|
|
157
214
|
}
|
|
158
215
|
// Ability check
|
|
159
216
|
const callback = this.abilities.get(ability);
|
|
160
217
|
if (!callback)
|
|
161
|
-
return false;
|
|
162
|
-
return callback(this.user, ...args);
|
|
218
|
+
return { allowed: false, resolvedVia: 'default' };
|
|
219
|
+
return { allowed: await callback(this.user, ...args), resolvedVia: 'ability' };
|
|
163
220
|
}
|
|
164
221
|
async denies(ability, ...args) {
|
|
165
222
|
return !(await this.allows(ability, ...args));
|
package/dist/gate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { ServiceProvider
|
|
1
|
+
import { ServiceProvider } from '@rudderjs/core';
|
|
2
2
|
import type { MiddlewareHandler } from '@rudderjs/contracts';
|
|
3
|
-
import { type AuthConfig } from './auth-manager.js';
|
|
4
3
|
import type { AuthUser } from './contracts.js';
|
|
5
4
|
declare module '@rudderjs/contracts' {
|
|
6
5
|
interface AppRequest {
|
|
7
6
|
user?: AuthUser;
|
|
8
7
|
}
|
|
9
8
|
}
|
|
10
|
-
export { Auth } from './auth-manager.js';
|
|
11
|
-
export { AuthManager, runWithAuth } from './auth-manager.js';
|
|
9
|
+
export { Auth, auth } from './auth-manager.js';
|
|
10
|
+
export { AuthManager, runWithAuth, currentAuth } from './auth-manager.js';
|
|
12
11
|
export { SessionGuard } from './session-guard.js';
|
|
13
12
|
export { EloquentUserProvider, toAuthenticatable } from './providers.js';
|
|
14
13
|
export { Gate, Policy, AuthorizationError } from './gate.js';
|
|
15
14
|
export { PasswordBroker, MemoryTokenRepository } from './password-reset.js';
|
|
16
15
|
export { EnsureEmailIsVerified, verificationUrl, handleEmailVerification, mustVerifyEmail } from './verification.js';
|
|
16
|
+
export { RequireGuest } from './require-guest.js';
|
|
17
17
|
export type { Authenticatable, AuthUser, Guard, UserProvider } from './contracts.js';
|
|
18
18
|
export type { MustVerifyEmail } from './verification.js';
|
|
19
19
|
export type { TokenRepository, PasswordResetStatus, PasswordResetConfig } from './password-reset.js';
|
|
@@ -34,8 +34,14 @@ export declare function RequireAuth(guardName?: string): MiddlewareHandler;
|
|
|
34
34
|
* Requires: @rudderjs/session (session middleware), @rudderjs/hash
|
|
35
35
|
*
|
|
36
36
|
* Usage in bootstrap/providers.ts:
|
|
37
|
-
* import {
|
|
38
|
-
* export default [session(configs.session), hash(configs.hash),
|
|
37
|
+
* import { authProvider } from '@rudderjs/auth'
|
|
38
|
+
* export default [session(configs.session), hash(configs.hash), authProvider(configs.auth), ...]
|
|
39
|
+
*
|
|
40
|
+
* Note: the lowercase `auth()` helper is a different export — it returns the
|
|
41
|
+
* current request's AuthManager (Laravel's `auth()->user()` ergonomics).
|
|
39
42
|
*/
|
|
40
|
-
export declare
|
|
43
|
+
export declare class AuthProvider extends ServiceProvider {
|
|
44
|
+
register(): void;
|
|
45
|
+
boot(): Promise<void>;
|
|
46
|
+
}
|
|
41
47
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAe,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAK9C,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,UAAU;QAClB,IAAI,CAAC,EAAE,QAAQ,CAAA;KAChB;CACF;AAID,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACpH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACpF,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACpG,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACxF,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAsBtD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAiBpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAoBjE;AAID;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,SAAQ,eAAe;IAC/C,QAAQ,IAAI,IAAI;IAgBV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAoC5B"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { ServiceProvider, app } from '@rudderjs/core';
|
|
1
|
+
import { ServiceProvider, app, config } from '@rudderjs/core';
|
|
2
2
|
import { AuthManager, Auth, runWithAuth } from './auth-manager.js';
|
|
3
3
|
// ─── Re-exports ───────────────────────────────────────────
|
|
4
|
-
export { Auth } from './auth-manager.js';
|
|
5
|
-
export { AuthManager, runWithAuth } from './auth-manager.js';
|
|
4
|
+
export { Auth, auth } from './auth-manager.js';
|
|
5
|
+
export { AuthManager, runWithAuth, currentAuth } from './auth-manager.js';
|
|
6
6
|
export { SessionGuard } from './session-guard.js';
|
|
7
7
|
export { EloquentUserProvider, toAuthenticatable } from './providers.js';
|
|
8
8
|
export { Gate, Policy, AuthorizationError } from './gate.js';
|
|
9
9
|
export { PasswordBroker, MemoryTokenRepository } from './password-reset.js';
|
|
10
10
|
export { EnsureEmailIsVerified, verificationUrl, handleEmailVerification, mustVerifyEmail } from './verification.js';
|
|
11
|
+
export { RequireGuest } from './require-guest.js';
|
|
11
12
|
// ─── Helpers ──────────────────────────────────────────────
|
|
12
13
|
function userToPlain(user) {
|
|
13
14
|
const u = user;
|
|
@@ -79,45 +80,58 @@ export function RequireAuth(guardName) {
|
|
|
79
80
|
* Requires: @rudderjs/session (session middleware), @rudderjs/hash
|
|
80
81
|
*
|
|
81
82
|
* Usage in bootstrap/providers.ts:
|
|
82
|
-
* import {
|
|
83
|
-
* export default [session(configs.session), hash(configs.hash),
|
|
83
|
+
* import { authProvider } from '@rudderjs/auth'
|
|
84
|
+
* export default [session(configs.session), hash(configs.hash), authProvider(configs.auth), ...]
|
|
85
|
+
*
|
|
86
|
+
* Note: the lowercase `auth()` helper is a different export — it returns the
|
|
87
|
+
* current request's AuthManager (Laravel's `auth()->user()` ergonomics).
|
|
84
88
|
*/
|
|
85
|
-
export
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
89
|
+
export class AuthProvider extends ServiceProvider {
|
|
90
|
+
register() {
|
|
91
|
+
// Auth views — vendored into the consumer's `app/Views/Auth/` directory.
|
|
92
|
+
// Consumers then wire routes via `registerAuthRoutes(Route)` from `@rudderjs/auth/routes`.
|
|
93
|
+
this.publishes({ from: new URL(/* @vite-ignore */ '../views/react', import.meta.url).pathname, to: 'app/Views/Auth', tag: 'auth-views' });
|
|
94
|
+
this.publishes({ from: new URL(/* @vite-ignore */ '../views/react', import.meta.url).pathname, to: 'app/Views/Auth', tag: 'auth-views-react' });
|
|
95
|
+
// Auth schema (ORM + driver-specific)
|
|
96
|
+
const schemaDir = new URL(/* @vite-ignore */ '../schema', import.meta.url).pathname;
|
|
97
|
+
this.publishes([
|
|
98
|
+
{ from: `${schemaDir}/auth.prisma`, to: 'prisma/schema', tag: 'auth-schema', orm: 'prisma' },
|
|
99
|
+
{ from: `${schemaDir}/auth.drizzle.sqlite.ts`, to: 'database/schema', tag: 'auth-schema', orm: 'drizzle', driver: 'sqlite' },
|
|
100
|
+
{ from: `${schemaDir}/auth.drizzle.pg.ts`, to: 'database/schema', tag: 'auth-schema', orm: 'drizzle', driver: 'postgresql' },
|
|
101
|
+
{ from: `${schemaDir}/auth.drizzle.mysql.ts`, to: 'database/schema', tag: 'auth-schema', orm: 'drizzle', driver: 'mysql' },
|
|
102
|
+
]);
|
|
103
|
+
}
|
|
104
|
+
async boot() {
|
|
105
|
+
const cfg = config('auth');
|
|
106
|
+
// Resolve Hash.check from DI
|
|
107
|
+
let hashCheck;
|
|
108
|
+
try {
|
|
109
|
+
const hashDriver = this.app.make('hash');
|
|
110
|
+
hashCheck = (plain, hashed) => hashDriver.check(plain, hashed);
|
|
101
111
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
112
|
+
catch {
|
|
113
|
+
throw new Error('[RudderJS Auth] No hash driver found. Register HashProvider before AuthProvider.');
|
|
114
|
+
}
|
|
115
|
+
// Resolve session facade — bound by @rudderjs/session as 'session.facade'
|
|
116
|
+
const getSession = () => {
|
|
117
|
+
return this.app.make('session.facade');
|
|
118
|
+
};
|
|
119
|
+
const manager = new AuthManager(cfg, hashCheck, getSession);
|
|
120
|
+
this.app.instance('auth.manager', manager);
|
|
121
|
+
this.app.instance('auth', Auth);
|
|
122
|
+
// Install AuthMiddleware as a global router middleware so every request
|
|
123
|
+
// runs inside `runWithAuth(manager, …)`. User code can then call
|
|
124
|
+
// `auth().user()`, `Auth.user()`, or read `req.user` without manual
|
|
125
|
+
// context wrapping — matching Laravel's `auth()->user()` ergonomics.
|
|
126
|
+
try {
|
|
127
|
+
const { router } = await import('@rudderjs/router');
|
|
128
|
+
router.use(AuthMiddleware());
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// Router peer not installed — skip global registration. Callers can
|
|
132
|
+
// still wrap manually with runWithAuth if they're running in a
|
|
133
|
+
// non-HTTP context (CLI, worker).
|
|
119
134
|
}
|
|
120
135
|
}
|
|
121
|
-
return AuthServiceProvider;
|
|
122
136
|
}
|
|
123
137
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MiddlewareHandler } from '@rudderjs/contracts';
|
|
2
|
+
/**
|
|
3
|
+
* Middleware that blocks authenticated users from guest-only pages
|
|
4
|
+
* (login, register, forgot-password, reset-password).
|
|
5
|
+
*
|
|
6
|
+
* Replaces the Vike `+guard.ts` pattern — guards now live in the router
|
|
7
|
+
* middleware chain alongside `RequireAuth`, `RateLimit`, and `CsrfMiddleware`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function RequireGuest(redirectTo?: string, guardName?: string): MiddlewareHandler;
|
|
10
|
+
//# sourceMappingURL=require-guest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-guest.d.ts","sourceRoot":"","sources":["../src/require-guest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAI5D;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,SAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAcpF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { app } from '@rudderjs/core';
|
|
2
|
+
import { runWithAuth, Auth } from './auth-manager.js';
|
|
3
|
+
/**
|
|
4
|
+
* Middleware that blocks authenticated users from guest-only pages
|
|
5
|
+
* (login, register, forgot-password, reset-password).
|
|
6
|
+
*
|
|
7
|
+
* Replaces the Vike `+guard.ts` pattern — guards now live in the router
|
|
8
|
+
* middleware chain alongside `RequireAuth`, `RateLimit`, and `CsrfMiddleware`.
|
|
9
|
+
*/
|
|
10
|
+
export function RequireGuest(redirectTo = '/', guardName) {
|
|
11
|
+
return async function RequireGuest(req, res, next) {
|
|
12
|
+
const manager = app().make('auth.manager');
|
|
13
|
+
let user = null;
|
|
14
|
+
await runWithAuth(manager, async () => {
|
|
15
|
+
const guard = Auth.guard(guardName ?? manager.config.defaults.guard);
|
|
16
|
+
user = await guard.user();
|
|
17
|
+
});
|
|
18
|
+
if (user) {
|
|
19
|
+
res.redirect(redirectTo);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
await next();
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=require-guest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-guest.js","sourceRoot":"","sources":["../src/require-guest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAEpC,OAAO,EAAe,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAGlE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,UAAU,GAAG,GAAG,EAAE,SAAkB;IAC/D,OAAO,KAAK,UAAU,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI;QAC/C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAc,cAAc,CAAC,CAAA;QACvD,IAAI,IAAI,GAAY,IAAI,CAAA;QACxB,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAK,OAA6C,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC3G,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;QACF,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;YACxB,OAAM;QACR,CAAC;QACD,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAA;AACH,CAAC"}
|
package/dist/routes.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Router } from '@rudderjs/router';
|
|
2
|
+
import type { MiddlewareHandler } from '@rudderjs/contracts';
|
|
3
|
+
export interface RegisterAuthRoutesOptions {
|
|
4
|
+
/** View ids override — default: `auth.login`, `auth.register`, `auth.forgot-password`, `auth.reset-password`. */
|
|
5
|
+
views?: {
|
|
6
|
+
login?: string;
|
|
7
|
+
register?: string;
|
|
8
|
+
forgotPassword?: string;
|
|
9
|
+
resetPassword?: string;
|
|
10
|
+
};
|
|
11
|
+
/** Route path override — default: `/login`, `/register`, `/forgot-password`, `/reset-password`. */
|
|
12
|
+
paths?: {
|
|
13
|
+
login?: string;
|
|
14
|
+
register?: string;
|
|
15
|
+
forgotPassword?: string;
|
|
16
|
+
resetPassword?: string;
|
|
17
|
+
};
|
|
18
|
+
/** Where to redirect already-authenticated users visiting a guest page. */
|
|
19
|
+
homeUrl?: string;
|
|
20
|
+
/** Extra middleware to prepend to all guest routes (e.g. CsrfMiddleware). */
|
|
21
|
+
middleware?: MiddlewareHandler[];
|
|
22
|
+
/** Disable RequireGuest (useful in tests). */
|
|
23
|
+
allowAuthenticated?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Register auth UI routes (login, register, forgot-password, reset-password) on a router.
|
|
27
|
+
*
|
|
28
|
+
* View files must exist under `app/Views/Auth/` in the consumer project — either
|
|
29
|
+
* hand-vendored from `@rudderjs/auth/views/react/` (v1) or published via
|
|
30
|
+
* `vendor:publish --tag=auth-views` (v2).
|
|
31
|
+
*
|
|
32
|
+
* POST submit handlers are NOT registered here — they live with the consumer's
|
|
33
|
+
* existing `/api/auth/*` endpoints (e.g. `/api/auth/sign-in/email`).
|
|
34
|
+
*
|
|
35
|
+
* Example:
|
|
36
|
+
* ```ts
|
|
37
|
+
* import { Route } from '@rudderjs/router'
|
|
38
|
+
* import { registerAuthRoutes } from '@rudderjs/auth/routes'
|
|
39
|
+
* registerAuthRoutes(Route)
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function registerAuthRoutes(router: Router, opts?: RegisterAuthRoutesOptions): void;
|
|
43
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAI5D,MAAM,WAAW,yBAAyB;IACxC,iHAAiH;IACjH,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAU,MAAM,CAAA;QACtB,QAAQ,CAAC,EAAO,MAAM,CAAA;QACtB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,aAAa,CAAC,EAAG,MAAM,CAAA;KACxB,CAAA;IACD,mGAAmG;IACnG,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAU,MAAM,CAAA;QACtB,QAAQ,CAAC,EAAO,MAAM,CAAA;QACtB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,aAAa,CAAC,EAAG,MAAM,CAAA;KACxB,CAAA;IACD,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,yBAA8B,GACnC,IAAI,CAwBN"}
|
package/dist/routes.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { view } from '@rudderjs/view';
|
|
2
|
+
import { RequireGuest } from './require-guest.js';
|
|
3
|
+
/**
|
|
4
|
+
* Register auth UI routes (login, register, forgot-password, reset-password) on a router.
|
|
5
|
+
*
|
|
6
|
+
* View files must exist under `app/Views/Auth/` in the consumer project — either
|
|
7
|
+
* hand-vendored from `@rudderjs/auth/views/react/` (v1) or published via
|
|
8
|
+
* `vendor:publish --tag=auth-views` (v2).
|
|
9
|
+
*
|
|
10
|
+
* POST submit handlers are NOT registered here — they live with the consumer's
|
|
11
|
+
* existing `/api/auth/*` endpoints (e.g. `/api/auth/sign-in/email`).
|
|
12
|
+
*
|
|
13
|
+
* Example:
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { Route } from '@rudderjs/router'
|
|
16
|
+
* import { registerAuthRoutes } from '@rudderjs/auth/routes'
|
|
17
|
+
* registerAuthRoutes(Route)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function registerAuthRoutes(router, opts = {}) {
|
|
21
|
+
const homeUrl = opts.homeUrl ?? '/';
|
|
22
|
+
const paths = {
|
|
23
|
+
login: opts.paths?.login ?? '/login',
|
|
24
|
+
register: opts.paths?.register ?? '/register',
|
|
25
|
+
forgotPassword: opts.paths?.forgotPassword ?? '/forgot-password',
|
|
26
|
+
resetPassword: opts.paths?.resetPassword ?? '/reset-password',
|
|
27
|
+
};
|
|
28
|
+
const views = {
|
|
29
|
+
login: opts.views?.login ?? 'auth.login',
|
|
30
|
+
register: opts.views?.register ?? 'auth.register',
|
|
31
|
+
forgotPassword: opts.views?.forgotPassword ?? 'auth.forgot-password',
|
|
32
|
+
resetPassword: opts.views?.resetPassword ?? 'auth.reset-password',
|
|
33
|
+
};
|
|
34
|
+
const guestOnly = [
|
|
35
|
+
...(opts.middleware ?? []),
|
|
36
|
+
...(opts.allowAuthenticated ? [] : [RequireGuest(homeUrl)]),
|
|
37
|
+
];
|
|
38
|
+
router.get(paths.login, async () => view(views.login, { registerUrl: paths.register, forgotPasswordUrl: paths.forgotPassword, homeUrl }), guestOnly);
|
|
39
|
+
router.get(paths.register, async () => view(views.register, { loginUrl: paths.login, homeUrl }), guestOnly);
|
|
40
|
+
router.get(paths.forgotPassword, async () => view(views.forgotPassword, { loginUrl: paths.login, resetPasswordUrl: paths.resetPassword }), guestOnly);
|
|
41
|
+
router.get(paths.resetPassword, async () => view(views.resetPassword, { loginUrl: paths.login, forgotPasswordUrl: paths.forgotPassword }), guestOnly);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAyBjD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,OAAkC,EAAE;IAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,GAAG,CAAA;IACnC,MAAM,KAAK,GAAK;QACd,KAAK,EAAW,IAAI,CAAC,KAAK,EAAE,KAAK,IAAa,QAAQ;QACtD,QAAQ,EAAQ,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAU,WAAW;QACzD,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,IAAI,kBAAkB;QAChE,aAAa,EAAG,IAAI,CAAC,KAAK,EAAE,aAAa,IAAK,iBAAiB;KAChE,CAAA;IACD,MAAM,KAAK,GAAG;QACZ,KAAK,EAAW,IAAI,CAAC,KAAK,EAAE,KAAK,IAAa,YAAY;QAC1D,QAAQ,EAAQ,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAU,eAAe;QAC7D,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,IAAI,sBAAsB;QACpE,aAAa,EAAG,IAAI,CAAC,KAAK,EAAE,aAAa,IAAK,qBAAqB;KACpE,CAAA;IAED,MAAM,SAAS,GAAwB;QACrC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;KAC5D,CAAA;IAED,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAW,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAW,EAAE,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;IACtK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAQ,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;IACvH,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;IACrJ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;AACzJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rudderjs/auth",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"rudderjs": {
|
|
5
|
+
"provider": "AuthProvider",
|
|
6
|
+
"stage": "infrastructure",
|
|
7
|
+
"depends": [
|
|
8
|
+
"@rudderjs/session",
|
|
9
|
+
"@rudderjs/hash"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
4
12
|
"license": "MIT",
|
|
5
13
|
"repository": {
|
|
6
14
|
"type": "git",
|
|
@@ -11,7 +19,7 @@
|
|
|
11
19
|
"files": [
|
|
12
20
|
"dist",
|
|
13
21
|
"boost",
|
|
14
|
-
"
|
|
22
|
+
"views",
|
|
15
23
|
"schema"
|
|
16
24
|
],
|
|
17
25
|
"main": "./dist/index.js",
|
|
@@ -21,29 +29,51 @@
|
|
|
21
29
|
"import": "./dist/index.js",
|
|
22
30
|
"types": "./dist/index.d.ts"
|
|
23
31
|
},
|
|
32
|
+
"./routes": {
|
|
33
|
+
"import": "./dist/routes.js",
|
|
34
|
+
"types": "./dist/routes.d.ts"
|
|
35
|
+
},
|
|
36
|
+
"./gate-observers": {
|
|
37
|
+
"import": "./dist/gate-observers.js",
|
|
38
|
+
"types": "./dist/gate-observers.d.ts"
|
|
39
|
+
},
|
|
40
|
+
"./views/react/Login": "./views/react/Login.tsx",
|
|
41
|
+
"./views/react/Register": "./views/react/Register.tsx",
|
|
42
|
+
"./views/react/ForgotPassword": "./views/react/ForgotPassword.tsx",
|
|
43
|
+
"./views/react/ResetPassword": "./views/react/ResetPassword.tsx",
|
|
24
44
|
"./package.json": "./package.json"
|
|
25
45
|
},
|
|
26
46
|
"dependencies": {
|
|
27
|
-
"@rudderjs/
|
|
28
|
-
"@rudderjs/
|
|
47
|
+
"@rudderjs/contracts": "0.0.4",
|
|
48
|
+
"@rudderjs/core": "0.0.9"
|
|
29
49
|
},
|
|
30
50
|
"peerDependencies": {
|
|
31
|
-
"@rudderjs/
|
|
32
|
-
"@rudderjs/
|
|
51
|
+
"@rudderjs/hash": "0.0.2",
|
|
52
|
+
"@rudderjs/session": "0.0.6",
|
|
53
|
+
"@rudderjs/router": "0.0.4",
|
|
54
|
+
"@rudderjs/view": "0.0.2"
|
|
33
55
|
},
|
|
34
56
|
"peerDependenciesMeta": {
|
|
35
57
|
"@rudderjs/hash": {
|
|
36
58
|
"optional": false
|
|
37
59
|
},
|
|
60
|
+
"@rudderjs/router": {
|
|
61
|
+
"optional": false
|
|
62
|
+
},
|
|
38
63
|
"@rudderjs/session": {
|
|
39
64
|
"optional": false
|
|
65
|
+
},
|
|
66
|
+
"@rudderjs/view": {
|
|
67
|
+
"optional": false
|
|
40
68
|
}
|
|
41
69
|
},
|
|
42
70
|
"devDependencies": {
|
|
43
71
|
"@types/node": "^20.0.0",
|
|
44
72
|
"typescript": "^5.4.0",
|
|
45
|
-
"@rudderjs/hash": "0.0.
|
|
46
|
-
"@rudderjs/
|
|
73
|
+
"@rudderjs/hash": "0.0.2",
|
|
74
|
+
"@rudderjs/router": "0.0.4",
|
|
75
|
+
"@rudderjs/view": "0.0.2",
|
|
76
|
+
"@rudderjs/session": "0.0.6"
|
|
47
77
|
},
|
|
48
78
|
"author": "Suleiman Shahbari",
|
|
49
79
|
"scripts": {
|