@celsoft/platform 0.5.0 → 0.6.0
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/adapters/drizzle.js +11 -8
- package/dist/adapters/drizzle.js.map +1 -1
- package/dist/adapters/owner.d.ts +1 -0
- package/dist/adapters/owner.js +38 -0
- package/dist/adapters/owner.js.map +1 -0
- package/dist/cli.js +66 -2
- package/dist/cli.js.map +1 -1
- package/dist/runtime/guard.d.ts +0 -1
- package/dist/runtime/guard.js +1 -3
- package/dist/runtime/guard.js.map +1 -1
- package/dist/runtime/index.js +3 -17
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/screens.d.ts +1 -1
- package/dist/runtime/screens.js +10 -23
- package/dist/runtime/screens.js.map +1 -1
- package/dist/schema.d.ts +0 -58
- package/dist/schema.js +0 -9
- package/dist/schema.js.map +1 -1
- package/package.json +1 -1
- package/dist/runtime/owner.d.ts +0 -12
- package/dist/runtime/owner.js +0 -54
- package/dist/runtime/owner.js.map +0 -1
package/dist/adapters/drizzle.js
CHANGED
|
@@ -23,7 +23,7 @@ export class DrizzleMigrator {
|
|
|
23
23
|
const schema = await this.schemaFiles();
|
|
24
24
|
if (schema.length === 0)
|
|
25
25
|
return;
|
|
26
|
-
await this.drizzleKit(schema,
|
|
26
|
+
await this.drizzleKit(schema, this.appDir, "inherit");
|
|
27
27
|
}
|
|
28
28
|
// Generates into a scratch copy of drizzle/; any new file means the schema changed without one.
|
|
29
29
|
async upToDate() {
|
|
@@ -33,16 +33,17 @@ export class DrizzleMigrator {
|
|
|
33
33
|
const scratch = await mkdtemp(join(tmpdir(), "platform-drizzle-"));
|
|
34
34
|
try {
|
|
35
35
|
const committed = join(this.appDir, MIGRATIONS_DIR);
|
|
36
|
+
const copy = join(scratch, MIGRATIONS_DIR);
|
|
36
37
|
if (await exists(committed))
|
|
37
|
-
await cp(committed,
|
|
38
|
-
const before = await sqlFiles(
|
|
38
|
+
await cp(committed, copy, { recursive: true });
|
|
39
|
+
const before = await sqlFiles(copy);
|
|
39
40
|
try {
|
|
40
41
|
await this.drizzleKit(schema, scratch, "pipe");
|
|
41
42
|
}
|
|
42
43
|
catch {
|
|
43
44
|
return false;
|
|
44
45
|
}
|
|
45
|
-
return (await sqlFiles(
|
|
46
|
+
return (await sqlFiles(copy)).length === before.length;
|
|
46
47
|
}
|
|
47
48
|
finally {
|
|
48
49
|
await rm(scratch, { recursive: true, force: true });
|
|
@@ -77,11 +78,13 @@ export class DrizzleMigrator {
|
|
|
77
78
|
const app = join(this.appDir, APP_SCHEMA);
|
|
78
79
|
return [...(this.config.auth ? [PLATFORM_SCHEMA] : []), ...((await exists(app)) ? [app] : [])];
|
|
79
80
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
// drizzle-kit reads its earlier snapshots back through a path built from `out`, which only
|
|
82
|
+
// works when `out` is relative, so it runs from the folder that holds drizzle/.
|
|
83
|
+
async drizzleKit(schema, root, stdio) {
|
|
84
|
+
const configFile = join(root, ".platform-drizzle.json");
|
|
85
|
+
await writeFile(configFile, JSON.stringify({ dialect: "postgresql", schema, out: `./${MIGRATIONS_DIR}`, migrations: { prefix: "timestamp" } }, null, 2));
|
|
83
86
|
try {
|
|
84
|
-
await run(process.execPath, [drizzleKitBin(), "generate", "--config", configFile],
|
|
87
|
+
await run(process.execPath, [drizzleKitBin(), "generate", "--config", configFile], root, stdio);
|
|
85
88
|
}
|
|
86
89
|
finally {
|
|
87
90
|
await rm(configFile, { force: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle.js","sourceRoot":"","sources":["../../src/adapters/drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAI5B,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC;AAC1C,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhF,0FAA0F;AAC1F,gFAAgF;AAChF,MAAM,OAAO,eAAe;IAEP,MAAM;IACN,MAAM;IAFzB,YACmB,MAAc,EACd,MAAc;sBADd,MAAM;sBACN,MAAM;IACtB,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAChC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"drizzle.js","sourceRoot":"","sources":["../../src/adapters/drizzle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function resetOwner(databaseUrl: string, email: string, password: string): Promise<boolean>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { hashPassword } from "better-auth/crypto";
|
|
2
|
+
import { Client } from "pg";
|
|
3
|
+
import { OWNER_ROLE } from "../runtime/auth.js";
|
|
4
|
+
// Makes the account with this email the app's only owner, sets its password, marks the email
|
|
5
|
+
// verified and deletes its sessions, in one transaction. Only someone holding the project's
|
|
6
|
+
// tokens can reach the database, so this needs no secret of its own. False when no account has
|
|
7
|
+
// that email.
|
|
8
|
+
export async function resetOwner(databaseUrl, email, password) {
|
|
9
|
+
const client = new Client({ connectionString: databaseUrl });
|
|
10
|
+
await client.connect();
|
|
11
|
+
try {
|
|
12
|
+
await client.query("begin");
|
|
13
|
+
const { rows } = await client.query(`select id from "user" where email = $1`, [email.trim().toLowerCase()]);
|
|
14
|
+
const id = rows[0]?.id;
|
|
15
|
+
if (!id) {
|
|
16
|
+
await client.query("rollback");
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const hash = await hashPassword(password);
|
|
20
|
+
await client.query(`update "user" set role = 'user', updated_at = now() where role = $1 and id <> $2`, [OWNER_ROLE, id]);
|
|
21
|
+
await client.query(`update "user" set role = $1, email_verified = true, updated_at = now() where id = $2`, [OWNER_ROLE, id]);
|
|
22
|
+
const updated = await client.query(`update account set password = $1, updated_at = now() where user_id = $2 and provider_id = 'credential'`, [hash, id]);
|
|
23
|
+
if (updated.rowCount === 0) {
|
|
24
|
+
await client.query(`insert into account (account_id, provider_id, user_id, password) values ($1, 'credential', $2, $3)`, [id, id, hash]);
|
|
25
|
+
}
|
|
26
|
+
await client.query(`delete from session where user_id = $1`, [id]);
|
|
27
|
+
await client.query("commit");
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
await client.query("rollback").catch(() => { });
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
await client.end();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=owner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner.js","sourceRoot":"","sources":["../../src/adapters/owner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,6FAA6F;AAC7F,4FAA4F;AAC5F,+FAA+F;AAC/F,cAAc;AACd,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,WAAmB,EAAE,KAAa,EAAE,QAAgB;IACnF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC;IAC7D,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAiB,wCAAwC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5H,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACvB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,MAAM,CAAC,KAAK,CAAC,kFAAkF,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QACzH,MAAM,MAAM,CAAC,KAAK,CAAC,sFAAsF,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7H,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,wGAAwG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACzJ,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,CAAC,KAAK,CAAC,oGAAoG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3I,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -3,12 +3,14 @@ import { execFileSync } from "node:child_process";
|
|
|
3
3
|
import { readFile, writeFile } from "node:fs/promises";
|
|
4
4
|
import { join, resolve } from "node:path";
|
|
5
5
|
import { createInterface } from "node:readline/promises";
|
|
6
|
+
import { Writable } from "node:stream";
|
|
6
7
|
import { parseArgs } from "node:util";
|
|
7
8
|
import { CloudflareApi } from "./adapters/cloudflare.js";
|
|
8
9
|
import { commentPreviewLink, GhCli } from "./adapters/github.js";
|
|
9
10
|
import { NeonApi } from "./adapters/neon.js";
|
|
10
11
|
import { ResendApi } from "./adapters/resend.js";
|
|
11
12
|
import { DrizzleMigrator } from "./adapters/drizzle.js";
|
|
13
|
+
import { resetOwner } from "./adapters/owner.js";
|
|
12
14
|
import { WranglerCli } from "./adapters/process.js";
|
|
13
15
|
import { CONFIG_FILE, ConfigError, configVariables, parseConfig, readConfigText, upgradeConfigText } from "./config.js";
|
|
14
16
|
import { checkWorkflow, init, tokenNames } from "./init.js";
|
|
@@ -27,13 +29,15 @@ commands:
|
|
|
27
29
|
preview <pr> create or update the preview for a pull request
|
|
28
30
|
cleanup <pr> delete the preview for a pull request
|
|
29
31
|
sweep delete previews whose pull request is closed
|
|
32
|
+
owner reset <email> [--pr <n>]
|
|
33
|
+
make that account the owner and set its password, for an owner locked out
|
|
30
34
|
destroy [--data] delete everything the platform made for the app; --data also deletes its data
|
|
31
35
|
ci run the command for the current GitHub Actions event`;
|
|
32
36
|
async function main(argv) {
|
|
33
37
|
const { values, positionals } = parseArgs({
|
|
34
38
|
args: argv,
|
|
35
39
|
allowPositionals: true,
|
|
36
|
-
options: { "dry-run": { type: "boolean", default: false }, data: { type: "boolean", default: false }, dir: { type: "string", default: "." }, help: { type: "boolean", short: "h" } },
|
|
40
|
+
options: { "dry-run": { type: "boolean", default: false }, data: { type: "boolean", default: false }, pr: { type: "string" }, dir: { type: "string", default: "." }, help: { type: "boolean", short: "h" } },
|
|
37
41
|
});
|
|
38
42
|
if (values.help || positionals.length === 0) {
|
|
39
43
|
console.log(usage);
|
|
@@ -88,6 +92,10 @@ async function main(argv) {
|
|
|
88
92
|
await dev(ctx);
|
|
89
93
|
return;
|
|
90
94
|
}
|
|
95
|
+
if (command.name === "owner reset") {
|
|
96
|
+
await ownerReset(ctx, app.config, command.email, values.pr === undefined ? undefined : prNumber(values.pr));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
91
99
|
if (command.name === "sweep") {
|
|
92
100
|
await sweep(ctx, await new GhCli(repoRoot(appDir)).openPullRequests());
|
|
93
101
|
return;
|
|
@@ -106,7 +114,12 @@ async function main(argv) {
|
|
|
106
114
|
await deploy({ ...ctx, run: new Run(true, (line) => console.log(line)) }, { kind: "prod" });
|
|
107
115
|
}
|
|
108
116
|
}
|
|
109
|
-
function parseCommand([name, pr]) {
|
|
117
|
+
function parseCommand([name, pr, extra]) {
|
|
118
|
+
if (name === "owner" && pr === "reset") {
|
|
119
|
+
if (!extra?.includes("@"))
|
|
120
|
+
throw new UsageError(`expected the owner's email\n\n${usage}`);
|
|
121
|
+
return { name: "owner reset", email: extra };
|
|
122
|
+
}
|
|
110
123
|
if (name === "db" && pr === "generate")
|
|
111
124
|
return { name: "db generate" };
|
|
112
125
|
if (name === "upgrade" || name === "sweep")
|
|
@@ -159,6 +172,57 @@ async function context(appDir, config, dryRun) {
|
|
|
159
172
|
},
|
|
160
173
|
};
|
|
161
174
|
}
|
|
175
|
+
// Recovery for an owner who lost their password or email: whoever holds the project's tokens can
|
|
176
|
+
// already reach everything, so the new password is typed here, never passed as an argument.
|
|
177
|
+
async function ownerReset(ctx, config, email, pr) {
|
|
178
|
+
if (!config.auth || !config.database)
|
|
179
|
+
throw new UsageError("this app has no auth");
|
|
180
|
+
const project = config.database.neonProject;
|
|
181
|
+
const branch = pr === undefined ? await ctx.ports.neon.defaultBranch(project) : await ctx.ports.neon.findBranch(project, `pr-${pr}`);
|
|
182
|
+
if (!branch)
|
|
183
|
+
throw new PreflightError(`pull request ${pr} has no preview database`);
|
|
184
|
+
const password = await newPassword();
|
|
185
|
+
if (ctx.run.dryRun)
|
|
186
|
+
return console.log(`~ would make ${email} the owner on ${branch.name} and set its password`);
|
|
187
|
+
if (!(await resetOwner(await ctx.ports.neon.connectionUri(project, branch.id), email, password))) {
|
|
188
|
+
throw new PreflightError(`no account uses ${email} on ${branch.name}; sign up with it first`);
|
|
189
|
+
}
|
|
190
|
+
console.log(`+ ${email} is the owner on ${branch.name}, with the new password; its sessions are signed out`);
|
|
191
|
+
}
|
|
192
|
+
// Typed twice in a terminal with nothing echoed; read from standard input otherwise.
|
|
193
|
+
async function newPassword() {
|
|
194
|
+
let password;
|
|
195
|
+
if (process.stdin.isTTY) {
|
|
196
|
+
let muted = false;
|
|
197
|
+
const output = new Writable({ write: (chunk, _encoding, done) => (muted || process.stdout.write(chunk), done()) });
|
|
198
|
+
const rl = createInterface({ input: process.stdin, output, terminal: true });
|
|
199
|
+
const ask = async (prompt) => {
|
|
200
|
+
process.stdout.write(prompt);
|
|
201
|
+
muted = true;
|
|
202
|
+
const answer = await rl.question("");
|
|
203
|
+
muted = false;
|
|
204
|
+
process.stdout.write("\n");
|
|
205
|
+
return answer;
|
|
206
|
+
};
|
|
207
|
+
try {
|
|
208
|
+
password = await ask("New password: ");
|
|
209
|
+
if ((await ask("Same password again: ")) !== password)
|
|
210
|
+
throw new UsageError("the passwords did not match");
|
|
211
|
+
}
|
|
212
|
+
finally {
|
|
213
|
+
rl.close();
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
let input = "";
|
|
218
|
+
for await (const chunk of process.stdin)
|
|
219
|
+
input += chunk;
|
|
220
|
+
password = input.split(/\r?\n/)[0] ?? "";
|
|
221
|
+
}
|
|
222
|
+
if (password.length < 8)
|
|
223
|
+
throw new UsageError("the password needs at least 8 characters");
|
|
224
|
+
return password;
|
|
225
|
+
}
|
|
162
226
|
// Destroy lists what it will delete, then needs the app's name typed and a final yes, so a
|
|
163
227
|
// slip of the keyboard can never start it.
|
|
164
228
|
async function confirmDestroy(ctx, appName, data) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/guard.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export declare const PUBLIC_API = "/api/public/";
|
|
2
|
-
export declare const PLATFORM_API = "/api/platform/";
|
|
3
2
|
export declare function isCrossSiteForm(request: Request, url: URL): boolean;
|
|
4
3
|
export declare function needsSession(pathname: string): boolean;
|
|
5
4
|
export interface RateLimiter {
|
package/dist/runtime/guard.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { AUTH_PATH } from "./auth.js";
|
|
2
2
|
export const PUBLIC_API = "/api/public/";
|
|
3
|
-
export const PLATFORM_API = "/api/platform/";
|
|
4
3
|
const FORM_TYPES = ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"];
|
|
5
4
|
const UNSAFE = ["POST", "PUT", "PATCH", "DELETE"];
|
|
6
5
|
// A browser sends any site's form to any other without asking, cookies included; it always
|
|
@@ -17,7 +16,7 @@ export function isCrossSiteForm(request, url) {
|
|
|
17
16
|
export function needsSession(pathname) {
|
|
18
17
|
if (!pathname.startsWith("/api/"))
|
|
19
18
|
return false;
|
|
20
|
-
return !(pathname.startsWith(`${AUTH_PATH}/`) || pathname.startsWith(PUBLIC_API)
|
|
19
|
+
return !(pathname.startsWith(`${AUTH_PATH}/`) || pathname.startsWith(PUBLIC_API));
|
|
21
20
|
}
|
|
22
21
|
// Guessing passwords is limited per account, signing up per address.
|
|
23
22
|
const LIMITED = {
|
|
@@ -25,7 +24,6 @@ const LIMITED = {
|
|
|
25
24
|
[`${AUTH_PATH}/request-password-reset`]: "email",
|
|
26
25
|
[`${AUTH_PATH}/reset-password`]: "ip",
|
|
27
26
|
[`${AUTH_PATH}/sign-up/email`]: "ip",
|
|
28
|
-
[`${PLATFORM_API}recover`]: "email",
|
|
29
27
|
};
|
|
30
28
|
export async function rateLimited(request, pathname, limiter) {
|
|
31
29
|
const by = LIMITED[pathname];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/runtime/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/runtime/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;AAEzC,MAAM,UAAU,GAAG,CAAC,mCAAmC,EAAE,qBAAqB,EAAE,YAAY,CAAC,CAAC;AAC9F,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAElD,2FAA2F;AAC3F,mEAAmE;AACnE,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,GAAQ;IACxD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/F,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC;AACtD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AACpF,CAAC;AAMD,qEAAqE;AACrE,MAAM,OAAO,GAAmC;IAC9C,CAAC,GAAG,SAAS,gBAAgB,CAAC,EAAE,OAAO;IACvC,CAAC,GAAG,SAAS,yBAAyB,CAAC,EAAE,OAAO;IAChD,CAAC,GAAG,SAAS,iBAAiB,CAAC,EAAE,IAAI;IACrC,CAAC,GAAG,SAAS,gBAAgB,CAAC,EAAE,IAAI;CACrC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAgB,EAAE,QAAgB,EAAE,OAAgC;IACpG,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC;IACnE,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAwB,CAAC;QACrF,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChF,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,QAAQ,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3E,CAAC"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -3,8 +3,7 @@ import { Pool } from "pg";
|
|
|
3
3
|
import { AUTH_PATH, createAuth } from "./auth.js";
|
|
4
4
|
import { createEmail } from "./email.js";
|
|
5
5
|
import { createFiles } from "./files.js";
|
|
6
|
-
import { isCrossSiteForm, needsSession,
|
|
7
|
-
import { issueRecoveryCode, recoverOwner } from "./owner.js";
|
|
6
|
+
import { isCrossSiteForm, needsSession, rateLimited } from "./guard.js";
|
|
8
7
|
import { isScreen, renderScreen } from "./screens.js";
|
|
9
8
|
const defaultPool = (connectionString) => new Pool({ connectionString, max: 5 });
|
|
10
9
|
const json = (body, status = 200) => Response.json(body, { status });
|
|
@@ -79,8 +78,8 @@ export function defineApp(handler, options = {}) {
|
|
|
79
78
|
},
|
|
80
79
|
};
|
|
81
80
|
}
|
|
82
|
-
// What the platform answers itself for an app with auth: screens, auth routes,
|
|
83
|
-
//
|
|
81
|
+
// What the platform answers itself for an app with auth: screens, auth routes, and the sign-in
|
|
82
|
+
// check in front of every private /api route.
|
|
84
83
|
async function platformRoute(request, url, env, app, options) {
|
|
85
84
|
const path = url.pathname;
|
|
86
85
|
if (request.method === "GET" && isScreen(path))
|
|
@@ -91,19 +90,6 @@ async function platformRoute(request, url, env, app, options) {
|
|
|
91
90
|
return json({ error: "not found" }, 404);
|
|
92
91
|
if (path.startsWith(`${AUTH_PATH}/`))
|
|
93
92
|
return app.auth.handler(request);
|
|
94
|
-
const db = app.db;
|
|
95
|
-
if (path === `${PLATFORM_API}recovery-code` && request.method === "POST") {
|
|
96
|
-
const user = await app.requireUser();
|
|
97
|
-
return json({ code: await issueRecoveryCode(db, user.id) });
|
|
98
|
-
}
|
|
99
|
-
if (path === `${PLATFORM_API}recover` && request.method === "POST") {
|
|
100
|
-
const body = (await request.json().catch(() => ({})));
|
|
101
|
-
const { email, code, password } = body;
|
|
102
|
-
if (typeof email !== "string" || typeof code !== "string" || typeof password !== "string" || password.length < 8) {
|
|
103
|
-
return json({ error: "email, code and a password of at least 8 characters are required" }, 400);
|
|
104
|
-
}
|
|
105
|
-
return json({ ok: await recoverOwner(db, app.auth, { email, code, password }) });
|
|
106
|
-
}
|
|
107
93
|
if (needsSession(path))
|
|
108
94
|
await app.requireUser();
|
|
109
95
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAa,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAkC,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,WAAW,EAAkC,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const SCREEN_PATHS: readonly ["/login", "/signup", "/forgot", "/reset"
|
|
1
|
+
export declare const SCREEN_PATHS: readonly ["/login", "/signup", "/forgot", "/reset"];
|
|
2
2
|
export type ScreenPath = (typeof SCREEN_PATHS)[number];
|
|
3
3
|
export declare function isScreen(pathname: string): pathname is ScreenPath;
|
|
4
4
|
export declare function renderScreen(path: ScreenPath, appName: string, stylesheet: string | undefined): Response;
|
package/dist/runtime/screens.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// Sign-in, sign-up and password screens every app with auth gets. Class names are part of the
|
|
2
2
|
// public interface: an app restyles them with its own stylesheet, loaded after this one.
|
|
3
|
-
export const SCREEN_PATHS = ["/login", "/signup", "/forgot", "/reset"
|
|
4
|
-
|
|
3
|
+
export const SCREEN_PATHS = ["/login", "/signup", "/forgot", "/reset"];
|
|
4
|
+
// Password managers pair a saved password with the field marked "username", even when it holds an email.
|
|
5
|
+
const email = { name: "email", label: "Email", type: "email", autocomplete: "username" };
|
|
5
6
|
const password = (autocomplete, label = "Password") => ({ name: "password", label, type: "password", autocomplete });
|
|
6
7
|
const SCREENS = {
|
|
7
8
|
"/login": {
|
|
@@ -29,13 +30,6 @@ const SCREENS = {
|
|
|
29
30
|
button: "Change password",
|
|
30
31
|
links: [["/login", "Back to sign in"]],
|
|
31
32
|
},
|
|
32
|
-
"/recover": {
|
|
33
|
-
title: "Recover the owner account",
|
|
34
|
-
intro: "Use the recovery code you saved when you first signed in. It works once.",
|
|
35
|
-
fields: [email, { name: "code", label: "Recovery code", type: "text", autocomplete: "one-time-code" }, password("new-password", "New password")],
|
|
36
|
-
button: "Reset owner password",
|
|
37
|
-
links: [["/login", "Back to sign in"]],
|
|
38
|
-
},
|
|
39
33
|
};
|
|
40
34
|
export function isScreen(pathname) {
|
|
41
35
|
return SCREEN_PATHS.includes(pathname);
|
|
@@ -44,7 +38,7 @@ export function renderScreen(path, appName, stylesheet) {
|
|
|
44
38
|
const screen = SCREENS[path];
|
|
45
39
|
const fields = screen.fields
|
|
46
40
|
.map((f) => `<label class="platform-field"><span class="platform-label">${f.label}</span>` +
|
|
47
|
-
`<input class="platform-input" name="${f.name}" type="${f.type}" autocomplete="${f.autocomplete}" required${f.type === "password" ? ' minlength="8"' : ""}></label>`)
|
|
41
|
+
`<input class="platform-input" id="${f.name}" name="${f.name}" type="${f.type}" autocomplete="${f.autocomplete}" required${f.type === "password" ? ' minlength="8"' : ""}></label>`)
|
|
48
42
|
.join("");
|
|
49
43
|
const links = screen.links.map(([href, text]) => `<a href="${href}" data-carry>${text}</a>`).join("");
|
|
50
44
|
const html = `<!doctype html>
|
|
@@ -56,7 +50,7 @@ export function renderScreen(path, appName, stylesheet) {
|
|
|
56
50
|
<p class="platform-app">${escape(appName)}</p>
|
|
57
51
|
<h1 class="platform-title">${screen.title}</h1>
|
|
58
52
|
${screen.intro ? `<p class="platform-intro">${screen.intro}</p>` : ""}
|
|
59
|
-
<form class="platform-form" novalidate>${fields}
|
|
53
|
+
<form class="platform-form" method="post" action="${path}" novalidate>${path === "/reset" ? '<input id="email" name="email" type="email" autocomplete="username" hidden>' : ""}${fields}
|
|
60
54
|
<p class="platform-error" role="alert" hidden></p>
|
|
61
55
|
<button class="platform-button" type="submit">${screen.button}</button></form>
|
|
62
56
|
<div class="platform-message" role="status" hidden></div>
|
|
@@ -73,6 +67,7 @@ const STYLE = `
|
|
|
73
67
|
:root{--platform-bg:#f4f6f8;--platform-card:#fff;--platform-fg:#1b2430;--platform-muted:#5d6a78;--platform-line:#d5dce3;--platform-accent:#2554c7;--platform-on-accent:#fff;--platform-error:#b42318;color-scheme:light dark}
|
|
74
68
|
@media (prefers-color-scheme:dark){:root{--platform-bg:#11161c;--platform-card:#19212a;--platform-fg:#e6ebf0;--platform-muted:#9aa7b4;--platform-line:#2c3742;--platform-accent:#7aa2ff;--platform-on-accent:#0b1220;--platform-error:#ff8a80}}
|
|
75
69
|
*{box-sizing:border-box}
|
|
70
|
+
[hidden]{display:none!important}
|
|
76
71
|
body.platform-screen{margin:0;min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:var(--platform-bg);color:var(--platform-fg);font:16px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}
|
|
77
72
|
.platform-card{width:100%;max-width:380px;background:var(--platform-card);border:1px solid var(--platform-line);border-radius:12px;padding:28px 24px;display:flex;flex-direction:column;gap:16px}
|
|
78
73
|
.platform-app{margin:0;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--platform-muted)}
|
|
@@ -117,12 +112,7 @@ function say(...parts) {
|
|
|
117
112
|
async function finish() {
|
|
118
113
|
const invitation = params.get("invitation");
|
|
119
114
|
if (invitation) await post("/api/auth/organization/accept-invitation", { invitationId: invitation }).catch(() => {});
|
|
120
|
-
|
|
121
|
-
if (!code) return location.assign(next);
|
|
122
|
-
const box = Object.assign(document.createElement("p"), { className: "platform-code", textContent: code });
|
|
123
|
-
const go = Object.assign(document.createElement("button"), { className: "platform-button", type: "button", textContent: "I saved it, continue" });
|
|
124
|
-
go.onclick = () => location.assign(next);
|
|
125
|
-
say("You're the owner of this app. Save this recovery code somewhere safe: it resets your password if you ever lose access to your email, and it is shown only once.", box, go);
|
|
115
|
+
location.assign(next);
|
|
126
116
|
}
|
|
127
117
|
|
|
128
118
|
const actions = {
|
|
@@ -132,13 +122,8 @@ const actions = {
|
|
|
132
122
|
if (data.token) return finish();
|
|
133
123
|
say("Check your email for a link to confirm your address. It signs you in.");
|
|
134
124
|
},
|
|
135
|
-
forgot: async v => { await post("/api/auth/request-password-reset", { email: v.email, redirectTo: "/reset" }); say("If that address has an account, a reset link is on its way."); },
|
|
125
|
+
forgot: async v => { await post("/api/auth/request-password-reset", { email: v.email, redirectTo: "/reset?email=" + encodeURIComponent(v.email) }); say("If that address has an account, a reset link is on its way."); },
|
|
136
126
|
reset: async v => { await post("/api/auth/reset-password", { newPassword: v.password, token: params.get("token") }); say("Your password is changed. Sign in with it now."); },
|
|
137
|
-
recover: async v => {
|
|
138
|
-
const { ok } = await post("/api/platform/recover", { email: v.email, code: v.code, password: v.password });
|
|
139
|
-
if (!ok) throw new Error("That email and recovery code don't match.");
|
|
140
|
-
say("The owner password is changed and every session is signed out. Sign in with the new password; you'll get a new recovery code.");
|
|
141
|
-
},
|
|
142
127
|
};
|
|
143
128
|
|
|
144
129
|
form.addEventListener("submit", async e => {
|
|
@@ -152,6 +137,8 @@ form.addEventListener("submit", async e => {
|
|
|
152
137
|
finally { button.disabled = false; }
|
|
153
138
|
});
|
|
154
139
|
|
|
140
|
+
// The reset link carries the email, so a password manager knows which saved login to update.
|
|
141
|
+
if (page === "reset") document.getElementById("email").value = params.get("email") || "";
|
|
155
142
|
if (page === "reset" && (params.get("error") || !params.get("token"))) say("That reset link has expired or was already used. Ask for a new one from the sign-in page.");
|
|
156
143
|
if (page === "login") fetch("/api/auth/get-session", { credentials: "same-origin" }).then(r => r.json()).then(s => s && s.session && finish()).catch(() => {});
|
|
157
144
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screens.js","sourceRoot":"","sources":["../../src/runtime/screens.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,yFAAyF;AAEzF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"screens.js","sourceRoot":"","sources":["../../src/runtime/screens.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,yFAAyF;AAEzF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAC;AAkBhF,yGAAyG;AACzG,MAAM,KAAK,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAChG,MAAM,QAAQ,GAAG,CAAC,YAAoB,EAAE,KAAK,GAAG,UAAU,EAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;AAEpI,MAAM,OAAO,GAA+B;IAC1C,QAAQ,EAAE;QACR,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAC7C,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;KAChF;IACD,SAAS,EAAE;QACT,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC9G,MAAM,EAAE,gBAAgB;QACxB,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,kCAAkC,CAAC,CAAC;KACxD;IACD,SAAS,EAAE;QACT,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,sEAAsE;QAC7E,MAAM,EAAE,CAAC,KAAK,CAAC;QACf,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;KACvC;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,uBAAuB;QAC9B,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAClD,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;KACvC;CACF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACvC,OAAQ,YAAkC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,OAAe,EAAE,UAA8B;IAC5F,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;SACzB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC,8DAA8D,CAAC,CAAC,KAAK,SAAS;QACnF,qCAAqC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,YAAY,aAAa,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,CACtL;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,YAAY,IAAI,gBAAgB,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtG,MAAM,IAAI,GAAG;;SAEN,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,OAAO,CAAC;SACjC,KAAK,WAAW,UAAU,CAAC,CAAC,CAAC,gCAAgC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;kDAC/C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;0BAErC,MAAM,CAAC,OAAO,CAAC;6BACZ,MAAM,CAAC,KAAK;EACvC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE;oDACjB,IAAI,gBAAgB,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,6EAA6E,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM;;gDAEvI,MAAM,CAAC,MAAM;;8BAE/B,KAAK;;UAEzB,MAAM;eACD,CAAC;IACd,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;AACtH,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBb,CAAC;AAEF,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDd,CAAC"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -1358,64 +1358,6 @@ export declare const teamMember: import("drizzle-orm/pg-core").PgTableWithColumn
|
|
|
1358
1358
|
};
|
|
1359
1359
|
dialect: 'pg';
|
|
1360
1360
|
}>;
|
|
1361
|
-
export declare const ownerRecovery: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
1362
|
-
name: "owner_recovery";
|
|
1363
|
-
schema: undefined;
|
|
1364
|
-
columns: {
|
|
1365
|
-
userId: import("drizzle-orm/pg-core").PgColumn<{
|
|
1366
|
-
name: "user_id";
|
|
1367
|
-
tableName: "owner_recovery";
|
|
1368
|
-
dataType: "string";
|
|
1369
|
-
columnType: "PgUUID";
|
|
1370
|
-
data: string;
|
|
1371
|
-
driverParam: string;
|
|
1372
|
-
notNull: true;
|
|
1373
|
-
hasDefault: false;
|
|
1374
|
-
isPrimaryKey: true;
|
|
1375
|
-
isAutoincrement: false;
|
|
1376
|
-
hasRuntimeDefault: false;
|
|
1377
|
-
enumValues: undefined;
|
|
1378
|
-
baseColumn: never;
|
|
1379
|
-
identity: undefined;
|
|
1380
|
-
generated: undefined;
|
|
1381
|
-
}, {}, {}>;
|
|
1382
|
-
codeHash: import("drizzle-orm/pg-core").PgColumn<{
|
|
1383
|
-
name: "code_hash";
|
|
1384
|
-
tableName: "owner_recovery";
|
|
1385
|
-
dataType: "string";
|
|
1386
|
-
columnType: "PgText";
|
|
1387
|
-
data: string;
|
|
1388
|
-
driverParam: string;
|
|
1389
|
-
notNull: true;
|
|
1390
|
-
hasDefault: false;
|
|
1391
|
-
isPrimaryKey: false;
|
|
1392
|
-
isAutoincrement: false;
|
|
1393
|
-
hasRuntimeDefault: false;
|
|
1394
|
-
enumValues: [string, ...string[]];
|
|
1395
|
-
baseColumn: never;
|
|
1396
|
-
identity: undefined;
|
|
1397
|
-
generated: undefined;
|
|
1398
|
-
}, {}, {}>;
|
|
1399
|
-
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
1400
|
-
name: "created_at";
|
|
1401
|
-
tableName: "owner_recovery";
|
|
1402
|
-
dataType: "date";
|
|
1403
|
-
columnType: "PgTimestamp";
|
|
1404
|
-
data: Date;
|
|
1405
|
-
driverParam: string;
|
|
1406
|
-
notNull: true;
|
|
1407
|
-
hasDefault: true;
|
|
1408
|
-
isPrimaryKey: false;
|
|
1409
|
-
isAutoincrement: false;
|
|
1410
|
-
hasRuntimeDefault: false;
|
|
1411
|
-
enumValues: undefined;
|
|
1412
|
-
baseColumn: never;
|
|
1413
|
-
identity: undefined;
|
|
1414
|
-
generated: undefined;
|
|
1415
|
-
}, {}, {}>;
|
|
1416
|
-
};
|
|
1417
|
-
dialect: 'pg';
|
|
1418
|
-
}>;
|
|
1419
1361
|
export declare const authSchema: {
|
|
1420
1362
|
user: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
1421
1363
|
name: "user";
|
package/dist/schema.js
CHANGED
|
@@ -116,14 +116,5 @@ export const teamMember = pgTable("team_member", {
|
|
|
116
116
|
membershipKey: text("membership_key").unique(),
|
|
117
117
|
...timestamps(),
|
|
118
118
|
}, (t) => [index("team_member_team_id_idx").on(t.teamId), index("team_member_user_id_idx").on(t.userId)]);
|
|
119
|
-
// The owner's one-time recovery code, stored hashed; using it deletes the row, and the next
|
|
120
|
-
// sign-in issues a fresh one.
|
|
121
|
-
export const ownerRecovery = pgTable("owner_recovery", {
|
|
122
|
-
userId: uuid("user_id")
|
|
123
|
-
.primaryKey()
|
|
124
|
-
.references(() => user.id, { onDelete: "cascade" }),
|
|
125
|
-
codeHash: text("code_hash").notNull(),
|
|
126
|
-
createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
|
|
127
|
-
});
|
|
128
119
|
export const authSchema = { user, session, account, verification, organization, member, invitation, team, teamMember };
|
|
129
120
|
//# sourceMappingURL=schema.js.map
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/dist/runtime/owner.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { NodePgDatabase } from "drizzle-orm/node-postgres";
|
|
2
|
-
import { type Auth } from "./auth.js";
|
|
3
|
-
export declare function newRecoveryCode(): string;
|
|
4
|
-
export declare function hashCode(code: string): Promise<string>;
|
|
5
|
-
type Db = NodePgDatabase<Record<string, unknown>>;
|
|
6
|
-
export declare function issueRecoveryCode(db: Db, userId: string): Promise<string | null>;
|
|
7
|
-
export declare function recoverOwner(db: Db, auth: Auth, input: {
|
|
8
|
-
email: string;
|
|
9
|
-
code: string;
|
|
10
|
-
password: string;
|
|
11
|
-
}): Promise<boolean>;
|
|
12
|
-
export {};
|
package/dist/runtime/owner.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { and, eq } from "drizzle-orm";
|
|
2
|
-
import { ownerRecovery, user } from "../schema.js";
|
|
3
|
-
import { OWNER_ROLE } from "./auth.js";
|
|
4
|
-
const ALPHABET = "ABCDEFGHJKMNPQRSTUVWXYZ23456789";
|
|
5
|
-
// Five groups of five from 31 characters: about 124 bits, so a plain hash is enough to store it.
|
|
6
|
-
export function newRecoveryCode() {
|
|
7
|
-
const bytes = crypto.getRandomValues(new Uint8Array(25));
|
|
8
|
-
const chars = Array.from(bytes, (b) => ALPHABET[b % ALPHABET.length]).join("");
|
|
9
|
-
return chars.match(/.{5}/g).join("-");
|
|
10
|
-
}
|
|
11
|
-
export async function hashCode(code) {
|
|
12
|
-
const normalized = code.toUpperCase().replace(/[^A-Z0-9]/g, "");
|
|
13
|
-
const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(normalized));
|
|
14
|
-
return Array.from(new Uint8Array(digest), (b) => b.toString(16).padStart(2, "0")).join("");
|
|
15
|
-
}
|
|
16
|
-
// Shown once, right after the owner signs in without one; the screen tells them to save it.
|
|
17
|
-
// The role is read from the database: the session's cached copy predates the owner claim.
|
|
18
|
-
export async function issueRecoveryCode(db, userId) {
|
|
19
|
-
const [row] = await db.select({ role: user.role }).from(user).where(eq(user.id, userId));
|
|
20
|
-
if (row?.role !== OWNER_ROLE)
|
|
21
|
-
return null;
|
|
22
|
-
const code = newRecoveryCode();
|
|
23
|
-
const inserted = await db
|
|
24
|
-
.insert(ownerRecovery)
|
|
25
|
-
.values({ userId, codeHash: await hashCode(code) })
|
|
26
|
-
.onConflictDoNothing()
|
|
27
|
-
.returning({ userId: ownerRecovery.userId });
|
|
28
|
-
return inserted.length > 0 ? code : null;
|
|
29
|
-
}
|
|
30
|
-
// Sets a new password for the owner and signs every session out. The answer never says which
|
|
31
|
-
// part was wrong, so it reveals nothing about who the owner is.
|
|
32
|
-
export async function recoverOwner(db, auth, input) {
|
|
33
|
-
const [owner] = await db
|
|
34
|
-
.select({ id: user.id, codeHash: ownerRecovery.codeHash })
|
|
35
|
-
.from(user)
|
|
36
|
-
.innerJoin(ownerRecovery, eq(ownerRecovery.userId, user.id))
|
|
37
|
-
.where(and(eq(user.email, input.email.trim().toLowerCase()), eq(user.role, OWNER_ROLE)));
|
|
38
|
-
if (!owner || !equal(owner.codeHash, await hashCode(input.code)))
|
|
39
|
-
return false;
|
|
40
|
-
const ctx = await auth.$context;
|
|
41
|
-
await ctx.internalAdapter.updatePassword(owner.id, await ctx.password.hash(input.password));
|
|
42
|
-
await ctx.internalAdapter.deleteUserSessions(owner.id);
|
|
43
|
-
await db.delete(ownerRecovery).where(eq(ownerRecovery.userId, owner.id));
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
function equal(a, b) {
|
|
47
|
-
if (a.length !== b.length)
|
|
48
|
-
return false;
|
|
49
|
-
let diff = 0;
|
|
50
|
-
for (let i = 0; i < a.length; i++)
|
|
51
|
-
diff |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
52
|
-
return diff === 0;
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=owner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"owner.js","sourceRoot":"","sources":["../../src/runtime/owner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,UAAU,EAAa,MAAM,WAAW,CAAC;AAElD,MAAM,QAAQ,GAAG,iCAAiC,CAAC;AAEnD,iGAAiG;AACjG,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7F,CAAC;AAID,4FAA4F;AAC5F,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAM,EAAE,MAAc;IAC5D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACzF,IAAI,GAAG,EAAE,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,EAAE;SACtB,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;SAClD,mBAAmB,EAAE;SACrB,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED,6FAA6F;AAC7F,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAM,EAAE,IAAU,EAAE,KAAwD;IAC7G,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE;SACrB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC;SACzD,IAAI,CAAC,IAAI,CAAC;SACV,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAC3D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3F,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;IAChC,MAAM,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5F,MAAM,GAAG,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,KAAK,CAAC,CAAS,EAAE,CAAS;IACjC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC"}
|