diff --git a/src/api/routes/users/@me/mfa/webauthn/credentials/#key_id/index.ts b/src/api/routes/users/@me/mfa/webauthn/credentials/#key_id/index.ts
index c451e357..a4381f37 100644
--- a/src/api/routes/users/@me/mfa/webauthn/credentials/#key_id/index.ts
+++ b/src/api/routes/users/@me/mfa/webauthn/credentials/#key_id/index.ts
@@ -17,7 +17,7 @@
*/
import { route } from "@fosscord/api";
-import { SecurityKey } from "@fosscord/util";
+import { SecurityKey, User } from "@fosscord/util";
import { Request, Response, Router } from "express";
const router = Router();
@@ -29,6 +29,12 @@ router.delete("/", route({}), async (req: Request, res: Response) => {
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 });
+
res.sendStatus(204);
});
diff --git a/src/api/routes/users/@me/mfa/webauthn/credentials/index.ts b/src/api/routes/users/@me/mfa/webauthn/credentials/index.ts
index 581950b8..a33e06ce 100644
--- a/src/api/routes/users/@me/mfa/webauthn/credentials/index.ts
+++ b/src/api/routes/users/@me/mfa/webauthn/credentials/index.ts
@@ -181,7 +181,10 @@ router.post(
key_id: keyId,
});
- await securityKey.save();
+ await Promise.all([
+ securityKey.save(),
+ User.update({ id: req.user_id }, { webauthn_enabled: true }),
+ ]);
return res.json({
name,
|