oapi: finish users

This commit is contained in:
Puyodead1
2023-03-25 18:01:56 -04:00
parent 1ce7879ee8
commit 860b9d583e
14 changed files with 107 additions and 37 deletions
+2 -2
View File
@@ -35,8 +35,8 @@ router.post(
"/",
route({
responses: {
200: {
body: "TokenResponse",
204: {
body: "TokenOnlyResponse",
},
400: {
body: "APIErrorResponse",
+1 -1
View File
@@ -45,7 +45,7 @@ router.post(
route({
requestBody: "RegisterSchema",
responses: {
200: { body: "TokenResponse" },
200: { body: "TokenOnlyResponse" },
400: { body: "APIErrorOrCaptchaResponse" },
},
}),
+1 -1
View File
@@ -38,7 +38,7 @@ router.post(
requestBody: "PasswordResetSchema",
responses: {
200: {
body: "TokenResponse",
body: "TokenOnlyResponse",
},
400: {
body: "APIErrorOrCaptchaResponse",
@@ -28,17 +28,37 @@ import { Request, Response, Router } from "express";
const router = Router();
// GET doesn't exist on discord.com
router.get("/", route({}), async (req: Request, res: Response) => {
const user = await Member.findOneOrFail({
where: { id: req.user_id, guild_id: req.params.guild_id },
select: ["settings"],
});
return res.json(user.settings);
});
router.get(
"/",
route({
responses: {
200: {},
404: {},
},
}),
async (req: Request, res: Response) => {
const user = await Member.findOneOrFail({
where: { id: req.user_id, guild_id: req.params.guild_id },
select: ["settings"],
});
return res.json(user.settings);
},
);
router.patch(
"/",
route({ requestBody: "UserGuildSettingsSchema" }),
route({
requestBody: "UserGuildSettingsSchema",
responses: {
200: {},
400: {
body: "APIErrorResponse",
},
404: {
body: "APIErrorResponse",
},
},
}),
async (req: Request, res: Response) => {
const body = req.body as UserGuildSettingsSchema;
+11 -1
View File
@@ -31,7 +31,17 @@ const router = Router();
router.post(
"/",
route({ requestBody: "TotpDisableSchema" }),
route({
requestBody: "TotpDisableSchema",
responses: {
200: {
body: "TokenOnlyResponse",
},
400: {
body: "APIErrorResponse",
},
},
}),
async (req: Request, res: Response) => {
const body = req.body as TotpDisableSchema;
+14 -1
View File
@@ -32,7 +32,20 @@ const router = Router();
router.post(
"/",
route({ requestBody: "TotpEnableSchema" }),
route({
requestBody: "TotpEnableSchema",
responses: {
200: {
body: "TokenWithBackupCodesResponse",
},
400: {
body: "APIErrorResponse",
},
404: {
body: "APIErrorResponse",
},
},
}),
async (req: Request, res: Response) => {
const body = req.body as TotpEnableSchema;
@@ -21,21 +21,31 @@ import { SecurityKey, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
const router = Router();
router.delete("/", route({}), async (req: Request, res: Response) => {
const { key_id } = req.params;
router.delete(
"/",
route({
responses: {
204: {},
},
}),
async (req: Request, res: Response) => {
const { key_id } = req.params;
await SecurityKey.delete({
id: key_id,
user_id: req.user_id,
});
await SecurityKey.delete({
id: key_id,
user_id: req.user_id,
});
const keys = await SecurityKey.count({ where: { user_id: req.user_id } });
const keys = await SecurityKey.count({
where: { user_id: req.user_id },
});
// disable webauthn if there are no keys left
if (keys === 0)
await User.update({ id: req.user_id }, { webauthn_enabled: false });
// disable webauthn if there are no keys left
if (keys === 0)
await User.update({ id: req.user_id }, { webauthn_enabled: false });
res.sendStatus(204);
});
res.sendStatus(204);
},
);
export default router;
@@ -73,7 +73,17 @@ router.get("/", route({}), async (req: Request, res: Response) => {
router.post(
"/",
route({ requestBody: "WebAuthnPostSchema" }),
route({
requestBody: "WebAuthnPostSchema",
responses: {
200: {
body: "WebAuthnCreateResponse",
},
400: {
body: "APIErrorResponse",
},
},
}),
async (req: Request, res: Response) => {
if (!WebAuthn.fido2) {
// TODO: I did this for typescript and I can't use !