feat(api): Implement password resets

This commit is contained in:
Jesse Wierzbinski 2024-05-16 22:27:41 -10:00
parent 1365987a1c
commit 24288c95b5
No known key found for this signature in database
11 changed files with 1998 additions and 19 deletions

View file

@ -169,12 +169,14 @@ export const configValidator = z.object({
login: zUrlPath.default("/oauth/authorize"),
consent: zUrlPath.default("/oauth/consent"),
register: zUrlPath.default("/register"),
password_reset: zUrlPath.default("/oauth/reset"),
})
.default({
home: "/",
login: "/oauth/authorize",
consent: "/oauth/consent",
register: "/register",
password_reset: "/oauth/reset",
}),
settings: z.record(z.string(), z.any()).default({}),
})

View file

@ -1,3 +1,4 @@
import { randomBytes } from "node:crypto";
import { idValidator } from "@api";
import { getBestContentType, urlToContentFormat } from "@content_types";
import type { EntityValidator } from "@lysand-org/federation";
@ -150,6 +151,16 @@ export class User {
)[0];
}
async resetPassword() {
const resetToken = await randomBytes(32).toString("hex");
await this.update({
passwordResetToken: resetToken,
});
return resetToken;
}
async pin(note: Note) {
return (
await db