@robelest/convex-auth 0.0.2 → 0.0.3-preview.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.
Files changed (173) hide show
  1. package/dist/bin.cjs +1 -1
  2. package/dist/client/index.d.ts +33 -9
  3. package/dist/client/index.d.ts.map +1 -1
  4. package/dist/client/index.js +79 -13
  5. package/dist/client/index.js.map +1 -1
  6. package/dist/component/_generated/component.d.ts +48 -0
  7. package/dist/component/_generated/component.d.ts.map +1 -1
  8. package/dist/component/index.d.ts +10 -4
  9. package/dist/component/index.d.ts.map +1 -1
  10. package/dist/component/index.js +8 -3
  11. package/dist/component/index.js.map +1 -1
  12. package/dist/component/public.d.ts +163 -3
  13. package/dist/component/public.d.ts.map +1 -1
  14. package/dist/component/public.js +124 -0
  15. package/dist/component/public.js.map +1 -1
  16. package/dist/component/schema.d.ts +81 -2
  17. package/dist/component/schema.d.ts.map +1 -1
  18. package/dist/component/schema.js +45 -0
  19. package/dist/component/schema.js.map +1 -1
  20. package/dist/providers/anonymous.d.ts +3 -0
  21. package/dist/providers/anonymous.d.ts.map +1 -1
  22. package/dist/providers/anonymous.js +3 -0
  23. package/dist/providers/anonymous.js.map +1 -1
  24. package/dist/providers/credentials.d.ts +3 -0
  25. package/dist/providers/credentials.d.ts.map +1 -1
  26. package/dist/providers/credentials.js +3 -0
  27. package/dist/providers/credentials.js.map +1 -1
  28. package/dist/providers/email.d.ts +3 -0
  29. package/dist/providers/email.d.ts.map +1 -1
  30. package/dist/providers/email.js +3 -0
  31. package/dist/providers/email.js.map +1 -1
  32. package/dist/providers/passkey.d.ts +7 -1
  33. package/dist/providers/passkey.d.ts.map +1 -1
  34. package/dist/providers/passkey.js +7 -1
  35. package/dist/providers/passkey.js.map +1 -1
  36. package/dist/providers/password.d.ts +3 -0
  37. package/dist/providers/password.d.ts.map +1 -1
  38. package/dist/providers/password.js +3 -0
  39. package/dist/providers/password.js.map +1 -1
  40. package/dist/providers/phone.d.ts +3 -0
  41. package/dist/providers/phone.d.ts.map +1 -1
  42. package/dist/providers/phone.js +3 -0
  43. package/dist/providers/phone.js.map +1 -1
  44. package/dist/providers/totp.d.ts +8 -0
  45. package/dist/providers/totp.d.ts.map +1 -1
  46. package/dist/providers/totp.js +8 -0
  47. package/dist/providers/totp.js.map +1 -1
  48. package/dist/server/convex-auth.d.ts +185 -25
  49. package/dist/server/convex-auth.d.ts.map +1 -1
  50. package/dist/server/convex-auth.js +317 -58
  51. package/dist/server/convex-auth.js.map +1 -1
  52. package/dist/server/email-templates.d.ts +18 -0
  53. package/dist/server/email-templates.d.ts.map +1 -0
  54. package/dist/server/email-templates.js +74 -0
  55. package/dist/server/email-templates.js.map +1 -0
  56. package/dist/server/errors.d.ts +146 -0
  57. package/dist/server/errors.d.ts.map +1 -0
  58. package/dist/server/errors.js +176 -0
  59. package/dist/server/errors.js.map +1 -0
  60. package/dist/server/implementation/apiKey.d.ts +74 -0
  61. package/dist/server/implementation/apiKey.d.ts.map +1 -0
  62. package/dist/server/implementation/apiKey.js +139 -0
  63. package/dist/server/implementation/apiKey.js.map +1 -0
  64. package/dist/server/implementation/index.d.ts +151 -14
  65. package/dist/server/implementation/index.d.ts.map +1 -1
  66. package/dist/server/implementation/index.js +216 -24
  67. package/dist/server/implementation/index.js.map +1 -1
  68. package/dist/server/implementation/mutations/createAccountFromCredentials.d.ts.map +1 -1
  69. package/dist/server/implementation/mutations/createAccountFromCredentials.js +2 -1
  70. package/dist/server/implementation/mutations/createAccountFromCredentials.js.map +1 -1
  71. package/dist/server/implementation/mutations/createVerificationCode.d.ts +2 -2
  72. package/dist/server/implementation/mutations/index.d.ts +6 -6
  73. package/dist/server/implementation/mutations/modifyAccount.d.ts.map +1 -1
  74. package/dist/server/implementation/mutations/modifyAccount.js +2 -1
  75. package/dist/server/implementation/mutations/modifyAccount.js.map +1 -1
  76. package/dist/server/implementation/mutations/userOAuth.d.ts.map +1 -1
  77. package/dist/server/implementation/mutations/userOAuth.js +2 -1
  78. package/dist/server/implementation/mutations/userOAuth.js.map +1 -1
  79. package/dist/server/implementation/mutations/verifierSignature.d.ts.map +1 -1
  80. package/dist/server/implementation/mutations/verifierSignature.js +2 -1
  81. package/dist/server/implementation/mutations/verifierSignature.js.map +1 -1
  82. package/dist/server/implementation/passkey.d.ts.map +1 -1
  83. package/dist/server/implementation/passkey.js +28 -29
  84. package/dist/server/implementation/passkey.js.map +1 -1
  85. package/dist/server/implementation/provider.d.ts.map +1 -1
  86. package/dist/server/implementation/provider.js +5 -4
  87. package/dist/server/implementation/provider.js.map +1 -1
  88. package/dist/server/implementation/redirects.d.ts.map +1 -1
  89. package/dist/server/implementation/redirects.js +2 -1
  90. package/dist/server/implementation/redirects.js.map +1 -1
  91. package/dist/server/implementation/refreshTokens.d.ts.map +1 -1
  92. package/dist/server/implementation/refreshTokens.js +2 -1
  93. package/dist/server/implementation/refreshTokens.js.map +1 -1
  94. package/dist/server/implementation/signIn.d.ts.map +1 -1
  95. package/dist/server/implementation/signIn.js +8 -18
  96. package/dist/server/implementation/signIn.js.map +1 -1
  97. package/dist/server/implementation/totp.d.ts.map +1 -1
  98. package/dist/server/implementation/totp.js +16 -17
  99. package/dist/server/implementation/totp.js.map +1 -1
  100. package/dist/server/implementation/users.d.ts.map +1 -1
  101. package/dist/server/implementation/users.js +3 -2
  102. package/dist/server/implementation/users.js.map +1 -1
  103. package/dist/server/index.d.ts +157 -3
  104. package/dist/server/index.d.ts.map +1 -1
  105. package/dist/server/index.js +180 -17
  106. package/dist/server/index.js.map +1 -1
  107. package/dist/server/oauth/authorizationUrl.d.ts.map +1 -1
  108. package/dist/server/oauth/authorizationUrl.js +2 -1
  109. package/dist/server/oauth/authorizationUrl.js.map +1 -1
  110. package/dist/server/oauth/callback.d.ts.map +1 -1
  111. package/dist/server/oauth/callback.js +5 -4
  112. package/dist/server/oauth/callback.js.map +1 -1
  113. package/dist/server/oauth/checks.d.ts.map +1 -1
  114. package/dist/server/oauth/checks.js +2 -1
  115. package/dist/server/oauth/checks.js.map +1 -1
  116. package/dist/server/oauth/convexAuth.d.ts.map +1 -1
  117. package/dist/server/oauth/convexAuth.js +3 -2
  118. package/dist/server/oauth/convexAuth.js.map +1 -1
  119. package/dist/server/provider_utils.d.ts +2 -0
  120. package/dist/server/provider_utils.d.ts.map +1 -1
  121. package/dist/server/types.d.ts +240 -5
  122. package/dist/server/types.d.ts.map +1 -1
  123. package/dist/server/utils.d.ts.map +1 -1
  124. package/dist/server/utils.js +2 -1
  125. package/dist/server/utils.js.map +1 -1
  126. package/dist/server/version.d.ts +2 -0
  127. package/dist/server/version.d.ts.map +1 -0
  128. package/dist/server/version.js +3 -0
  129. package/dist/server/version.js.map +1 -0
  130. package/package.json +7 -2
  131. package/src/cli/index.ts +1 -1
  132. package/src/cli/utils.ts +248 -0
  133. package/src/client/index.ts +105 -15
  134. package/src/component/_generated/component.ts +61 -0
  135. package/src/component/index.ts +11 -2
  136. package/src/component/public.ts +142 -0
  137. package/src/component/schema.ts +52 -0
  138. package/src/providers/anonymous.ts +3 -0
  139. package/src/providers/credentials.ts +3 -0
  140. package/src/providers/email.ts +3 -0
  141. package/src/providers/passkey.ts +8 -1
  142. package/src/providers/password.ts +3 -0
  143. package/src/providers/phone.ts +3 -0
  144. package/src/providers/totp.ts +9 -0
  145. package/src/server/convex-auth.ts +385 -73
  146. package/src/server/email-templates.ts +77 -0
  147. package/src/server/errors.ts +269 -0
  148. package/src/server/implementation/apiKey.ts +186 -0
  149. package/src/server/implementation/index.ts +288 -28
  150. package/src/server/implementation/mutations/createAccountFromCredentials.ts +2 -1
  151. package/src/server/implementation/mutations/modifyAccount.ts +2 -3
  152. package/src/server/implementation/mutations/userOAuth.ts +2 -1
  153. package/src/server/implementation/mutations/verifierSignature.ts +2 -1
  154. package/src/server/implementation/passkey.ts +33 -35
  155. package/src/server/implementation/provider.ts +5 -8
  156. package/src/server/implementation/redirects.ts +2 -3
  157. package/src/server/implementation/refreshTokens.ts +2 -1
  158. package/src/server/implementation/signIn.ts +9 -18
  159. package/src/server/implementation/totp.ts +18 -21
  160. package/src/server/implementation/users.ts +4 -7
  161. package/src/server/index.ts +240 -37
  162. package/src/server/oauth/authorizationUrl.ts +2 -1
  163. package/src/server/oauth/callback.ts +5 -4
  164. package/src/server/oauth/checks.ts +3 -1
  165. package/src/server/oauth/convexAuth.ts +6 -3
  166. package/src/server/types.ts +254 -5
  167. package/src/server/utils.ts +3 -1
  168. package/src/server/version.ts +2 -0
  169. package/dist/server/portal.d.ts +0 -116
  170. package/dist/server/portal.d.ts.map +0 -1
  171. package/dist/server/portal.js +0 -294
  172. package/dist/server/portal.js.map +0 -1
  173. 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 github from "@auth/core/providers/github";
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: [github],
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,15 @@
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 email from "../providers/email.js";
39
+ import { defaultMagicLinkEmail } from "./email-templates.js";
40
+ import emailProvider from "../providers/email.js";
41
+ import { AUTH_VERSION } from "./version.js";
42
+ import { throwAuthError } from "./errors.js";
27
43
  // ============================================================================
28
44
  // Helpers
29
45
  // ============================================================================
@@ -39,7 +55,7 @@ async function requirePortalAdmin(ctx, authComponent, userId) {
39
55
  });
40
56
  const isAdmin = invites.some((invite) => invite.role === "portalAdmin" && invite.acceptedByUserId === userId);
41
57
  if (!isAdmin) {
42
- throw new Error("Not authorized: portal admin access required");
58
+ throwAuthError("PORTAL_NOT_AUTHORIZED");
43
59
  }
44
60
  }
45
61
  // ============================================================================
@@ -51,7 +67,11 @@ async function requirePortalAdmin(ctx, authComponent, userId) {
51
67
  *
52
68
  * ```ts
53
69
  * export const auth = new Auth(components.auth, {
54
- * providers: [github, resend({ ... })],
70
+ * providers: [google, password],
71
+ * email: {
72
+ * from: "My App <noreply@example.com>",
73
+ * send: (ctx, params) => resend.sendEmail(ctx, params),
74
+ * },
55
75
  * });
56
76
  * export const { signIn, signOut, store } = auth;
57
77
  * export const { portalQuery, portalMutation, portalInternal } = Portal(auth);
@@ -71,59 +91,90 @@ export class Auth {
71
91
  /** @internal */
72
92
  portalUrl;
73
93
  // ---- Proxied auth helper sub-objects ----
74
- /** User helpers: `.current(ctx)`, `.require(ctx)`, `.get(ctx, userId)`, `.viewer(ctx)` */
94
+ /** User helpers: `.current(ctx)`, `.require(ctx)`, `.get(ctx, userId)`, `.patch(ctx, userId, data)`, `.viewer(ctx)`, `.group.list(ctx, ...)`, `.group.get(ctx, ...)` */
75
95
  get user() { return this._auth.user; }
76
- /** Session helpers */
96
+ /** Session helpers: `.current(ctx)`, `.invalidate(ctx, { userId, except? })` */
77
97
  get session() { return this._auth.session; }
78
- /** Provider helpers */
98
+ /** Provider helpers: `.signIn(ctx, provider, args)` */
79
99
  get provider() { return this._auth.provider; }
80
- /** Account helpers */
100
+ /** Account helpers: `.create(ctx, args)`, `.get(ctx, args)`, `.updateCredentials(ctx, args)` */
81
101
  get account() { return this._auth.account; }
82
- /** Group helpers */
102
+ /** Group helpers: `.create(ctx, ...)`, `.get(ctx, id)`, `.list(ctx, ...)`, `.update(ctx, ...)`, `.delete(ctx, id)`, `.member.*` */
83
103
  get group() { return this._auth.group; }
84
- /** Invite helpers */
104
+ /** Invite helpers: `.create(ctx, ...)`, `.get(ctx, id)`, `.getByTokenHash(ctx, hash)`, `.list(ctx, ...)`, `.accept(ctx, ...)`, `.revoke(ctx, id)` */
85
105
  get invite() { return this._auth.invite; }
86
- /** Passkey helpers */
106
+ /** Passkey helpers: `.list(ctx, { userId })`, `.rename(ctx, id, name)`, `.remove(ctx, id)` */
87
107
  get passkey() { return this._auth.passkey; }
88
- /** TOTP helpers */
108
+ /** TOTP helpers: `.list(ctx, { userId })`, `.remove(ctx, id)` */
89
109
  get totp() { return this._auth.totp; }
110
+ /** API key helpers: `.create(ctx, ...)`, `.verify(ctx, rawKey)`, `.list(ctx, ...)`, `.get(ctx, id)`, `.update(ctx, ...)`, `.revoke(ctx, id)`, `.remove(ctx, id)` */
111
+ get key() { return this._auth.key; }
112
+ /**
113
+ * @param component - The auth component reference from `components.auth`.
114
+ * @param config - Auth configuration (providers, email transport, session, JWT, callbacks).
115
+ */
90
116
  constructor(component, config) {
91
117
  this.component = component;
92
118
  // Derive portal URL from CONVEX_SITE_URL
93
119
  this.portalUrl = process.env.CONVEX_SITE_URL
94
120
  ? `${process.env.CONVEX_SITE_URL.replace(/\/$/, "")}/auth`
95
121
  : "/auth";
96
- // Auto-register the `portal` email provider for magic link sign-in
122
+ const emailTransport = config.email;
97
123
  const providers = [...config.providers];
98
- providers.push(email({
124
+ // Auto-register user-facing magic link provider when email is configured.
125
+ // Skipped if the user already registered their own provider with id "email".
126
+ const hasUserEmailProvider = providers.some((p) => typeof p === "object" && "id" in p && p.id === "email");
127
+ if (emailTransport && !hasUserEmailProvider) {
128
+ providers.push(emailProvider({
129
+ id: "email",
130
+ maxAge: 60 * 60 * 24, // 24 hours
131
+ authorize: undefined, // Magic link — no OTP email check needed
132
+ async sendVerificationRequest({ identifier, url }, ctx) {
133
+ if (!ctx) {
134
+ throwAuthError("MISSING_ACTION_CONTEXT");
135
+ }
136
+ const { host } = new URL(url);
137
+ await emailTransport.send(ctx, {
138
+ from: emailTransport.from,
139
+ to: identifier,
140
+ subject: `Sign in to ${host}`,
141
+ html: defaultMagicLinkEmail(url, host),
142
+ });
143
+ },
144
+ }));
145
+ }
146
+ // Auto-register portal admin magic link provider.
147
+ // Uses its own styled dark-theme email template.
148
+ providers.push(emailProvider({
99
149
  id: "portal",
100
150
  maxAge: 60 * 60 * 24, // 24 hours
101
- authorize: undefined, // Magic link — no email check needed
102
- async sendVerificationRequest({ identifier, url, expires }) {
103
- const hours = Math.max(1, Math.floor((+expires - Date.now()) / (60 * 60 * 1000)));
104
- const html = portalMagicLinkEmail(url, hours);
105
- const siteUrl = process.env.CONVEX_SITE_URL;
106
- if (!siteUrl) {
107
- throw new Error("CONVEX_SITE_URL is required to send portal magic link email");
151
+ authorize: undefined, // Magic link — no OTP email check needed
152
+ async sendVerificationRequest({ identifier, url, expires }, ctx) {
153
+ if (!emailTransport) {
154
+ throwAuthError("EMAIL_CONFIG_REQUIRED");
108
155
  }
109
- const response = await fetch(`${siteUrl}/auth-email-dispatch`, {
110
- method: "POST",
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
- }),
156
+ if (!ctx) {
157
+ throwAuthError("MISSING_ACTION_CONTEXT");
158
+ }
159
+ // Check authorization BEFORE sending — only portal-authorized emails
160
+ const invites = await ctx.runQuery(component.public.inviteList, {
161
+ status: "accepted",
124
162
  });
125
- if (!response.ok) {
126
- throw new Error(`Could not send portal magic link email: ${response.status}`);
163
+ const hasAccess = invites.some((invite) => invite.role === "portalAdmin" && invite.email === identifier);
164
+ if (!hasAccess) {
165
+ throwAuthError("PORTAL_NOT_AUTHORIZED");
166
+ }
167
+ const hours = Math.max(1, Math.floor((+expires - Date.now()) / (60 * 60 * 1000)));
168
+ try {
169
+ await emailTransport.send(ctx, {
170
+ from: emailTransport.from,
171
+ to: identifier,
172
+ subject: "Sign in to Auth Portal",
173
+ html: portalMagicLinkEmail(url, hours),
174
+ });
175
+ }
176
+ catch (e) {
177
+ throwAuthError("EMAIL_SEND_FAILED", "Failed to send portal sign-in email.", { detail: e instanceof Error ? e.message : String(e) });
127
178
  }
128
179
  },
129
180
  }));
@@ -151,12 +202,38 @@ export class Auth {
151
202
  * auth.addHttpRoutes(http);
152
203
  * export default http;
153
204
  * ```
205
+ *
206
+ * @param http - The Convex HTTP router to register routes on.
207
+ * @param opts.pathPrefix - URL prefix for portal static files. Defaults to `"/auth"`.
208
+ * @param opts.spaFallback - Serve `index.html` for unmatched sub-paths. Defaults to `true`.
154
209
  */
155
210
  addHttpRoutes(http, opts) {
156
211
  // Core auth routes (OAuth, JWKS, etc.)
157
212
  this._auth.addHttpRoutes(http);
158
- // Portal static file serving
159
213
  const prefix = opts?.pathPrefix ?? "/auth";
214
+ // Portal configuration endpoint — serves Convex URLs + version info.
215
+ // The portal SPA fetches this at startup to discover its Convex backend,
216
+ // which is critical for custom domain deployments where the hostname
217
+ // alone doesn't reveal the Convex cloud URL.
218
+ // Registered as an exact path match before the static file prefix catch-all.
219
+ http.route({
220
+ path: `${prefix}/.well-known/portal-config`,
221
+ method: "GET",
222
+ handler: httpActionGeneric(async () => {
223
+ return new Response(JSON.stringify({
224
+ convexUrl: process.env.CONVEX_CLOUD_URL,
225
+ siteUrl: process.env.CONVEX_SITE_URL,
226
+ version: AUTH_VERSION,
227
+ }), {
228
+ status: 200,
229
+ headers: {
230
+ "Content-Type": "application/json",
231
+ "Cache-Control": "public, max-age=60, stale-while-revalidate=60",
232
+ "Access-Control-Allow-Origin": "*",
233
+ },
234
+ });
235
+ }),
236
+ });
160
237
  // Create a shim that maps the self-hosting ComponentApi shape
161
238
  // to the auth component's portalBridge functions
162
239
  const selfHostingShim = {
@@ -181,15 +258,17 @@ export class Auth {
181
258
  // Portal exports (standalone function)
182
259
  // ============================================================================
183
260
  /**
184
- * Create portal function definitions from a ConvexAuth instance.
261
+ * Create portal function definitions from an `Auth` instance.
185
262
  *
186
- * This is a standalone function (not a class method) because Convex's
187
- * bundler can trace through `export const { x } = fn(instance)` but
188
- * cannot trace through `instance.method()`.
263
+ * Standalone function (not a class method) because Convex's bundler
264
+ * can trace `export const { x } = fn(instance)` but not `instance.method()`.
189
265
  *
190
266
  * ```ts
191
267
  * export const { portalQuery, portalMutation, portalInternal } = Portal(auth);
192
268
  * ```
269
+ *
270
+ * @param auth - The `Auth` class instance from your `convex/auth.ts`.
271
+ * @returns `{ portalQuery, portalMutation, portalInternal }` — export all three.
193
272
  */
194
273
  export function Portal(auth) {
195
274
  const authComponent = auth.component;
@@ -236,7 +315,7 @@ export function Portal(auth) {
236
315
  // userId param repurposed as tokenHash for this action
237
316
  const tokenHash = userId;
238
317
  if (!tokenHash)
239
- throw new Error("tokenHash required");
318
+ throwAuthError("INVITE_TOKEN_REQUIRED");
240
319
  const invite = await ctx.runQuery(authComponent.public.inviteGetByTokenHash, { tokenHash });
241
320
  if (!invite || invite.status !== "pending") {
242
321
  return null;
@@ -248,8 +327,19 @@ export function Portal(auth) {
248
327
  }
249
328
  case "getCurrentDeployment":
250
329
  return await ctx.runQuery(authComponent.portalBridge.getCurrentDeployment);
330
+ // ---- API Keys (portal admin) ----
331
+ case "listKeys":
332
+ return await ctx.runQuery(authComponent.public.keyList);
333
+ case "getUserKeys":
334
+ return await ctx.runQuery(authComponent.public.keyListByUserId, {
335
+ userId: userId,
336
+ });
337
+ case "getKey":
338
+ return await ctx.runQuery(authComponent.public.keyGetById, {
339
+ keyId: userId, // userId param repurposed as keyId
340
+ });
251
341
  default:
252
- throw new Error(`Unknown portal query action: ${action}`);
342
+ throwAuthError("PORTAL_UNKNOWN_ACTION", `Unknown portal query action: ${action}`);
253
343
  }
254
344
  },
255
345
  });
@@ -258,21 +348,34 @@ export function Portal(auth) {
258
348
  action: v.string(),
259
349
  sessionId: v.optional(v.string()),
260
350
  tokenHash: v.optional(v.string()),
351
+ // API key fields
352
+ keyId: v.optional(v.string()),
353
+ keyUserId: v.optional(v.string()),
354
+ keyName: v.optional(v.string()),
355
+ keyScopes: v.optional(v.array(v.object({
356
+ resource: v.string(),
357
+ actions: v.array(v.string()),
358
+ }))),
359
+ keyRateLimit: v.optional(v.object({
360
+ maxRequests: v.number(),
361
+ windowMs: v.number(),
362
+ })),
363
+ keyExpiresAt: v.optional(v.number()),
261
364
  },
262
- handler: async (ctx, { action, sessionId, tokenHash, }) => {
365
+ handler: async (ctx, args) => {
263
366
  const currentUserId = await authHelper.user.require(ctx);
264
- switch (action) {
367
+ switch (args.action) {
265
368
  case "acceptInvite": {
266
- if (!tokenHash)
267
- throw new Error("tokenHash required");
268
- const invite = await ctx.runQuery(authComponent.public.inviteGetByTokenHash, { tokenHash });
369
+ if (!args.tokenHash)
370
+ throwAuthError("INVITE_TOKEN_REQUIRED");
371
+ const invite = await ctx.runQuery(authComponent.public.inviteGetByTokenHash, { tokenHash: args.tokenHash });
269
372
  if (!invite)
270
- throw new Error("Invalid invite token");
373
+ throwAuthError("INVALID_INVITE");
271
374
  if (invite.status !== "pending") {
272
- throw new Error(`Invite already ${invite.status}`);
375
+ throwAuthError("INVITE_ALREADY_USED", `Invite already ${invite.status}`);
273
376
  }
274
377
  if (invite.expiresTime && invite.expiresTime < Date.now()) {
275
- throw new Error("Invite has expired");
378
+ throwAuthError("INVITE_EXPIRED");
276
379
  }
277
380
  await ctx.runMutation(authComponent.public.inviteAccept, {
278
381
  inviteId: invite._id,
@@ -283,12 +386,47 @@ export function Portal(auth) {
283
386
  case "revokeSession": {
284
387
  await requirePortalAdmin(ctx, authComponent, currentUserId);
285
388
  await ctx.runMutation(authComponent.public.sessionDelete, {
286
- sessionId: sessionId,
389
+ sessionId: args.sessionId,
287
390
  });
288
391
  return;
289
392
  }
393
+ // ---- API Keys (portal admin) ----
394
+ case "createKey": {
395
+ await requirePortalAdmin(ctx, authComponent, currentUserId);
396
+ const result = await authHelper.key.create(ctx, {
397
+ userId: args.keyUserId,
398
+ name: args.keyName,
399
+ scopes: args.keyScopes ?? [],
400
+ rateLimit: args.keyRateLimit,
401
+ expiresAt: args.keyExpiresAt,
402
+ });
403
+ // Return the raw key — portal will show it once
404
+ return result;
405
+ }
406
+ case "revokeKey": {
407
+ await requirePortalAdmin(ctx, authComponent, currentUserId);
408
+ await authHelper.key.revoke(ctx, args.keyId);
409
+ return;
410
+ }
411
+ case "deleteKey": {
412
+ await requirePortalAdmin(ctx, authComponent, currentUserId);
413
+ await authHelper.key.remove(ctx, args.keyId);
414
+ return;
415
+ }
416
+ case "updateKey": {
417
+ await requirePortalAdmin(ctx, authComponent, currentUserId);
418
+ const data = {};
419
+ if (args.keyName)
420
+ data.name = args.keyName;
421
+ if (args.keyScopes)
422
+ data.scopes = args.keyScopes;
423
+ if (args.keyRateLimit)
424
+ data.rateLimit = args.keyRateLimit;
425
+ await authHelper.key.update(ctx, args.keyId, data);
426
+ return;
427
+ }
290
428
  default:
291
- throw new Error(`Unknown portal mutation action: ${action}`);
429
+ throwAuthError("PORTAL_UNKNOWN_ACTION", `Unknown portal mutation action: ${args.action}`);
292
430
  }
293
431
  },
294
432
  });
@@ -356,10 +494,131 @@ export function Portal(auth) {
356
494
  });
357
495
  }
358
496
  default:
359
- throw new Error(`Unknown portalInternal action: ${args.action}`);
497
+ throwAuthError("PORTAL_UNKNOWN_ACTION", `Unknown portalInternal action: ${args.action}`);
360
498
  }
361
499
  },
362
500
  });
363
501
  return { portalQuery, portalMutation, portalInternal };
364
502
  }
503
+ /**
504
+ * Create a `convex-helpers`–compatible customization object that
505
+ * enriches `ctx.auth` with the authenticated user's data.
506
+ *
507
+ * Standalone function (not a class method) because Convex's bundler
508
+ * can trace `export const x = fn(instance)` but not `instance.method()`.
509
+ *
510
+ * ### Basic usage (with `convex-helpers`)
511
+ *
512
+ * ```ts
513
+ * // convex/functions.ts
514
+ * import { customQuery, customMutation } from "convex-helpers/server/customFunctions";
515
+ * import { query as rawQuery, mutation as rawMutation } from "./_generated/server";
516
+ * import { AuthCtx } from "\@robelest/convex-auth/component";
517
+ * import { auth } from "./auth";
518
+ *
519
+ * const authCtx = AuthCtx(auth);
520
+ *
521
+ * export const query = customQuery(rawQuery, authCtx);
522
+ * export const mutation = customMutation(rawMutation, authCtx);
523
+ * ```
524
+ *
525
+ * Then in any function file:
526
+ *
527
+ * ```ts
528
+ * // convex/messages.ts
529
+ * import { query, mutation } from "./functions";
530
+ *
531
+ * export const list = query({
532
+ * args: {},
533
+ * handler: async (ctx) => {
534
+ * // ctx.auth.userId and ctx.auth.user are already resolved
535
+ * return ctx.db.query("messages").collect();
536
+ * },
537
+ * });
538
+ * ```
539
+ *
540
+ * ### Optional auth (public routes)
541
+ *
542
+ * ```ts
543
+ * export const publicQuery = customQuery(rawQuery, AuthCtx(auth, { optional: true }));
544
+ * // ctx.auth.userId is null when unauthenticated
545
+ * ```
546
+ *
547
+ * ### Multi-tenant with group resolution
548
+ *
549
+ * ```ts
550
+ * const authCtx = AuthCtx(auth, {
551
+ * resolve: async (ctx, user) => {
552
+ * const groupId = user?.extend?.lastActiveGroup;
553
+ * const membership = await auth.user.group.get(ctx, {
554
+ * userId: user._id,
555
+ * groupId,
556
+ * });
557
+ * return { groupId, role: membership?.role ?? "member" };
558
+ * },
559
+ * });
560
+ * // ctx.auth.groupId and ctx.auth.role available in handlers
561
+ * ```
562
+ *
563
+ * @param auth - The `Auth` class instance from your `convex/auth.ts`.
564
+ * @param config - Optional configuration for optional auth and group resolution.
565
+ * @returns A `{ args, input }` customization object compatible with
566
+ * `customQuery` / `customMutation` from `convex-helpers`.
567
+ */
568
+ export function AuthCtx(auth, config) {
569
+ const authHelper = auth._auth;
570
+ return {
571
+ args: {},
572
+ input: async (ctx, _args, _extra) => {
573
+ const nativeAuth = ctx.auth;
574
+ if (config?.optional) {
575
+ const userId = await authHelper.user.current(ctx);
576
+ if (!userId) {
577
+ return {
578
+ ctx: {
579
+ auth: {
580
+ getUserIdentity: nativeAuth.getUserIdentity.bind(nativeAuth),
581
+ userId: null,
582
+ user: null,
583
+ },
584
+ },
585
+ args: {},
586
+ };
587
+ }
588
+ const user = await authHelper.user.get(ctx, userId);
589
+ const extra = config.resolve
590
+ ? await config.resolve(ctx, user)
591
+ : {};
592
+ return {
593
+ ctx: {
594
+ auth: {
595
+ getUserIdentity: nativeAuth.getUserIdentity.bind(nativeAuth),
596
+ userId,
597
+ user,
598
+ ...extra,
599
+ },
600
+ },
601
+ args: {},
602
+ };
603
+ }
604
+ // Required mode (default): throws NOT_SIGNED_IN
605
+ const userId = await authHelper.user.require(ctx);
606
+ const user = await authHelper.user.get(ctx, userId);
607
+ const extra = config?.resolve
608
+ ? await config.resolve(ctx, user)
609
+ : {};
610
+ return {
611
+ ctx: {
612
+ auth: {
613
+ getUserIdentity: nativeAuth.getUserIdentity.bind(nativeAuth),
614
+ userId,
615
+ user,
616
+ ...extra,
617
+ },
618
+ },
619
+ args: {},
620
+ };
621
+ },
622
+ };
623
+ }
365
624
  //# sourceMappingURL=convex-auth.js.map
@@ -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"}