summary refs log tree commit diff
path: root/src/api
diff options
context:
space:
mode:
authorCyber <cyber.hf18@gmail.com>2025-10-20 21:02:22 +0200
committerGitHub <noreply@github.com>2025-10-20 21:02:22 +0200
commita9302ca7964c2f0704704c2b1cd4fa960c28e7bc (patch)
treeb16fb9e1d4a041cf720e6a408fb01ad5ada8e07e /src/api
parentMerge pull request #1354 from CyberL1/fix/bulk-command-registration (diff)
parentadd fingerprint endpoint (diff)
downloadserver-ts-a9302ca7964c2f0704704c2b1cd4fa960c28e7bc.tar.xz
Merge pull request #1355 from anotherdoesnm/master
add fingerprint endpoint
Diffstat (limited to 'src/api')
-rw-r--r--src/api/middlewares/Authentication.ts1
-rw-r--r--src/api/routes/auth/fingerprint.ts29
2 files changed, 30 insertions, 0 deletions
diff --git a/src/api/middlewares/Authentication.ts b/src/api/middlewares/Authentication.ts

index 0821f811b..4bb809a67 100644 --- a/src/api/middlewares/Authentication.ts +++ b/src/api/middlewares/Authentication.ts
@@ -29,6 +29,7 @@ export const NO_AUTHORIZATION_ROUTES = [ "POST /auth/verify", "POST /auth/forgot", "POST /auth/reset", + "POST /auth/fingerprint", "GET /invites/", // Routes with a seperate auth system /^(POST|HEAD|GET|PATCH|DELETE) \/webhooks\/\d+\/\w+\/?/, // no token requires auth diff --git a/src/api/routes/auth/fingerprint.ts b/src/api/routes/auth/fingerprint.ts new file mode 100644
index 000000000..d7ef34b4f --- /dev/null +++ b/src/api/routes/auth/fingerprint.ts
@@ -0,0 +1,29 @@ +/* + Spacebar: A FOSS re-implementation and extension of the Discord.com backend. + Copyright (C) 2023 Spacebar and Spacebar Contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ +import { route } from "@spacebar/api"; +import { createHash } from "node:crypto"; +import { Snowflake } from "@spacebar/util"; +import { Request, Response, Router } from "express"; +const router = Router({ mergeParams: true }); +router.post("/", route({ responses: { 200: { body: "CreateFingerprintResponse" } } }), (req: Request, res: Response) => { + const snowflake = Snowflake.generate(); + return res.json({ + fingerprint: `${snowflake}.${createHash("sha512").update(snowflake).digest("base64")}`, + }); +}); +export default router;