@robelest/convex-auth 0.0.2-preview.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 +467 -64
- package/dist/client/index.d.ts +127 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +424 -1
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +56 -1
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/_generated/component.d.ts +141 -3
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/convex.config.d.ts.map +1 -1
- package/dist/component/convex.config.js +2 -0
- package/dist/component/convex.config.js.map +1 -1
- package/dist/component/index.d.ts +5 -4
- package/dist/component/index.d.ts.map +1 -1
- package/dist/component/index.js +4 -3
- package/dist/component/index.js.map +1 -1
- package/dist/component/portalBridge.d.ts +80 -0
- package/dist/component/portalBridge.d.ts.map +1 -0
- package/dist/component/portalBridge.js +102 -0
- package/dist/component/portalBridge.js.map +1 -0
- package/dist/component/public.d.ts +353 -9
- package/dist/component/public.d.ts.map +1 -1
- package/dist/component/public.js +328 -33
- package/dist/component/public.js.map +1 -1
- package/dist/component/schema.d.ts +168 -9
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +113 -7
- package/dist/component/schema.js.map +1 -1
- package/dist/providers/passkey.d.ts +20 -0
- package/dist/providers/passkey.d.ts.map +1 -0
- package/dist/providers/passkey.js +32 -0
- package/dist/providers/passkey.js.map +1 -0
- package/dist/providers/totp.d.ts +14 -0
- package/dist/providers/totp.d.ts.map +1 -0
- package/dist/providers/totp.js +23 -0
- package/dist/providers/totp.js.map +1 -0
- package/dist/server/convex-auth.d.ts +296 -0
- package/dist/server/convex-auth.d.ts.map +1 -0
- package/dist/server/convex-auth.js +480 -0
- package/dist/server/convex-auth.js.map +1 -0
- 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 +169 -7
- package/dist/server/implementation/index.d.ts.map +1 -1
- package/dist/server/implementation/index.js +220 -5
- package/dist/server/implementation/index.js.map +1 -1
- package/dist/server/implementation/passkey.d.ts +33 -0
- package/dist/server/implementation/passkey.d.ts.map +1 -0
- package/dist/server/implementation/passkey.js +450 -0
- package/dist/server/implementation/passkey.js.map +1 -0
- package/dist/server/implementation/redirects.d.ts.map +1 -1
- package/dist/server/implementation/redirects.js +4 -9
- package/dist/server/implementation/redirects.js.map +1 -1
- package/dist/server/implementation/signIn.d.ts +13 -0
- package/dist/server/implementation/signIn.d.ts.map +1 -1
- package/dist/server/implementation/signIn.js +29 -15
- package/dist/server/implementation/signIn.js.map +1 -1
- package/dist/server/implementation/totp.d.ts +40 -0
- package/dist/server/implementation/totp.d.ts.map +1 -0
- package/dist/server/implementation/totp.js +211 -0
- package/dist/server/implementation/totp.js.map +1 -0
- 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/portal-email.d.ts +19 -0
- package/dist/server/portal-email.d.ts.map +1 -0
- package/dist/server/portal-email.js +89 -0
- package/dist/server/portal-email.js.map +1 -0
- package/dist/server/provider_utils.d.ts +3 -1
- package/dist/server/provider_utils.d.ts.map +1 -1
- package/dist/server/provider_utils.js +39 -1
- package/dist/server/provider_utils.js.map +1 -1
- package/dist/server/types.d.ts +263 -4
- 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 +7 -3
- package/src/cli/index.ts +49 -7
- package/src/cli/portal-link.ts +112 -0
- package/src/cli/portal-upload.ts +411 -0
- package/src/cli/utils.ts +248 -0
- package/src/client/index.ts +489 -1
- package/src/component/_generated/api.ts +72 -1
- package/src/component/_generated/component.ts +241 -4
- package/src/component/convex.config.ts +3 -0
- package/src/component/index.ts +8 -3
- package/src/component/portalBridge.ts +116 -0
- package/src/component/public.ts +373 -37
- package/src/component/schema.ts +122 -7
- package/src/providers/passkey.ts +35 -0
- package/src/providers/totp.ts +26 -0
- package/src/server/convex-auth.ts +602 -0
- package/src/server/email-templates.ts +77 -0
- package/src/server/implementation/apiKey.ts +185 -0
- package/src/server/implementation/index.ts +301 -8
- package/src/server/implementation/passkey.ts +650 -0
- package/src/server/implementation/redirects.ts +4 -11
- package/src/server/implementation/signIn.ts +41 -13
- package/src/server/implementation/totp.ts +366 -0
- package/src/server/index.ts +98 -34
- package/src/server/portal-email.ts +95 -0
- package/src/server/provider_utils.ts +42 -1
- package/src/server/types.ts +285 -4
- package/src/server/version.ts +2 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side TOTP ceremony logic for two-factor authentication.
|
|
3
|
+
*
|
|
4
|
+
* Handles the three phases of the TOTP flow:
|
|
5
|
+
* 1. setup — generate a TOTP secret and `otpauth://` URI for enrollment
|
|
6
|
+
* 2. confirm — verify the first code from the authenticator app and mark
|
|
7
|
+
* the enrollment as verified
|
|
8
|
+
* 3. verify — verify a TOTP code during sign-in (2FA challenge)
|
|
9
|
+
*
|
|
10
|
+
* Uses `@oslojs/otp` for TOTP generation / verification and
|
|
11
|
+
* `@oslojs/encoding` for base-32 secret encoding.
|
|
12
|
+
*/
|
|
13
|
+
import { TotpProviderConfig, GenericActionCtxWithAuthConfig } from "../types.js";
|
|
14
|
+
import { AuthDataModel, SessionInfo } from "./types.js";
|
|
15
|
+
type EnrichedActionCtx = GenericActionCtxWithAuthConfig<AuthDataModel>;
|
|
16
|
+
/**
|
|
17
|
+
* Main TOTP handler dispatched from signIn.ts.
|
|
18
|
+
*
|
|
19
|
+
* Routes to the appropriate phase based on `params.flow`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleTotp(ctx: EnrichedActionCtx, provider: TotpProviderConfig, args: {
|
|
22
|
+
params?: Record<string, any>;
|
|
23
|
+
verifier?: string;
|
|
24
|
+
}): Promise<{
|
|
25
|
+
kind: "signedIn";
|
|
26
|
+
signedIn: SessionInfo | null;
|
|
27
|
+
} | {
|
|
28
|
+
kind: "totpSetup";
|
|
29
|
+
uri: string;
|
|
30
|
+
secret: string;
|
|
31
|
+
verifier: string;
|
|
32
|
+
totpId: string;
|
|
33
|
+
}>;
|
|
34
|
+
/**
|
|
35
|
+
* Check if a user has a verified TOTP enrollment.
|
|
36
|
+
* Called after credentials sign-in to determine if 2FA is needed.
|
|
37
|
+
*/
|
|
38
|
+
export declare function checkTotpRequired(ctx: EnrichedActionCtx, userId: string): Promise<boolean>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=totp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"totp.d.ts","sourceRoot":"","sources":["../../../src/server/implementation/totp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC/B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIxD,KAAK,iBAAiB,GAAG,8BAA8B,CAAC,aAAa,CAAC,CAAC;AA2QvE;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,iBAAiB,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE;IACJ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CACN;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GAClD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CACJ,CA8BA;AAMD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAMlB"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side TOTP ceremony logic for two-factor authentication.
|
|
3
|
+
*
|
|
4
|
+
* Handles the three phases of the TOTP flow:
|
|
5
|
+
* 1. setup — generate a TOTP secret and `otpauth://` URI for enrollment
|
|
6
|
+
* 2. confirm — verify the first code from the authenticator app and mark
|
|
7
|
+
* the enrollment as verified
|
|
8
|
+
* 3. verify — verify a TOTP code during sign-in (2FA challenge)
|
|
9
|
+
*
|
|
10
|
+
* Uses `@oslojs/otp` for TOTP generation / verification and
|
|
11
|
+
* `@oslojs/encoding` for base-32 secret encoding.
|
|
12
|
+
*/
|
|
13
|
+
import { verifyTOTPWithGracePeriod, createTOTPKeyURI, } from "@oslojs/otp";
|
|
14
|
+
import { encodeBase32LowerCaseNoPadding } from "@oslojs/encoding";
|
|
15
|
+
import { callSignIn, callVerifier } from "./mutations/index.js";
|
|
16
|
+
import { callVerifierSignature } from "./mutations/verifierSignature.js";
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Setup flow
|
|
19
|
+
// ============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Phase 1: Generate a TOTP secret and enrollment URI.
|
|
22
|
+
*
|
|
23
|
+
* Requires an authenticated user — TOTP enrollment always adds a second
|
|
24
|
+
* factor to an existing account. The userId is taken from the current
|
|
25
|
+
* session identity.
|
|
26
|
+
*/
|
|
27
|
+
async function handleSetup(ctx, provider, params) {
|
|
28
|
+
// TOTP enrollment requires an authenticated user
|
|
29
|
+
const identity = await ctx.auth.getUserIdentity();
|
|
30
|
+
if (identity === null) {
|
|
31
|
+
throw new Error("TOTP enrollment requires an authenticated user. " +
|
|
32
|
+
"Sign in first, then add TOTP to your account.");
|
|
33
|
+
}
|
|
34
|
+
const [userId] = identity.subject.split("|");
|
|
35
|
+
// Generate a 20-byte random secret (160 bits, per RFC 4226 recommendation)
|
|
36
|
+
const secret = new Uint8Array(20);
|
|
37
|
+
crypto.getRandomValues(secret);
|
|
38
|
+
// Resolve the account name for the otpauth:// URI
|
|
39
|
+
let accountName = params.accountName;
|
|
40
|
+
if (!accountName) {
|
|
41
|
+
const user = await ctx.runQuery(ctx.auth.config.component.public.userGetById, { userId: userId });
|
|
42
|
+
accountName = user?.email ?? "user";
|
|
43
|
+
}
|
|
44
|
+
// Build the otpauth:// URI for QR code scanning
|
|
45
|
+
const uri = createTOTPKeyURI(provider.options.issuer, accountName, secret, provider.options.period, provider.options.digits);
|
|
46
|
+
// Encode the secret as base-32 for manual entry
|
|
47
|
+
const base32Secret = encodeBase32LowerCaseNoPadding(secret);
|
|
48
|
+
// Store enrolment metadata in a verifier so we can correlate the confirm step
|
|
49
|
+
const verifier = await callVerifier(ctx);
|
|
50
|
+
await callVerifierSignature(ctx, {
|
|
51
|
+
verifier,
|
|
52
|
+
signature: JSON.stringify({
|
|
53
|
+
secret: Array.from(secret),
|
|
54
|
+
userId,
|
|
55
|
+
digits: provider.options.digits,
|
|
56
|
+
period: provider.options.period,
|
|
57
|
+
}),
|
|
58
|
+
});
|
|
59
|
+
// Insert an UNVERIFIED TOTP record in the DB
|
|
60
|
+
const totpId = await ctx.runMutation(ctx.auth.config.component.public.totpInsert, {
|
|
61
|
+
userId: userId,
|
|
62
|
+
secret: secret.buffer.slice(secret.byteOffset, secret.byteOffset + secret.byteLength),
|
|
63
|
+
digits: provider.options.digits,
|
|
64
|
+
period: provider.options.period,
|
|
65
|
+
verified: false,
|
|
66
|
+
name: params.name,
|
|
67
|
+
createdAt: Date.now(),
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
kind: "totpSetup",
|
|
71
|
+
uri,
|
|
72
|
+
secret: base32Secret,
|
|
73
|
+
verifier,
|
|
74
|
+
totpId: totpId,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// Confirm flow
|
|
79
|
+
// ============================================================================
|
|
80
|
+
/**
|
|
81
|
+
* Phase 2: Verify the first code from the authenticator app.
|
|
82
|
+
*
|
|
83
|
+
* Requires an authenticated user. Marks the TOTP enrollment as verified
|
|
84
|
+
* after confirming the code is correct.
|
|
85
|
+
*/
|
|
86
|
+
async function handleConfirm(ctx, provider, params, verifierValue) {
|
|
87
|
+
// TOTP confirmation requires an authenticated user
|
|
88
|
+
const identity = await ctx.auth.getUserIdentity();
|
|
89
|
+
if (identity === null) {
|
|
90
|
+
throw new Error("TOTP confirmation requires an authenticated user. " +
|
|
91
|
+
"Sign in first, then confirm your TOTP enrollment.");
|
|
92
|
+
}
|
|
93
|
+
const [userId] = identity.subject.split("|");
|
|
94
|
+
if (!verifierValue) {
|
|
95
|
+
throw new Error("Missing verifier");
|
|
96
|
+
}
|
|
97
|
+
if (!params.code) {
|
|
98
|
+
throw new Error("Missing `code` parameter");
|
|
99
|
+
}
|
|
100
|
+
if (!params.totpId) {
|
|
101
|
+
throw new Error("Missing `totpId` parameter");
|
|
102
|
+
}
|
|
103
|
+
// Look up the TOTP record
|
|
104
|
+
const totpDoc = await ctx.runQuery(ctx.auth.config.component.public.totpGetById, { totpId: params.totpId });
|
|
105
|
+
if (!totpDoc) {
|
|
106
|
+
throw new Error("TOTP enrollment not found");
|
|
107
|
+
}
|
|
108
|
+
if (totpDoc.verified) {
|
|
109
|
+
throw new Error("TOTP enrollment is already verified");
|
|
110
|
+
}
|
|
111
|
+
// Extract the secret from the TOTP record
|
|
112
|
+
const secret = new Uint8Array(totpDoc.secret);
|
|
113
|
+
// Verify the code with a 30-second grace period
|
|
114
|
+
const valid = verifyTOTPWithGracePeriod(secret, provider.options.period, provider.options.digits, params.code, 30);
|
|
115
|
+
if (!valid) {
|
|
116
|
+
throw new Error("Invalid TOTP code");
|
|
117
|
+
}
|
|
118
|
+
// Mark the enrollment as verified
|
|
119
|
+
await ctx.runMutation(ctx.auth.config.component.public.totpMarkVerified, { totpId: params.totpId, lastUsedAt: Date.now() });
|
|
120
|
+
// Clean up the verifier
|
|
121
|
+
await ctx.runMutation(ctx.auth.config.component.public.verifierDelete, { verifierId: verifierValue });
|
|
122
|
+
// Return tokens for the existing session
|
|
123
|
+
const signInResult = await callSignIn(ctx, {
|
|
124
|
+
userId: userId,
|
|
125
|
+
generateTokens: true,
|
|
126
|
+
});
|
|
127
|
+
return { kind: "signedIn", signedIn: signInResult };
|
|
128
|
+
}
|
|
129
|
+
// ============================================================================
|
|
130
|
+
// Verify flow (2FA during sign-in)
|
|
131
|
+
// ============================================================================
|
|
132
|
+
/**
|
|
133
|
+
* Phase 3: Verify a TOTP code during sign-in.
|
|
134
|
+
*
|
|
135
|
+
* Does NOT require an authenticated user — this runs mid-sign-in as a
|
|
136
|
+
* second-factor challenge. The userId is retrieved from the stored verifier.
|
|
137
|
+
*/
|
|
138
|
+
async function handleVerify(ctx, provider, params, verifierValue) {
|
|
139
|
+
if (!verifierValue) {
|
|
140
|
+
throw new Error("Missing verifier");
|
|
141
|
+
}
|
|
142
|
+
if (!params.code) {
|
|
143
|
+
throw new Error("Missing `code` parameter");
|
|
144
|
+
}
|
|
145
|
+
// Look up the verifier to retrieve the stored userId
|
|
146
|
+
const verifierDoc = await ctx.runQuery(ctx.auth.config.component.public.verifierGetById, { verifierId: verifierValue });
|
|
147
|
+
if (!verifierDoc) {
|
|
148
|
+
throw new Error("Invalid or expired verifier");
|
|
149
|
+
}
|
|
150
|
+
// Parse the signature to extract userId
|
|
151
|
+
const signatureData = JSON.parse(verifierDoc.signature);
|
|
152
|
+
const userId = signatureData.userId;
|
|
153
|
+
// Look up the user's verified TOTP enrollment
|
|
154
|
+
const totpDoc = await ctx.runQuery(ctx.auth.config.component.public.totpGetVerifiedByUserId, { userId: userId });
|
|
155
|
+
if (!totpDoc) {
|
|
156
|
+
throw new Error("No TOTP enrollment found");
|
|
157
|
+
}
|
|
158
|
+
// Extract the secret from the TOTP record
|
|
159
|
+
const secret = new Uint8Array(totpDoc.secret);
|
|
160
|
+
// Verify the code with a 30-second grace period
|
|
161
|
+
const valid = verifyTOTPWithGracePeriod(secret, totpDoc.period, totpDoc.digits, params.code, 30);
|
|
162
|
+
if (!valid) {
|
|
163
|
+
throw new Error("Invalid TOTP code");
|
|
164
|
+
}
|
|
165
|
+
// Update last used timestamp
|
|
166
|
+
await ctx.runMutation(ctx.auth.config.component.public.totpUpdateLastUsed, { totpId: totpDoc._id, lastUsedAt: Date.now() });
|
|
167
|
+
// Clean up the verifier
|
|
168
|
+
await ctx.runMutation(ctx.auth.config.component.public.verifierDelete, { verifierId: verifierValue });
|
|
169
|
+
// Sign in the user with tokens
|
|
170
|
+
const signInResult = await callSignIn(ctx, {
|
|
171
|
+
userId,
|
|
172
|
+
generateTokens: true,
|
|
173
|
+
});
|
|
174
|
+
return { kind: "signedIn", signedIn: signInResult };
|
|
175
|
+
}
|
|
176
|
+
// ============================================================================
|
|
177
|
+
// Main dispatch
|
|
178
|
+
// ============================================================================
|
|
179
|
+
/**
|
|
180
|
+
* Main TOTP handler dispatched from signIn.ts.
|
|
181
|
+
*
|
|
182
|
+
* Routes to the appropriate phase based on `params.flow`.
|
|
183
|
+
*/
|
|
184
|
+
export async function handleTotp(ctx, provider, args) {
|
|
185
|
+
const flow = args.params?.flow;
|
|
186
|
+
if (!flow) {
|
|
187
|
+
throw new Error("Missing `flow` parameter. Expected one of: setup, confirm, verify");
|
|
188
|
+
}
|
|
189
|
+
switch (flow) {
|
|
190
|
+
case "setup":
|
|
191
|
+
return handleSetup(ctx, provider, args.params ?? {});
|
|
192
|
+
case "confirm":
|
|
193
|
+
return handleConfirm(ctx, provider, args.params ?? {}, args.verifier);
|
|
194
|
+
case "verify":
|
|
195
|
+
return handleVerify(ctx, provider, args.params ?? {}, args.verifier);
|
|
196
|
+
default:
|
|
197
|
+
throw new Error(`Unknown TOTP flow: ${flow}. Expected one of: setup, confirm, verify`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// ============================================================================
|
|
201
|
+
// Helpers
|
|
202
|
+
// ============================================================================
|
|
203
|
+
/**
|
|
204
|
+
* Check if a user has a verified TOTP enrollment.
|
|
205
|
+
* Called after credentials sign-in to determine if 2FA is needed.
|
|
206
|
+
*/
|
|
207
|
+
export async function checkTotpRequired(ctx, userId) {
|
|
208
|
+
const totpDoc = await ctx.runQuery(ctx.auth.config.component.public.totpGetVerifiedByUserId, { userId: userId });
|
|
209
|
+
return totpDoc !== null;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=totp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"totp.js","sourceRoot":"","sources":["../../../src/server/implementation/totp.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -6,6 +6,19 @@ export type AuthCookies = {
|
|
|
6
6
|
refreshToken: string | null;
|
|
7
7
|
verifier: string | null;
|
|
8
8
|
};
|
|
9
|
+
/** A structured cookie ready to be set via any framework's cookie API. */
|
|
10
|
+
export type AuthCookie = {
|
|
11
|
+
name: string;
|
|
12
|
+
value: string;
|
|
13
|
+
options: {
|
|
14
|
+
path: string;
|
|
15
|
+
httpOnly: boolean;
|
|
16
|
+
secure: boolean;
|
|
17
|
+
sameSite: "lax" | "strict" | "none";
|
|
18
|
+
maxAge?: number;
|
|
19
|
+
expires?: Date;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
9
22
|
export type ServerOptions = {
|
|
10
23
|
/** Convex deployment URL. */
|
|
11
24
|
url: string;
|
|
@@ -15,8 +28,12 @@ export type ServerOptions = {
|
|
|
15
28
|
shouldHandleCode?: ((request: Request) => boolean | Promise<boolean>) | boolean;
|
|
16
29
|
};
|
|
17
30
|
export type RefreshResult = {
|
|
18
|
-
response
|
|
19
|
-
cookies
|
|
31
|
+
/** Structured cookies to set on the response. */
|
|
32
|
+
cookies: AuthCookie[];
|
|
33
|
+
/** URL to redirect to (set after OAuth code exchange). */
|
|
34
|
+
redirect?: string;
|
|
35
|
+
/** JWT for SSR hydration, or `null` if not authenticated. */
|
|
36
|
+
token: string | null;
|
|
20
37
|
};
|
|
21
38
|
export declare function authCookieNames(host?: string): {
|
|
22
39
|
token: string;
|
|
@@ -25,6 +42,13 @@ export declare function authCookieNames(host?: string): {
|
|
|
25
42
|
};
|
|
26
43
|
export declare function parseAuthCookies(cookieHeader: string | null | undefined, host?: string): AuthCookies;
|
|
27
44
|
export declare function serializeAuthCookies(cookies: AuthCookies, host?: string, config?: AuthCookieConfig): string[];
|
|
45
|
+
/**
|
|
46
|
+
* Build structured cookie objects for any SSR framework.
|
|
47
|
+
*
|
|
48
|
+
* Use with SvelteKit's `event.cookies.set()`, TanStack Start's `setCookie()`,
|
|
49
|
+
* Next.js's `cookies().set()`, or any other framework cookie API.
|
|
50
|
+
*/
|
|
51
|
+
export declare function structuredAuthCookies(cookies: AuthCookies, host?: string, config?: AuthCookieConfig): AuthCookie[];
|
|
28
52
|
export declare function shouldProxyAuthAction(pathname: string, apiRoute: string): boolean;
|
|
29
53
|
export declare function server(options: ServerOptions): {
|
|
30
54
|
token(request: Request): string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC;CACjF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,IAAI,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC;CACjF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,iDAAiD;IACjD,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM;;;;EAO5C;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,IAAI,CAAC,EAAE,MAAM,GACZ,WAAW,CAQb;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,GAAE,gBAAmC,YA4B5C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,GAAE,gBAAmC,GAC1C,UAAU,EAAE,CAuCd;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAKvE;AAOD,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa;mBAsH1B,OAAO,GAAG,MAAM,GAAG,IAAI;oBAIhB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;mBAY3B,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;qBAkHzB,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;EA6F1D"}
|
package/dist/server/index.js
CHANGED
|
@@ -47,6 +47,52 @@ export function serializeAuthCookies(cookies, host, config = { maxAge: null }) {
|
|
|
47
47
|
}),
|
|
48
48
|
];
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Build structured cookie objects for any SSR framework.
|
|
52
|
+
*
|
|
53
|
+
* Use with SvelteKit's `event.cookies.set()`, TanStack Start's `setCookie()`,
|
|
54
|
+
* Next.js's `cookies().set()`, or any other framework cookie API.
|
|
55
|
+
*/
|
|
56
|
+
export function structuredAuthCookies(cookies, host, config = { maxAge: null }) {
|
|
57
|
+
const names = authCookieNames(host);
|
|
58
|
+
const secure = !isLocalHost(host);
|
|
59
|
+
const base = {
|
|
60
|
+
path: "/",
|
|
61
|
+
httpOnly: true,
|
|
62
|
+
secure,
|
|
63
|
+
sameSite: "lax",
|
|
64
|
+
};
|
|
65
|
+
const maxAge = config.maxAge ?? undefined;
|
|
66
|
+
return [
|
|
67
|
+
{
|
|
68
|
+
name: names.token,
|
|
69
|
+
value: cookies.token ?? "",
|
|
70
|
+
options: {
|
|
71
|
+
...base,
|
|
72
|
+
maxAge: cookies.token === null ? 0 : maxAge,
|
|
73
|
+
expires: cookies.token === null ? new Date(0) : undefined,
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: names.refreshToken,
|
|
78
|
+
value: cookies.refreshToken ?? "",
|
|
79
|
+
options: {
|
|
80
|
+
...base,
|
|
81
|
+
maxAge: cookies.refreshToken === null ? 0 : maxAge,
|
|
82
|
+
expires: cookies.refreshToken === null ? new Date(0) : undefined,
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: names.verifier,
|
|
87
|
+
value: cookies.verifier ?? "",
|
|
88
|
+
options: {
|
|
89
|
+
...base,
|
|
90
|
+
maxAge: cookies.verifier === null ? 0 : maxAge,
|
|
91
|
+
expires: cookies.verifier === null ? new Date(0) : undefined,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
];
|
|
95
|
+
}
|
|
50
96
|
export function shouldProxyAuthAction(pathname, apiRoute) {
|
|
51
97
|
if (apiRoute.endsWith("/")) {
|
|
52
98
|
return pathname === apiRoute || pathname === apiRoute.slice(0, -1);
|
|
@@ -240,15 +286,15 @@ export function server(options) {
|
|
|
240
286
|
},
|
|
241
287
|
async refresh(request) {
|
|
242
288
|
const host = cookieHost(request);
|
|
289
|
+
const currentToken = parseRequestCookies(request).token;
|
|
290
|
+
// CORS request — clear all auth cookies.
|
|
243
291
|
if (isCorsRequest(request)) {
|
|
244
292
|
return {
|
|
245
|
-
cookies:
|
|
246
|
-
|
|
247
|
-
refreshToken: null,
|
|
248
|
-
verifier: null,
|
|
249
|
-
}, host, cookieConfig),
|
|
293
|
+
cookies: structuredAuthCookies({ token: null, refreshToken: null, verifier: null }, host, cookieConfig),
|
|
294
|
+
token: null,
|
|
250
295
|
};
|
|
251
296
|
}
|
|
297
|
+
// OAuth code exchange — exchange code for tokens and redirect.
|
|
252
298
|
const requestUrl = new URL(request.url);
|
|
253
299
|
const code = requestUrl.searchParams.get("code");
|
|
254
300
|
const shouldHandleCode = options.shouldHandleCode === undefined
|
|
@@ -271,37 +317,38 @@ export function server(options) {
|
|
|
271
317
|
if (result.tokens === undefined) {
|
|
272
318
|
throw new Error("Invalid `auth:signIn` result for code exchange");
|
|
273
319
|
}
|
|
274
|
-
const response = Response.redirect(redirectUrl.toString(), 302);
|
|
275
320
|
return {
|
|
276
|
-
|
|
321
|
+
cookies: structuredAuthCookies({
|
|
277
322
|
token: result.tokens?.token ?? null,
|
|
278
323
|
refreshToken: result.tokens?.refreshToken ?? null,
|
|
279
324
|
verifier: null,
|
|
280
|
-
}, host, cookieConfig)
|
|
325
|
+
}, host, cookieConfig),
|
|
326
|
+
redirect: redirectUrl.toString(),
|
|
327
|
+
token: result.tokens?.token ?? null,
|
|
281
328
|
};
|
|
282
329
|
}
|
|
283
330
|
catch (error) {
|
|
284
331
|
console.error(error);
|
|
285
|
-
const response = Response.redirect(redirectUrl.toString(), 302);
|
|
286
332
|
return {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
verifier: null,
|
|
291
|
-
}, host, cookieConfig)),
|
|
333
|
+
cookies: structuredAuthCookies({ token: null, refreshToken: null, verifier: null }, host, cookieConfig),
|
|
334
|
+
redirect: redirectUrl.toString(),
|
|
335
|
+
token: null,
|
|
292
336
|
};
|
|
293
337
|
}
|
|
294
338
|
}
|
|
339
|
+
// Normal page load — refresh tokens if needed.
|
|
295
340
|
const tokens = await refreshTokens(request);
|
|
296
341
|
if (tokens === undefined) {
|
|
297
|
-
return
|
|
342
|
+
// No refresh needed — return current token for hydration.
|
|
343
|
+
return { cookies: [], token: currentToken };
|
|
298
344
|
}
|
|
299
345
|
return {
|
|
300
|
-
cookies:
|
|
346
|
+
cookies: structuredAuthCookies({
|
|
301
347
|
token: tokens?.token ?? null,
|
|
302
348
|
refreshToken: tokens?.refreshToken ?? null,
|
|
303
349
|
verifier: null,
|
|
304
350
|
}, host, cookieConfig),
|
|
351
|
+
token: tokens?.token ?? null,
|
|
305
352
|
};
|
|
306
353
|
},
|
|
307
354
|
};
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Styled dark-theme magic link email template for the Convex Auth Portal.
|
|
3
|
+
*
|
|
4
|
+
* Matches the portal's design system:
|
|
5
|
+
* - Background: #1e1c1a (body), #2a2825 (card)
|
|
6
|
+
* - Accent: #63a8f8 (Convex blue)
|
|
7
|
+
* - Text: #ffffff (headings), #b9b1aa (secondary), #8f8780 (muted)
|
|
8
|
+
* - Border: #4a4743
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Generate the styled magic link email HTML.
|
|
14
|
+
*
|
|
15
|
+
* @param url - The magic link URL the user clicks to sign in.
|
|
16
|
+
* @param expiresInHours - How long the link is valid (shown in the email).
|
|
17
|
+
*/
|
|
18
|
+
export declare function portalMagicLinkEmail(url: string, expiresInHours?: number): string;
|
|
19
|
+
//# sourceMappingURL=portal-email.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal-email.d.ts","sourceRoot":"","sources":["../../src/server/portal-email.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,cAAc,GAAE,MAAW,GAC1B,MAAM,CAuER"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Styled dark-theme magic link email template for the Convex Auth Portal.
|
|
3
|
+
*
|
|
4
|
+
* Matches the portal's design system:
|
|
5
|
+
* - Background: #1e1c1a (body), #2a2825 (card)
|
|
6
|
+
* - Accent: #63a8f8 (Convex blue)
|
|
7
|
+
* - Text: #ffffff (headings), #b9b1aa (secondary), #8f8780 (muted)
|
|
8
|
+
* - Border: #4a4743
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
const SHIELD_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="#63a8f8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/></svg>`;
|
|
13
|
+
/**
|
|
14
|
+
* Generate the styled magic link email HTML.
|
|
15
|
+
*
|
|
16
|
+
* @param url - The magic link URL the user clicks to sign in.
|
|
17
|
+
* @param expiresInHours - How long the link is valid (shown in the email).
|
|
18
|
+
*/
|
|
19
|
+
export function portalMagicLinkEmail(url, expiresInHours = 24) {
|
|
20
|
+
const expiryText = expiresInHours >= 24
|
|
21
|
+
? `${Math.floor(expiresInHours / 24)} day${Math.floor(expiresInHours / 24) > 1 ? "s" : ""}`
|
|
22
|
+
: `${expiresInHours} hour${expiresInHours > 1 ? "s" : ""}`;
|
|
23
|
+
return `<!DOCTYPE html>
|
|
24
|
+
<html lang="en">
|
|
25
|
+
<head>
|
|
26
|
+
<meta charset="utf-8" />
|
|
27
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
28
|
+
<meta name="color-scheme" content="dark" />
|
|
29
|
+
<meta name="supported-color-schemes" content="dark" />
|
|
30
|
+
<title>Sign in to Convex Auth Portal</title>
|
|
31
|
+
</head>
|
|
32
|
+
<body style="margin:0;padding:0;background-color:#1e1c1a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;">
|
|
33
|
+
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background-color:#1e1c1a;padding:40px 16px;">
|
|
34
|
+
<tr>
|
|
35
|
+
<td align="center">
|
|
36
|
+
<table role="presentation" width="480" cellpadding="0" cellspacing="0" style="background-color:#2a2825;border:1px solid #4a4743;border-radius:8px;overflow:hidden;">
|
|
37
|
+
<!-- Header -->
|
|
38
|
+
<tr>
|
|
39
|
+
<td style="padding:32px 32px 0 32px;text-align:center;">
|
|
40
|
+
${SHIELD_SVG}
|
|
41
|
+
<h1 style="margin:16px 0 0 0;font-size:20px;font-weight:600;color:#ffffff;line-height:1.3;">
|
|
42
|
+
Convex Auth Portal
|
|
43
|
+
</h1>
|
|
44
|
+
</td>
|
|
45
|
+
</tr>
|
|
46
|
+
|
|
47
|
+
<!-- Body -->
|
|
48
|
+
<tr>
|
|
49
|
+
<td style="padding:24px 32px;">
|
|
50
|
+
<p style="margin:0 0 20px 0;font-size:15px;line-height:1.6;color:#b9b1aa;">
|
|
51
|
+
Click the button below to sign in to the admin portal. This link will expire in ${expiryText}.
|
|
52
|
+
</p>
|
|
53
|
+
|
|
54
|
+
<!-- CTA Button -->
|
|
55
|
+
<table role="presentation" width="100%" cellpadding="0" cellspacing="0">
|
|
56
|
+
<tr>
|
|
57
|
+
<td align="center" style="padding:8px 0 24px 0;">
|
|
58
|
+
<a href="${url}" target="_blank" style="display:inline-block;background-color:#63a8f8;color:#0a0a0b;font-size:15px;font-weight:600;text-decoration:none;padding:12px 32px;border-radius:6px;line-height:1;">
|
|
59
|
+
Sign in to Portal
|
|
60
|
+
</a>
|
|
61
|
+
</td>
|
|
62
|
+
</tr>
|
|
63
|
+
</table>
|
|
64
|
+
|
|
65
|
+
<p style="margin:0 0 16px 0;font-size:13px;line-height:1.6;color:#8f8780;">
|
|
66
|
+
If the button doesn't work, copy and paste this URL into your browser:
|
|
67
|
+
</p>
|
|
68
|
+
<p style="margin:0;font-size:13px;line-height:1.5;color:#63a8f8;word-break:break-all;">
|
|
69
|
+
${url}
|
|
70
|
+
</p>
|
|
71
|
+
</td>
|
|
72
|
+
</tr>
|
|
73
|
+
|
|
74
|
+
<!-- Footer -->
|
|
75
|
+
<tr>
|
|
76
|
+
<td style="padding:20px 32px;border-top:1px solid #4a4743;">
|
|
77
|
+
<p style="margin:0;font-size:12px;line-height:1.5;color:#8f8780;text-align:center;">
|
|
78
|
+
If you didn't request this email, you can safely ignore it.
|
|
79
|
+
</p>
|
|
80
|
+
</td>
|
|
81
|
+
</tr>
|
|
82
|
+
</table>
|
|
83
|
+
</td>
|
|
84
|
+
</tr>
|
|
85
|
+
</table>
|
|
86
|
+
</body>
|
|
87
|
+
</html>`;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=portal-email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal-email.js","sourceRoot":"","sources":["../../src/server/portal-email.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,UAAU,GAAG,sWAAsW,CAAC;AAE1X;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,iBAAyB,EAAE;IAE3B,MAAM,UAAU,GACd,cAAc,IAAI,EAAE;QAClB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3F,CAAC,CAAC,GAAG,cAAc,QAAQ,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAE/D,OAAO;;;;;;;;;;;;;;;;;gBAiBO,UAAU;;;;;;;;;;;kGAWwE,UAAU;;;;;;;+BAO7E,GAAG;;;;;;;;;;;kBAWhB,GAAG;;;;;;;;;;;;;;;;;;QAkBb,CAAC;AACT,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { AuthProviderConfig, AuthProviderMaterializedConfig, ConvexAuthConfig }
|
|
|
6
6
|
export declare function configDefaults(config_: ConvexAuthConfig): {
|
|
7
7
|
extraProviders: AuthProviderMaterializedConfig[];
|
|
8
8
|
theme: import("@auth/core/types.js").Theme;
|
|
9
|
-
providers: (OIDCConfig<any> | OAuth2Config<any> | import("./types.js").ConvexCredentialsConfig | import("./types.js").EmailConfig<import("convex/server").GenericDataModel> | import("./types.js").PhoneConfig<import("convex/server").GenericDataModel>)[];
|
|
9
|
+
providers: (OIDCConfig<any> | OAuth2Config<any> | import("./types.js").ConvexCredentialsConfig | import("./types.js").PasskeyProviderConfig | import("./types.js").TotpProviderConfig | import("./types.js").EmailConfig<import("convex/server").GenericDataModel> | import("./types.js").PhoneConfig<import("convex/server").GenericDataModel>)[];
|
|
10
10
|
component: import("./types.js").AuthComponentApi;
|
|
11
11
|
session?: {
|
|
12
12
|
totalDurationMs?: number;
|
|
@@ -18,6 +18,8 @@ export declare function configDefaults(config_: ConvexAuthConfig): {
|
|
|
18
18
|
signIn?: {
|
|
19
19
|
maxFailedAttempsPerHour?: number;
|
|
20
20
|
};
|
|
21
|
+
apiKeys?: import("./types.js").ApiKeyConfig;
|
|
22
|
+
email?: import("./types.js").EmailTransport;
|
|
21
23
|
callbacks?: {
|
|
22
24
|
redirect?: (params: {
|
|
23
25
|
redirectTo: string;
|