@robelest/convex-auth 0.0.2 → 0.0.3-preview
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/dist/bin.cjs +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +10 -1
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/component.d.ts +48 -0
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/index.d.ts +1 -2
- package/dist/component/index.d.ts.map +1 -1
- package/dist/component/index.js +0 -1
- package/dist/component/index.js.map +1 -1
- package/dist/component/public.d.ts +160 -0
- package/dist/component/public.d.ts.map +1 -1
- package/dist/component/public.js +124 -0
- package/dist/component/public.js.map +1 -1
- package/dist/component/schema.d.ts +79 -0
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +45 -0
- package/dist/component/schema.js.map +1 -1
- package/dist/server/convex-auth.d.ts +66 -13
- package/dist/server/convex-auth.d.ts.map +1 -1
- package/dist/server/convex-auth.js +154 -39
- package/dist/server/convex-auth.js.map +1 -1
- package/dist/server/email-templates.d.ts +18 -0
- package/dist/server/email-templates.d.ts.map +1 -0
- package/dist/server/email-templates.js +74 -0
- package/dist/server/email-templates.js.map +1 -0
- package/dist/server/implementation/apiKey.d.ts +74 -0
- package/dist/server/implementation/apiKey.d.ts.map +1 -0
- package/dist/server/implementation/apiKey.js +140 -0
- package/dist/server/implementation/apiKey.js.map +1 -0
- package/dist/server/implementation/index.d.ts +89 -0
- package/dist/server/implementation/index.d.ts.map +1 -1
- package/dist/server/implementation/index.js +132 -0
- package/dist/server/implementation/index.js.map +1 -1
- package/dist/server/implementation/signIn.js +3 -14
- package/dist/server/implementation/signIn.js.map +1 -1
- package/dist/server/index.d.ts +26 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +63 -16
- package/dist/server/index.js.map +1 -1
- package/dist/server/provider_utils.d.ts +2 -0
- package/dist/server/provider_utils.d.ts.map +1 -1
- package/dist/server/types.d.ts +205 -2
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/version.d.ts +2 -0
- package/dist/server/version.d.ts.map +1 -0
- package/dist/server/version.js +3 -0
- package/dist/server/version.js.map +1 -0
- package/package.json +3 -2
- package/src/cli/index.ts +1 -1
- package/src/cli/utils.ts +248 -0
- package/src/client/index.ts +12 -1
- package/src/component/_generated/component.ts +61 -0
- package/src/component/index.ts +4 -1
- package/src/component/public.ts +142 -0
- package/src/component/schema.ts +52 -0
- package/src/server/convex-auth.ts +188 -56
- package/src/server/email-templates.ts +77 -0
- package/src/server/implementation/apiKey.ts +185 -0
- package/src/server/implementation/index.ts +192 -0
- package/src/server/implementation/signIn.ts +2 -12
- package/src/server/index.ts +98 -34
- package/src/server/types.ts +219 -2
- package/src/server/version.ts +2 -0
- package/dist/server/portal.d.ts +0 -116
- package/dist/server/portal.d.ts.map +0 -1
- package/dist/server/portal.js +0 -294
- package/dist/server/portal.js.map +0 -1
- package/src/server/portal.ts +0 -375
|
@@ -6,11 +6,24 @@
|
|
|
6
6
|
* ```ts
|
|
7
7
|
* // convex/auth.ts
|
|
8
8
|
* import { Auth, Portal } from "@robelest/convex-auth/component";
|
|
9
|
-
* import
|
|
9
|
+
* import google from "@auth/core/providers/google";
|
|
10
10
|
* import { components } from "./_generated/api";
|
|
11
11
|
*
|
|
12
12
|
* export const auth = new Auth(components.auth, {
|
|
13
|
-
* providers: [
|
|
13
|
+
* providers: [google],
|
|
14
|
+
* email: {
|
|
15
|
+
* from: "My App <noreply@example.com>",
|
|
16
|
+
* send: async (_ctx, { from, to, subject, html }) => {
|
|
17
|
+
* await fetch("https://api.resend.com/emails", {
|
|
18
|
+
* method: "POST",
|
|
19
|
+
* headers: {
|
|
20
|
+
* Authorization: `Bearer ${process.env.AUTH_RESEND_KEY}`,
|
|
21
|
+
* "Content-Type": "application/json",
|
|
22
|
+
* },
|
|
23
|
+
* body: JSON.stringify({ from, to, subject, html }),
|
|
24
|
+
* });
|
|
25
|
+
* },
|
|
26
|
+
* },
|
|
14
27
|
* });
|
|
15
28
|
* export const { signIn, signOut, store } = auth;
|
|
16
29
|
* export const { portalQuery, portalMutation, portalInternal } = Portal(auth);
|
|
@@ -18,12 +31,14 @@
|
|
|
18
31
|
*
|
|
19
32
|
* @module
|
|
20
33
|
*/
|
|
21
|
-
import { queryGeneric, mutationGeneric, internalMutationGeneric, } from "convex/server";
|
|
34
|
+
import { queryGeneric, mutationGeneric, internalMutationGeneric, httpActionGeneric, } from "convex/server";
|
|
22
35
|
import { v } from "convex/values";
|
|
23
36
|
import { Auth as AuthFactory } from "./implementation/index.js";
|
|
24
37
|
import { registerStaticRoutes } from "@convex-dev/self-hosting";
|
|
25
38
|
import { portalMagicLinkEmail } from "./portal-email.js";
|
|
26
|
-
import
|
|
39
|
+
import { defaultMagicLinkEmail } from "./email-templates.js";
|
|
40
|
+
import emailProvider from "../providers/email.js";
|
|
41
|
+
import { AUTH_VERSION } from "./version.js";
|
|
27
42
|
// ============================================================================
|
|
28
43
|
// Helpers
|
|
29
44
|
// ============================================================================
|
|
@@ -51,7 +66,11 @@ async function requirePortalAdmin(ctx, authComponent, userId) {
|
|
|
51
66
|
*
|
|
52
67
|
* ```ts
|
|
53
68
|
* export const auth = new Auth(components.auth, {
|
|
54
|
-
* providers: [
|
|
69
|
+
* providers: [google, password],
|
|
70
|
+
* email: {
|
|
71
|
+
* from: "My App <noreply@example.com>",
|
|
72
|
+
* send: (ctx, params) => resend.sendEmail(ctx, params),
|
|
73
|
+
* },
|
|
55
74
|
* });
|
|
56
75
|
* export const { signIn, signOut, store } = auth;
|
|
57
76
|
* export const { portalQuery, portalMutation, portalInternal } = Portal(auth);
|
|
@@ -87,44 +106,59 @@ export class Auth {
|
|
|
87
106
|
get passkey() { return this._auth.passkey; }
|
|
88
107
|
/** TOTP helpers */
|
|
89
108
|
get totp() { return this._auth.totp; }
|
|
109
|
+
/** API key helpers: `.create(ctx, ...)`, `.verify(ctx, ...)`, `.list(ctx, ...)`, `.revoke(ctx, ...)` */
|
|
110
|
+
get key() { return this._auth.key; }
|
|
90
111
|
constructor(component, config) {
|
|
91
112
|
this.component = component;
|
|
92
113
|
// Derive portal URL from CONVEX_SITE_URL
|
|
93
114
|
this.portalUrl = process.env.CONVEX_SITE_URL
|
|
94
115
|
? `${process.env.CONVEX_SITE_URL.replace(/\/$/, "")}/auth`
|
|
95
116
|
: "/auth";
|
|
96
|
-
|
|
117
|
+
const emailTransport = config.email;
|
|
97
118
|
const providers = [...config.providers];
|
|
98
|
-
|
|
119
|
+
// Auto-register user-facing magic link provider when email is configured.
|
|
120
|
+
// Skipped if the user already registered their own provider with id "email".
|
|
121
|
+
const hasUserEmailProvider = providers.some((p) => typeof p === "object" && "id" in p && p.id === "email");
|
|
122
|
+
if (emailTransport && !hasUserEmailProvider) {
|
|
123
|
+
providers.push(emailProvider({
|
|
124
|
+
id: "email",
|
|
125
|
+
maxAge: 60 * 60 * 24, // 24 hours
|
|
126
|
+
authorize: undefined, // Magic link — no OTP email check needed
|
|
127
|
+
async sendVerificationRequest({ identifier, url }, ctx) {
|
|
128
|
+
if (!ctx) {
|
|
129
|
+
throw new Error("Action context is required for email delivery");
|
|
130
|
+
}
|
|
131
|
+
const { host } = new URL(url);
|
|
132
|
+
await emailTransport.send(ctx, {
|
|
133
|
+
from: emailTransport.from,
|
|
134
|
+
to: identifier,
|
|
135
|
+
subject: `Sign in to ${host}`,
|
|
136
|
+
html: defaultMagicLinkEmail(url, host),
|
|
137
|
+
});
|
|
138
|
+
},
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
// Auto-register portal admin magic link provider.
|
|
142
|
+
// Uses its own styled dark-theme email template.
|
|
143
|
+
providers.push(emailProvider({
|
|
99
144
|
id: "portal",
|
|
100
145
|
maxAge: 60 * 60 * 24, // 24 hours
|
|
101
|
-
authorize: undefined, // Magic link — no email check needed
|
|
102
|
-
async sendVerificationRequest({ identifier, url, expires }) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (!siteUrl) {
|
|
107
|
-
throw new Error("CONVEX_SITE_URL is required to send portal magic link email");
|
|
146
|
+
authorize: undefined, // Magic link — no OTP email check needed
|
|
147
|
+
async sendVerificationRequest({ identifier, url, expires }, ctx) {
|
|
148
|
+
if (!emailTransport) {
|
|
149
|
+
throw new Error("Auth email config is required for the portal. " +
|
|
150
|
+
"Configure email: { from, send } in your Auth constructor.");
|
|
108
151
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
headers: {
|
|
112
|
-
"Content-Type": "application/json",
|
|
113
|
-
...(process.env.AUTH_EMAIL_DISPATCH_SECRET
|
|
114
|
-
? {
|
|
115
|
-
"x-auth-email-dispatch-secret": process.env.AUTH_EMAIL_DISPATCH_SECRET,
|
|
116
|
-
}
|
|
117
|
-
: {}),
|
|
118
|
-
},
|
|
119
|
-
body: JSON.stringify({
|
|
120
|
-
to: identifier,
|
|
121
|
-
subject: "Sign in to Convex Auth Portal",
|
|
122
|
-
html,
|
|
123
|
-
}),
|
|
124
|
-
});
|
|
125
|
-
if (!response.ok) {
|
|
126
|
-
throw new Error(`Could not send portal magic link email: ${response.status}`);
|
|
152
|
+
if (!ctx) {
|
|
153
|
+
throw new Error("Action context is required for email delivery");
|
|
127
154
|
}
|
|
155
|
+
const hours = Math.max(1, Math.floor((+expires - Date.now()) / (60 * 60 * 1000)));
|
|
156
|
+
await emailTransport.send(ctx, {
|
|
157
|
+
from: emailTransport.from,
|
|
158
|
+
to: identifier,
|
|
159
|
+
subject: "Sign in to Auth Portal",
|
|
160
|
+
html: portalMagicLinkEmail(url, hours),
|
|
161
|
+
});
|
|
128
162
|
},
|
|
129
163
|
}));
|
|
130
164
|
// Initialize the core AuthFactory()
|
|
@@ -155,8 +189,30 @@ export class Auth {
|
|
|
155
189
|
addHttpRoutes(http, opts) {
|
|
156
190
|
// Core auth routes (OAuth, JWKS, etc.)
|
|
157
191
|
this._auth.addHttpRoutes(http);
|
|
158
|
-
// Portal static file serving
|
|
159
192
|
const prefix = opts?.pathPrefix ?? "/auth";
|
|
193
|
+
// Portal configuration endpoint — serves Convex URLs + version info.
|
|
194
|
+
// The portal SPA fetches this at startup to discover its Convex backend,
|
|
195
|
+
// which is critical for custom domain deployments where the hostname
|
|
196
|
+
// alone doesn't reveal the Convex cloud URL.
|
|
197
|
+
// Registered as an exact path match before the static file prefix catch-all.
|
|
198
|
+
http.route({
|
|
199
|
+
path: `${prefix}/.well-known/portal-config`,
|
|
200
|
+
method: "GET",
|
|
201
|
+
handler: httpActionGeneric(async () => {
|
|
202
|
+
return new Response(JSON.stringify({
|
|
203
|
+
convexUrl: process.env.CONVEX_CLOUD_URL,
|
|
204
|
+
siteUrl: process.env.CONVEX_SITE_URL,
|
|
205
|
+
version: AUTH_VERSION,
|
|
206
|
+
}), {
|
|
207
|
+
status: 200,
|
|
208
|
+
headers: {
|
|
209
|
+
"Content-Type": "application/json",
|
|
210
|
+
"Cache-Control": "public, max-age=60, stale-while-revalidate=60",
|
|
211
|
+
"Access-Control-Allow-Origin": "*",
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
}),
|
|
215
|
+
});
|
|
160
216
|
// Create a shim that maps the self-hosting ComponentApi shape
|
|
161
217
|
// to the auth component's portalBridge functions
|
|
162
218
|
const selfHostingShim = {
|
|
@@ -248,6 +304,17 @@ export function Portal(auth) {
|
|
|
248
304
|
}
|
|
249
305
|
case "getCurrentDeployment":
|
|
250
306
|
return await ctx.runQuery(authComponent.portalBridge.getCurrentDeployment);
|
|
307
|
+
// ---- API Keys (portal admin) ----
|
|
308
|
+
case "listKeys":
|
|
309
|
+
return await ctx.runQuery(authComponent.public.keyList);
|
|
310
|
+
case "getUserKeys":
|
|
311
|
+
return await ctx.runQuery(authComponent.public.keyListByUserId, {
|
|
312
|
+
userId: userId,
|
|
313
|
+
});
|
|
314
|
+
case "getKey":
|
|
315
|
+
return await ctx.runQuery(authComponent.public.keyGetById, {
|
|
316
|
+
keyId: userId, // userId param repurposed as keyId
|
|
317
|
+
});
|
|
251
318
|
default:
|
|
252
319
|
throw new Error(`Unknown portal query action: ${action}`);
|
|
253
320
|
}
|
|
@@ -258,14 +325,27 @@ export function Portal(auth) {
|
|
|
258
325
|
action: v.string(),
|
|
259
326
|
sessionId: v.optional(v.string()),
|
|
260
327
|
tokenHash: v.optional(v.string()),
|
|
328
|
+
// API key fields
|
|
329
|
+
keyId: v.optional(v.string()),
|
|
330
|
+
keyUserId: v.optional(v.string()),
|
|
331
|
+
keyName: v.optional(v.string()),
|
|
332
|
+
keyScopes: v.optional(v.array(v.object({
|
|
333
|
+
resource: v.string(),
|
|
334
|
+
actions: v.array(v.string()),
|
|
335
|
+
}))),
|
|
336
|
+
keyRateLimit: v.optional(v.object({
|
|
337
|
+
maxRequests: v.number(),
|
|
338
|
+
windowMs: v.number(),
|
|
339
|
+
})),
|
|
340
|
+
keyExpiresAt: v.optional(v.number()),
|
|
261
341
|
},
|
|
262
|
-
handler: async (ctx,
|
|
342
|
+
handler: async (ctx, args) => {
|
|
263
343
|
const currentUserId = await authHelper.user.require(ctx);
|
|
264
|
-
switch (action) {
|
|
344
|
+
switch (args.action) {
|
|
265
345
|
case "acceptInvite": {
|
|
266
|
-
if (!tokenHash)
|
|
346
|
+
if (!args.tokenHash)
|
|
267
347
|
throw new Error("tokenHash required");
|
|
268
|
-
const invite = await ctx.runQuery(authComponent.public.inviteGetByTokenHash, { tokenHash });
|
|
348
|
+
const invite = await ctx.runQuery(authComponent.public.inviteGetByTokenHash, { tokenHash: args.tokenHash });
|
|
269
349
|
if (!invite)
|
|
270
350
|
throw new Error("Invalid invite token");
|
|
271
351
|
if (invite.status !== "pending") {
|
|
@@ -283,12 +363,47 @@ export function Portal(auth) {
|
|
|
283
363
|
case "revokeSession": {
|
|
284
364
|
await requirePortalAdmin(ctx, authComponent, currentUserId);
|
|
285
365
|
await ctx.runMutation(authComponent.public.sessionDelete, {
|
|
286
|
-
sessionId: sessionId,
|
|
366
|
+
sessionId: args.sessionId,
|
|
367
|
+
});
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
// ---- API Keys (portal admin) ----
|
|
371
|
+
case "createKey": {
|
|
372
|
+
await requirePortalAdmin(ctx, authComponent, currentUserId);
|
|
373
|
+
const result = await authHelper.key.create(ctx, {
|
|
374
|
+
userId: args.keyUserId,
|
|
375
|
+
name: args.keyName,
|
|
376
|
+
scopes: args.keyScopes ?? [],
|
|
377
|
+
rateLimit: args.keyRateLimit,
|
|
378
|
+
expiresAt: args.keyExpiresAt,
|
|
287
379
|
});
|
|
380
|
+
// Return the raw key — portal will show it once
|
|
381
|
+
return result;
|
|
382
|
+
}
|
|
383
|
+
case "revokeKey": {
|
|
384
|
+
await requirePortalAdmin(ctx, authComponent, currentUserId);
|
|
385
|
+
await authHelper.key.revoke(ctx, args.keyId);
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
case "deleteKey": {
|
|
389
|
+
await requirePortalAdmin(ctx, authComponent, currentUserId);
|
|
390
|
+
await authHelper.key.remove(ctx, args.keyId);
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
case "updateKey": {
|
|
394
|
+
await requirePortalAdmin(ctx, authComponent, currentUserId);
|
|
395
|
+
const data = {};
|
|
396
|
+
if (args.keyName)
|
|
397
|
+
data.name = args.keyName;
|
|
398
|
+
if (args.keyScopes)
|
|
399
|
+
data.scopes = args.keyScopes;
|
|
400
|
+
if (args.keyRateLimit)
|
|
401
|
+
data.rateLimit = args.keyRateLimit;
|
|
402
|
+
await authHelper.key.update(ctx, args.keyId, data);
|
|
288
403
|
return;
|
|
289
404
|
}
|
|
290
405
|
default:
|
|
291
|
-
throw new Error(`Unknown portal mutation action: ${action}`);
|
|
406
|
+
throw new Error(`Unknown portal mutation action: ${args.action}`);
|
|
292
407
|
}
|
|
293
408
|
},
|
|
294
409
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convex-auth.js","sourceRoot":"","sources":["../../src/server/convex-auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"convex-auth.js","sourceRoot":"","sources":["../../src/server/convex-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default email templates generated by the Auth library.
|
|
3
|
+
*
|
|
4
|
+
* These are used when the library sends emails on behalf of the developer
|
|
5
|
+
* (magic links, portal admin sign-in). The developer provides the transport
|
|
6
|
+
* via `email.send`; the library provides the content.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Default magic link email template.
|
|
12
|
+
*
|
|
13
|
+
* Clean, minimal design that works across email clients.
|
|
14
|
+
* Used by the auto-registered `email` provider when `email` is
|
|
15
|
+
* configured in the Auth constructor.
|
|
16
|
+
*/
|
|
17
|
+
export declare function defaultMagicLinkEmail(url: string, host: string): string;
|
|
18
|
+
//# sourceMappingURL=email-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-templates.d.ts","sourceRoot":"","sources":["../../src/server/email-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA2DvE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default email templates generated by the Auth library.
|
|
3
|
+
*
|
|
4
|
+
* These are used when the library sends emails on behalf of the developer
|
|
5
|
+
* (magic links, portal admin sign-in). The developer provides the transport
|
|
6
|
+
* via `email.send`; the library provides the content.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Default magic link email template.
|
|
12
|
+
*
|
|
13
|
+
* Clean, minimal design that works across email clients.
|
|
14
|
+
* Used by the auto-registered `email` provider when `email` is
|
|
15
|
+
* configured in the Auth constructor.
|
|
16
|
+
*/
|
|
17
|
+
export function defaultMagicLinkEmail(url, host) {
|
|
18
|
+
const escapedHost = host.replace(/[&<>"']/g, (c) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[c]);
|
|
19
|
+
return `<!DOCTYPE html>
|
|
20
|
+
<html lang="en">
|
|
21
|
+
<head>
|
|
22
|
+
<meta charset="utf-8" />
|
|
23
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
24
|
+
<title>Sign in to ${escapedHost}</title>
|
|
25
|
+
</head>
|
|
26
|
+
<body style="margin:0;padding:0;background-color:#f9fafb;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;">
|
|
27
|
+
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background-color:#f9fafb;padding:40px 16px;">
|
|
28
|
+
<tr>
|
|
29
|
+
<td align="center">
|
|
30
|
+
<table role="presentation" width="480" cellpadding="0" cellspacing="0" style="background-color:#ffffff;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;">
|
|
31
|
+
<tr>
|
|
32
|
+
<td style="padding:32px 32px 0 32px;text-align:center;">
|
|
33
|
+
<h1 style="margin:0 0 8px 0;font-size:20px;font-weight:600;color:#111827;line-height:1.3;">
|
|
34
|
+
Sign in to ${escapedHost}
|
|
35
|
+
</h1>
|
|
36
|
+
</td>
|
|
37
|
+
</tr>
|
|
38
|
+
<tr>
|
|
39
|
+
<td style="padding:24px 32px;">
|
|
40
|
+
<p style="margin:0 0 24px 0;font-size:15px;line-height:1.6;color:#4b5563;text-align:center;">
|
|
41
|
+
Click the button below to sign in. This link will expire shortly.
|
|
42
|
+
</p>
|
|
43
|
+
<table role="presentation" width="100%" cellpadding="0" cellspacing="0">
|
|
44
|
+
<tr>
|
|
45
|
+
<td align="center" style="padding:0 0 24px 0;">
|
|
46
|
+
<a href="${url}" target="_blank" style="display:inline-block;background-color:#111827;color:#ffffff;font-size:15px;font-weight:600;text-decoration:none;padding:12px 32px;border-radius:6px;line-height:1;">
|
|
47
|
+
Sign in
|
|
48
|
+
</a>
|
|
49
|
+
</td>
|
|
50
|
+
</tr>
|
|
51
|
+
</table>
|
|
52
|
+
<p style="margin:0 0 12px 0;font-size:13px;line-height:1.6;color:#9ca3af;">
|
|
53
|
+
If the button doesn't work, copy and paste this URL into your browser:
|
|
54
|
+
</p>
|
|
55
|
+
<p style="margin:0;font-size:13px;line-height:1.5;color:#6b7280;word-break:break-all;">
|
|
56
|
+
${url}
|
|
57
|
+
</p>
|
|
58
|
+
</td>
|
|
59
|
+
</tr>
|
|
60
|
+
<tr>
|
|
61
|
+
<td style="padding:20px 32px;border-top:1px solid #e5e7eb;">
|
|
62
|
+
<p style="margin:0;font-size:12px;line-height:1.5;color:#9ca3af;text-align:center;">
|
|
63
|
+
If you didn't request this email, you can safely ignore it.
|
|
64
|
+
</p>
|
|
65
|
+
</td>
|
|
66
|
+
</tr>
|
|
67
|
+
</table>
|
|
68
|
+
</td>
|
|
69
|
+
</tr>
|
|
70
|
+
</table>
|
|
71
|
+
</body>
|
|
72
|
+
</html>`;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=email-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-templates.js","sourceRoot":"","sources":["../../src/server/email-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,IAAY;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CACjD,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAE,CAC9E,CAAC;IAEF,OAAO;;;;;sBAKa,WAAW;;;;;;;;;;6BAUJ,WAAW;;;;;;;;;;;;+BAYT,GAAG;;;;;;;;;;kBAUhB,GAAG;;;;;;;;;;;;;;;;QAgBb,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Key crypto utilities.
|
|
3
|
+
*
|
|
4
|
+
* Uses `@oslojs/crypto` primitives for key generation and hashing:
|
|
5
|
+
* - SHA-256 for hashing keys (API keys have high entropy, no need for bcrypt)
|
|
6
|
+
* - Cryptographically secure random generation for key material
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import type { KeyScope, ScopeChecker } from "../types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Generate a new API key.
|
|
13
|
+
*
|
|
14
|
+
* Returns the raw key (to be shown once to the user) and metadata for storage.
|
|
15
|
+
* The raw key is `{prefix}{32 random alphanumeric chars}`.
|
|
16
|
+
*
|
|
17
|
+
* @param prefix - Key prefix, defaults to "sk_live_"
|
|
18
|
+
* @returns `{ raw, hashedKey, displayPrefix }`
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateApiKey(prefix?: string): Promise<{
|
|
21
|
+
/** The full raw key — show to user once, never store. */
|
|
22
|
+
raw: string;
|
|
23
|
+
/** SHA-256 hex hash of the raw key — store this. */
|
|
24
|
+
hashedKey: string;
|
|
25
|
+
/** Truncated prefix for display (e.g. "sk_live_aBc1..."). */
|
|
26
|
+
displayPrefix: string;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Hash a raw API key for lookup.
|
|
30
|
+
*
|
|
31
|
+
* Used during Bearer token verification to find the stored key record.
|
|
32
|
+
*/
|
|
33
|
+
export declare function hashApiKey(rawKey: string): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Build a `ScopeChecker` from an array of `KeyScope` entries.
|
|
36
|
+
*
|
|
37
|
+
* The checker provides a `.can(resource, action)` method that returns `true`
|
|
38
|
+
* if any scope entry grants the requested permission.
|
|
39
|
+
*
|
|
40
|
+
* A wildcard action `"*"` grants all actions on that resource.
|
|
41
|
+
* A wildcard resource `"*"` grants the action on all resources.
|
|
42
|
+
*/
|
|
43
|
+
export declare function buildScopeChecker(scopes: KeyScope[]): ScopeChecker;
|
|
44
|
+
/**
|
|
45
|
+
* Validate that requested scopes are a subset of the allowed scopes
|
|
46
|
+
* defined in the API key config.
|
|
47
|
+
*
|
|
48
|
+
* @param requested - Scopes the user wants on the new key.
|
|
49
|
+
* @param allowed - The scope definition from `apiKeys.scopes` config.
|
|
50
|
+
* @throws Error if any requested scope is not in the allowed set.
|
|
51
|
+
*/
|
|
52
|
+
export declare function validateScopes(requested: KeyScope[], allowed: Record<string, string[]> | undefined): void;
|
|
53
|
+
/**
|
|
54
|
+
* Check whether a key is rate-limited based on its stored state.
|
|
55
|
+
*
|
|
56
|
+
* Uses the same token-bucket algorithm as sign-in rate limiting:
|
|
57
|
+
* tokens refill linearly over the configured window.
|
|
58
|
+
*
|
|
59
|
+
* @returns `{ limited: boolean; newState: { attemptsLeft, lastAttemptTime } }`
|
|
60
|
+
*/
|
|
61
|
+
export declare function checkKeyRateLimit(rateLimit: {
|
|
62
|
+
maxRequests: number;
|
|
63
|
+
windowMs: number;
|
|
64
|
+
}, state: {
|
|
65
|
+
attemptsLeft: number;
|
|
66
|
+
lastAttemptTime: number;
|
|
67
|
+
} | undefined): {
|
|
68
|
+
limited: boolean;
|
|
69
|
+
newState: {
|
|
70
|
+
attemptsLeft: number;
|
|
71
|
+
lastAttemptTime: number;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=apiKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiKey.d.ts","sourceRoot":"","sources":["../../../src/server/implementation/apiKey.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqB1D;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,MAAM,GAAE,MAA2B,GAAG,OAAO,CAAC;IACjF,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAOD;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAWlE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,GAC5C,IAAI,CAuBN;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EACpD,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACnE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D,CAsCA"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Key crypto utilities.
|
|
3
|
+
*
|
|
4
|
+
* Uses `@oslojs/crypto` primitives for key generation and hashing:
|
|
5
|
+
* - SHA-256 for hashing keys (API keys have high entropy, no need for bcrypt)
|
|
6
|
+
* - Cryptographically secure random generation for key material
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { sha256, generateRandomString } from "./utils.js";
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Constants
|
|
13
|
+
// ============================================================================
|
|
14
|
+
const DEFAULT_KEY_PREFIX = "sk_live_";
|
|
15
|
+
const KEY_RANDOM_LENGTH = 32;
|
|
16
|
+
const KEY_RANDOM_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
17
|
+
/**
|
|
18
|
+
* How many characters of the full key to store as the visible prefix.
|
|
19
|
+
* Includes the prefix string (e.g. "sk_live_") plus a few random chars.
|
|
20
|
+
*/
|
|
21
|
+
const VISIBLE_PREFIX_EXTRA_CHARS = 4;
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Key generation
|
|
24
|
+
// ============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Generate a new API key.
|
|
27
|
+
*
|
|
28
|
+
* Returns the raw key (to be shown once to the user) and metadata for storage.
|
|
29
|
+
* The raw key is `{prefix}{32 random alphanumeric chars}`.
|
|
30
|
+
*
|
|
31
|
+
* @param prefix - Key prefix, defaults to "sk_live_"
|
|
32
|
+
* @returns `{ raw, hashedKey, displayPrefix }`
|
|
33
|
+
*/
|
|
34
|
+
export async function generateApiKey(prefix = DEFAULT_KEY_PREFIX) {
|
|
35
|
+
const randomPart = generateRandomString(KEY_RANDOM_LENGTH, KEY_RANDOM_ALPHABET);
|
|
36
|
+
const raw = `${prefix}${randomPart}`;
|
|
37
|
+
const hashedKey = await sha256(raw);
|
|
38
|
+
const displayPrefix = `${raw.substring(0, prefix.length + VISIBLE_PREFIX_EXTRA_CHARS)}...`;
|
|
39
|
+
return { raw, hashedKey, displayPrefix };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Hash a raw API key for lookup.
|
|
43
|
+
*
|
|
44
|
+
* Used during Bearer token verification to find the stored key record.
|
|
45
|
+
*/
|
|
46
|
+
export async function hashApiKey(rawKey) {
|
|
47
|
+
return sha256(rawKey);
|
|
48
|
+
}
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// Scope checker
|
|
51
|
+
// ============================================================================
|
|
52
|
+
/**
|
|
53
|
+
* Build a `ScopeChecker` from an array of `KeyScope` entries.
|
|
54
|
+
*
|
|
55
|
+
* The checker provides a `.can(resource, action)` method that returns `true`
|
|
56
|
+
* if any scope entry grants the requested permission.
|
|
57
|
+
*
|
|
58
|
+
* A wildcard action `"*"` grants all actions on that resource.
|
|
59
|
+
* A wildcard resource `"*"` grants the action on all resources.
|
|
60
|
+
*/
|
|
61
|
+
export function buildScopeChecker(scopes) {
|
|
62
|
+
return {
|
|
63
|
+
scopes,
|
|
64
|
+
can(resource, action) {
|
|
65
|
+
return scopes.some((scope) => (scope.resource === resource || scope.resource === "*") &&
|
|
66
|
+
(scope.actions.includes(action) || scope.actions.includes("*")));
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Validate that requested scopes are a subset of the allowed scopes
|
|
72
|
+
* defined in the API key config.
|
|
73
|
+
*
|
|
74
|
+
* @param requested - Scopes the user wants on the new key.
|
|
75
|
+
* @param allowed - The scope definition from `apiKeys.scopes` config.
|
|
76
|
+
* @throws Error if any requested scope is not in the allowed set.
|
|
77
|
+
*/
|
|
78
|
+
export function validateScopes(requested, allowed) {
|
|
79
|
+
if (!allowed) {
|
|
80
|
+
// No scope restrictions configured — allow anything.
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
for (const scope of requested) {
|
|
84
|
+
const allowedActions = allowed[scope.resource];
|
|
85
|
+
if (!allowedActions) {
|
|
86
|
+
throw new Error(`Unknown resource "${scope.resource}" in API key scopes. ` +
|
|
87
|
+
`Allowed resources: ${Object.keys(allowed).join(", ")}`);
|
|
88
|
+
}
|
|
89
|
+
for (const action of scope.actions) {
|
|
90
|
+
if (action !== "*" && !allowedActions.includes(action)) {
|
|
91
|
+
throw new Error(`Unknown action "${action}" for resource "${scope.resource}". ` +
|
|
92
|
+
`Allowed actions: ${allowedActions.join(", ")}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// Per-key rate limiting (token-bucket)
|
|
99
|
+
// ============================================================================
|
|
100
|
+
/**
|
|
101
|
+
* Check whether a key is rate-limited based on its stored state.
|
|
102
|
+
*
|
|
103
|
+
* Uses the same token-bucket algorithm as sign-in rate limiting:
|
|
104
|
+
* tokens refill linearly over the configured window.
|
|
105
|
+
*
|
|
106
|
+
* @returns `{ limited: boolean; newState: { attemptsLeft, lastAttemptTime } }`
|
|
107
|
+
*/
|
|
108
|
+
export function checkKeyRateLimit(rateLimit, state) {
|
|
109
|
+
const now = Date.now();
|
|
110
|
+
if (!state) {
|
|
111
|
+
// First request — create initial state with one token consumed.
|
|
112
|
+
return {
|
|
113
|
+
limited: false,
|
|
114
|
+
newState: {
|
|
115
|
+
attemptsLeft: rateLimit.maxRequests - 1,
|
|
116
|
+
lastAttemptTime: now,
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const elapsed = now - state.lastAttemptTime;
|
|
121
|
+
const refillRate = rateLimit.maxRequests / rateLimit.windowMs;
|
|
122
|
+
const refilled = Math.min(rateLimit.maxRequests, state.attemptsLeft + elapsed * refillRate);
|
|
123
|
+
if (refilled < 1) {
|
|
124
|
+
return {
|
|
125
|
+
limited: true,
|
|
126
|
+
newState: {
|
|
127
|
+
attemptsLeft: refilled,
|
|
128
|
+
lastAttemptTime: now,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
limited: false,
|
|
134
|
+
newState: {
|
|
135
|
+
attemptsLeft: refilled - 1,
|
|
136
|
+
lastAttemptTime: now,
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=apiKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiKey.js","sourceRoot":"","sources":["../../../src/server/implementation/apiKey.ts"],"names":[],"mappings":"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"}
|