@veloxts/auth 0.3.3 → 0.3.4
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 +755 -30
- package/dist/adapter.d.ts +710 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +581 -0
- package/dist/adapter.js.map +1 -0
- package/dist/adapters/better-auth.d.ts +271 -0
- package/dist/adapters/better-auth.d.ts.map +1 -0
- package/dist/adapters/better-auth.js +341 -0
- package/dist/adapters/better-auth.js.map +1 -0
- package/dist/adapters/index.d.ts +28 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +28 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/csrf.d.ts +294 -0
- package/dist/csrf.d.ts.map +1 -0
- package/dist/csrf.js +396 -0
- package/dist/csrf.js.map +1 -0
- package/dist/guards.d.ts +139 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +247 -0
- package/dist/guards.js.map +1 -0
- package/dist/hash.d.ts +85 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +220 -0
- package/dist/hash.js.map +1 -0
- package/dist/index.d.ts +25 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +63 -36
- package/dist/index.js.map +1 -1
- package/dist/jwt.d.ts +128 -0
- package/dist/jwt.d.ts.map +1 -0
- package/dist/jwt.js +363 -0
- package/dist/jwt.js.map +1 -0
- package/dist/middleware.d.ts +87 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +241 -0
- package/dist/middleware.js.map +1 -0
- package/dist/plugin.d.ts +107 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +174 -0
- package/dist/plugin.js.map +1 -0
- package/dist/policies.d.ts +137 -0
- package/dist/policies.d.ts.map +1 -0
- package/dist/policies.js +240 -0
- package/dist/policies.js.map +1 -0
- package/dist/session.d.ts +494 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +795 -0
- package/dist/session.js.map +1 -0
- package/dist/types.d.ts +251 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +33 -0
- package/dist/types.js.map +1 -0
- package/package.json +38 -7
package/dist/csrf.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csrf.js","sourceRoot":"","sources":["../src/csrf.ts"],"names":[],"mappings":"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"}
|
package/dist/guards.d.ts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authorization guards for @veloxts/auth
|
|
3
|
+
* @module auth/guards
|
|
4
|
+
*/
|
|
5
|
+
import type { FastifyReply, FastifyRequest } from 'fastify';
|
|
6
|
+
import type { AuthContext, GuardDefinition, GuardFunction, User } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Creates a guard definition from a check function
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const isAdmin = defineGuard({
|
|
13
|
+
* name: 'isAdmin',
|
|
14
|
+
* check: (ctx) => ctx.user?.role === 'admin',
|
|
15
|
+
* message: 'Admin access required',
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function defineGuard<TContext = unknown>(definition: GuardDefinition<TContext>): GuardDefinition<TContext>;
|
|
20
|
+
/**
|
|
21
|
+
* Creates a simple guard from a check function
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const isActive = guard('isActive', (ctx) => ctx.user?.status === 'active');
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function guard<TContext = unknown>(name: string, check: GuardFunction<TContext>): GuardDefinition<TContext>;
|
|
29
|
+
/**
|
|
30
|
+
* Guard that requires authentication
|
|
31
|
+
* Rejects requests without a valid user
|
|
32
|
+
*/
|
|
33
|
+
export declare const authenticated: GuardDefinition<{
|
|
34
|
+
auth?: AuthContext;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Guard that requires a verified email
|
|
38
|
+
*/
|
|
39
|
+
export declare const emailVerified: GuardDefinition<{
|
|
40
|
+
user?: User;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a guard that checks if user has a specific role
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const adminOnly = hasRole('admin');
|
|
48
|
+
* const moderatorOrAdmin = hasRole(['admin', 'moderator']);
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function hasRole(roles: string | string[]): GuardDefinition<{
|
|
52
|
+
user?: User & {
|
|
53
|
+
role?: string;
|
|
54
|
+
};
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Creates a guard that checks if user has specific permissions
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const canEdit = hasPermission('posts.edit');
|
|
62
|
+
* const canManageUsers = hasPermission(['users.create', 'users.delete']);
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function hasPermission(permissions: string | string[]): GuardDefinition<{
|
|
66
|
+
user?: User & {
|
|
67
|
+
permissions?: string[];
|
|
68
|
+
};
|
|
69
|
+
}>;
|
|
70
|
+
/**
|
|
71
|
+
* Creates a guard that checks if user has ANY of the specified permissions
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const canViewOrEdit = hasAnyPermission(['posts.view', 'posts.edit']);
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare function hasAnyPermission(permissions: string[]): GuardDefinition<{
|
|
79
|
+
user?: User & {
|
|
80
|
+
permissions?: string[];
|
|
81
|
+
};
|
|
82
|
+
}>;
|
|
83
|
+
/**
|
|
84
|
+
* Creates a guard that checks a custom condition on the user
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const isPremium = userCan((user) => user.subscription === 'premium');
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function userCan(check: (user: User) => boolean | Promise<boolean>, name?: string): GuardDefinition<{
|
|
92
|
+
user?: User;
|
|
93
|
+
}>;
|
|
94
|
+
/**
|
|
95
|
+
* Creates a guard that combines multiple guards with AND logic
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* const adminWithPermission = allOf([hasRole('admin'), hasPermission('users.delete')]);
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare function allOf<TContext = unknown>(guards: GuardDefinition<TContext>[]): GuardDefinition<TContext>;
|
|
103
|
+
/**
|
|
104
|
+
* Creates a guard that passes if ANY of the guards pass
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const adminOrModerator = anyOf([hasRole('admin'), hasRole('moderator')]);
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare function anyOf<TContext = unknown>(guards: GuardDefinition<TContext>[]): GuardDefinition<TContext>;
|
|
112
|
+
/**
|
|
113
|
+
* Creates a guard that inverts another guard
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const notAdmin = not(hasRole('admin'));
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare function not<TContext = unknown>(guard: GuardDefinition<TContext>): GuardDefinition<TContext>;
|
|
121
|
+
/**
|
|
122
|
+
* Executes a guard and returns the result
|
|
123
|
+
*/
|
|
124
|
+
export declare function executeGuard<TContext>(guard: GuardDefinition<TContext>, ctx: TContext, request: FastifyRequest, reply: FastifyReply): Promise<{
|
|
125
|
+
passed: boolean;
|
|
126
|
+
message?: string;
|
|
127
|
+
statusCode?: number;
|
|
128
|
+
}>;
|
|
129
|
+
/**
|
|
130
|
+
* Executes multiple guards in sequence
|
|
131
|
+
* Returns on first failure
|
|
132
|
+
*/
|
|
133
|
+
export declare function executeGuards<TContext>(guards: GuardDefinition<TContext>[], ctx: TContext, request: FastifyRequest, reply: FastifyReply): Promise<{
|
|
134
|
+
passed: boolean;
|
|
135
|
+
failedGuard?: string;
|
|
136
|
+
message?: string;
|
|
137
|
+
statusCode?: number;
|
|
138
|
+
}>;
|
|
139
|
+
//# sourceMappingURL=guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"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"}
|
package/dist/guards.js
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authorization guards for @veloxts/auth
|
|
3
|
+
* @module auth/guards
|
|
4
|
+
*/
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Guard Factory
|
|
7
|
+
// ============================================================================
|
|
8
|
+
/**
|
|
9
|
+
* Creates a guard definition from a check function
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const isAdmin = defineGuard({
|
|
14
|
+
* name: 'isAdmin',
|
|
15
|
+
* check: (ctx) => ctx.user?.role === 'admin',
|
|
16
|
+
* message: 'Admin access required',
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function defineGuard(definition) {
|
|
21
|
+
return {
|
|
22
|
+
statusCode: 403,
|
|
23
|
+
...definition,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates a simple guard from a check function
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const isActive = guard('isActive', (ctx) => ctx.user?.status === 'active');
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function guard(name, check) {
|
|
35
|
+
return defineGuard({ name, check });
|
|
36
|
+
}
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// Built-in Guards
|
|
39
|
+
// ============================================================================
|
|
40
|
+
/**
|
|
41
|
+
* Guard that requires authentication
|
|
42
|
+
* Rejects requests without a valid user
|
|
43
|
+
*/
|
|
44
|
+
export const authenticated = defineGuard({
|
|
45
|
+
name: 'authenticated',
|
|
46
|
+
check: (ctx) => ctx.auth?.isAuthenticated === true,
|
|
47
|
+
message: 'Authentication required',
|
|
48
|
+
statusCode: 401,
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Guard that requires a verified email
|
|
52
|
+
*/
|
|
53
|
+
export const emailVerified = defineGuard({
|
|
54
|
+
name: 'emailVerified',
|
|
55
|
+
check: (ctx) => ctx.user?.emailVerified === true,
|
|
56
|
+
message: 'Email verification required',
|
|
57
|
+
statusCode: 403,
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* Creates a guard that checks if user has a specific role
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const adminOnly = hasRole('admin');
|
|
65
|
+
* const moderatorOrAdmin = hasRole(['admin', 'moderator']);
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export function hasRole(roles) {
|
|
69
|
+
const roleArray = Array.isArray(roles) ? roles : [roles];
|
|
70
|
+
return defineGuard({
|
|
71
|
+
name: `hasRole:${roleArray.join(',')}`,
|
|
72
|
+
check: (ctx) => {
|
|
73
|
+
const userRole = ctx.user?.role;
|
|
74
|
+
return typeof userRole === 'string' && roleArray.includes(userRole);
|
|
75
|
+
},
|
|
76
|
+
message: `Required role: ${roleArray.join(' or ')}`,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Creates a guard that checks if user has specific permissions
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const canEdit = hasPermission('posts.edit');
|
|
85
|
+
* const canManageUsers = hasPermission(['users.create', 'users.delete']);
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export function hasPermission(permissions) {
|
|
89
|
+
const required = Array.isArray(permissions) ? permissions : [permissions];
|
|
90
|
+
return defineGuard({
|
|
91
|
+
name: `hasPermission:${required.join(',')}`,
|
|
92
|
+
check: (ctx) => {
|
|
93
|
+
const userPermissions = ctx.user?.permissions;
|
|
94
|
+
if (!Array.isArray(userPermissions)) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
return required.every((p) => userPermissions.includes(p));
|
|
98
|
+
},
|
|
99
|
+
message: `Required permissions: ${required.join(', ')}`,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Creates a guard that checks if user has ANY of the specified permissions
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const canViewOrEdit = hasAnyPermission(['posts.view', 'posts.edit']);
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export function hasAnyPermission(permissions) {
|
|
111
|
+
return defineGuard({
|
|
112
|
+
name: `hasAnyPermission:${permissions.join(',')}`,
|
|
113
|
+
check: (ctx) => {
|
|
114
|
+
const userPermissions = ctx.user?.permissions;
|
|
115
|
+
if (!Array.isArray(userPermissions)) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
return permissions.some((p) => userPermissions.includes(p));
|
|
119
|
+
},
|
|
120
|
+
message: `Required one of: ${permissions.join(', ')}`,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Creates a guard that checks a custom condition on the user
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* const isPremium = userCan((user) => user.subscription === 'premium');
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export function userCan(check, name = 'custom') {
|
|
132
|
+
return defineGuard({
|
|
133
|
+
name: `userCan:${name}`,
|
|
134
|
+
check: async (ctx) => {
|
|
135
|
+
if (!ctx.user) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
return check(ctx.user);
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Creates a guard that combines multiple guards with AND logic
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```typescript
|
|
147
|
+
* const adminWithPermission = allOf([hasRole('admin'), hasPermission('users.delete')]);
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export function allOf(guards) {
|
|
151
|
+
return defineGuard({
|
|
152
|
+
name: `allOf:${guards.map((g) => g.name).join(',')}`,
|
|
153
|
+
check: async (ctx, request, reply) => {
|
|
154
|
+
for (const guard of guards) {
|
|
155
|
+
const result = await guard.check(ctx, request, reply);
|
|
156
|
+
if (!result) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return true;
|
|
161
|
+
},
|
|
162
|
+
message: `All conditions required: ${guards.map((g) => g.name).join(', ')}`,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Creates a guard that passes if ANY of the guards pass
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* const adminOrModerator = anyOf([hasRole('admin'), hasRole('moderator')]);
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
export function anyOf(guards) {
|
|
174
|
+
return defineGuard({
|
|
175
|
+
name: `anyOf:${guards.map((g) => g.name).join(',')}`,
|
|
176
|
+
check: async (ctx, request, reply) => {
|
|
177
|
+
for (const guard of guards) {
|
|
178
|
+
const result = await guard.check(ctx, request, reply);
|
|
179
|
+
if (result) {
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return false;
|
|
184
|
+
},
|
|
185
|
+
message: `One of required: ${guards.map((g) => g.name).join(', ')}`,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Creates a guard that inverts another guard
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```typescript
|
|
193
|
+
* const notAdmin = not(hasRole('admin'));
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
export function not(guard) {
|
|
197
|
+
return defineGuard({
|
|
198
|
+
name: `not:${guard.name}`,
|
|
199
|
+
check: async (ctx, request, reply) => {
|
|
200
|
+
const result = await guard.check(ctx, request, reply);
|
|
201
|
+
return !result;
|
|
202
|
+
},
|
|
203
|
+
message: `Condition must not be met: ${guard.name}`,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
// ============================================================================
|
|
207
|
+
// Guard Execution
|
|
208
|
+
// ============================================================================
|
|
209
|
+
/**
|
|
210
|
+
* Executes a guard and returns the result
|
|
211
|
+
*/
|
|
212
|
+
export async function executeGuard(guard, ctx, request, reply) {
|
|
213
|
+
try {
|
|
214
|
+
const passed = await guard.check(ctx, request, reply);
|
|
215
|
+
return {
|
|
216
|
+
passed,
|
|
217
|
+
message: passed ? undefined : guard.message,
|
|
218
|
+
statusCode: passed ? undefined : guard.statusCode,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
return {
|
|
223
|
+
passed: false,
|
|
224
|
+
message: error instanceof Error ? error.message : 'Guard check failed',
|
|
225
|
+
statusCode: 500,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Executes multiple guards in sequence
|
|
231
|
+
* Returns on first failure
|
|
232
|
+
*/
|
|
233
|
+
export async function executeGuards(guards, ctx, request, reply) {
|
|
234
|
+
for (const guard of guards) {
|
|
235
|
+
const result = await executeGuard(guard, ctx, request, reply);
|
|
236
|
+
if (!result.passed) {
|
|
237
|
+
return {
|
|
238
|
+
passed: false,
|
|
239
|
+
failedGuard: guard.name,
|
|
240
|
+
message: result.message,
|
|
241
|
+
statusCode: result.statusCode,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return { passed: true };
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CACzB,UAAqC;IAErC,OAAO;QACL,UAAU,EAAE,GAAG;QACf,GAAG,UAAU;KACd,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,KAAK,CACnB,IAAY,EACZ,KAA8B;IAE9B,OAAO,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAA4C,WAAW,CAAC;IAChF,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI;IAClD,OAAO,EAAE,yBAAyB;IAClC,UAAU,EAAE,GAAG;CAChB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAqC,WAAW,CAAC;IACzE,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI;IAChD,OAAO,EAAE,6BAA6B;IACtC,UAAU,EAAE,GAAG;CAChB,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CACrB,KAAwB;IAExB,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzD,OAAO,WAAW,CAAC;QACjB,IAAI,EAAE,WAAW,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACtC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACb,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;YAChC,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,EAAE,kBAAkB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;KACpD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,WAA8B;IAE9B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAE1E,OAAO,WAAW,CAAC;QACjB,IAAI,EAAE,iBAAiB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC3C,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACb,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,EAAE,yBAAyB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACxD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAqB;IAErB,OAAO,WAAW,CAAC;QACjB,IAAI,EAAE,oBAAoB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACjD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACb,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,oBAAoB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACtD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CACrB,KAAiD,EACjD,IAAI,GAAG,QAAQ;IAEf,OAAO,WAAW,CAAC;QACjB,IAAI,EAAE,WAAW,IAAI,EAAE;QACvB,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,KAAK,CACnB,MAAmC;IAEnC,OAAO,WAAW,CAAC;QACjB,IAAI,EAAE,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACpD,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,4BAA4B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KAC5E,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,KAAK,CACnB,MAAmC;IAEnC,OAAO,WAAW,CAAC;QACjB,IAAI,EAAE,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACpD,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBACtD,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,EAAE,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACpE,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,CACjB,KAAgC;IAEhC,OAAO,WAAW,CAAC;QACjB,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,CAAC,MAAM,CAAC;QACjB,CAAC;QACD,OAAO,EAAE,8BAA8B,KAAK,CAAC,IAAI,EAAE;KACpD,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAgC,EAChC,GAAa,EACb,OAAuB,EACvB,KAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO;YACL,MAAM;YACN,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;YAC3C,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU;SAClD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB;YACtE,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAmC,EACnC,GAAa,EACb,OAAuB,EACvB,KAAmB;IAEnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,KAAK,CAAC,IAAI;gBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
package/dist/hash.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Password hashing utilities for @veloxts/auth
|
|
3
|
+
* @module auth/hash
|
|
4
|
+
*/
|
|
5
|
+
import type { HashConfig } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Password hasher with configurable algorithms
|
|
8
|
+
*
|
|
9
|
+
* Supports bcrypt and argon2 algorithms. Falls back to scrypt-based
|
|
10
|
+
* implementation when native modules are not available.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const hasher = new PasswordHasher({ algorithm: 'bcrypt', bcryptRounds: 12 });
|
|
15
|
+
*
|
|
16
|
+
* // Hash a password
|
|
17
|
+
* const hash = await hasher.hash('mypassword123');
|
|
18
|
+
*
|
|
19
|
+
* // Verify a password
|
|
20
|
+
* const isValid = await hasher.verify('mypassword123', hash);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare class PasswordHasher {
|
|
24
|
+
private readonly config;
|
|
25
|
+
private bcrypt;
|
|
26
|
+
private argon2;
|
|
27
|
+
constructor(config?: HashConfig);
|
|
28
|
+
/**
|
|
29
|
+
* Lazily load bcrypt module
|
|
30
|
+
*/
|
|
31
|
+
private loadBcrypt;
|
|
32
|
+
/**
|
|
33
|
+
* Lazily load argon2 module
|
|
34
|
+
*/
|
|
35
|
+
private loadArgon2;
|
|
36
|
+
/**
|
|
37
|
+
* Hash a password using the configured algorithm
|
|
38
|
+
*/
|
|
39
|
+
hash(password: string): Promise<string>;
|
|
40
|
+
/**
|
|
41
|
+
* Verify a password against a hash
|
|
42
|
+
*/
|
|
43
|
+
verify(password: string, hash: string): Promise<boolean>;
|
|
44
|
+
/**
|
|
45
|
+
* Hash using bcrypt
|
|
46
|
+
*/
|
|
47
|
+
private hashWithBcrypt;
|
|
48
|
+
/**
|
|
49
|
+
* Verify using bcrypt
|
|
50
|
+
*/
|
|
51
|
+
private verifyWithBcrypt;
|
|
52
|
+
/**
|
|
53
|
+
* Hash using argon2
|
|
54
|
+
*/
|
|
55
|
+
private hashWithArgon2;
|
|
56
|
+
/**
|
|
57
|
+
* Verify using argon2
|
|
58
|
+
*/
|
|
59
|
+
private verifyWithArgon2;
|
|
60
|
+
/**
|
|
61
|
+
* Hash using Node.js built-in scrypt (fallback)
|
|
62
|
+
*/
|
|
63
|
+
private hashWithScrypt;
|
|
64
|
+
/**
|
|
65
|
+
* Verify using scrypt
|
|
66
|
+
*/
|
|
67
|
+
private verifyWithScrypt;
|
|
68
|
+
/**
|
|
69
|
+
* Check if a hash needs rehashing (algorithm or cost changed)
|
|
70
|
+
*/
|
|
71
|
+
needsRehash(hash: string): boolean;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Creates a new password hasher instance
|
|
75
|
+
*/
|
|
76
|
+
export declare function createPasswordHasher(config?: HashConfig): PasswordHasher;
|
|
77
|
+
/**
|
|
78
|
+
* Hash a password using the default hasher
|
|
79
|
+
*/
|
|
80
|
+
export declare function hashPassword(password: string): Promise<string>;
|
|
81
|
+
/**
|
|
82
|
+
* Verify a password using the default hasher
|
|
83
|
+
*/
|
|
84
|
+
export declare function verifyPassword(password: string, hash: string): Promise<boolean>;
|
|
85
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiB7C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,MAAM,CAAwC;gBAE1C,MAAM,GAAE,UAAe;IAUnC;;OAEG;YACW,UAAU;IAaxB;;OAEG;YACW,UAAU;IAWxB;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe9D;;OAEG;YACW,cAAc;IAc5B;;OAEG;YACW,gBAAgB;IAK9B;;OAEG;YACW,cAAc;IAmB5B;;OAEG;YACW,gBAAgB;IAK9B;;OAEG;YACW,cAAc;IAM5B;;OAEG;YACW,gBAAgB;IAa9B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAgBnC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,cAAc,CAExE;AAOD;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKpE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKrF"}
|