authsrv/src/routes/well-known/auth-node.ts
2023-07-23 03:06:24 +02:00

47 lines
961 B
TypeScript

import { RouteOptions } from "fastify";
import { BASE_URL, DOMAIN } from "~/config.js";
import { Account } from "~/db/entities/account.js";
import LongmontDataSource from "~/db/index.js";
interface AuthNode {
api_base: string;
name_suffix: string;
software: {
name: string;
version: string;
source: string;
};
features: string[];
registrations: "open" | "approval" | "closed";
usage: {
users: number | null;
};
}
const route: RouteOptions = {
method: "GET",
url: "/.well-known/longmont/auth-node",
handler: async (_, res) => {
const userCount = await LongmontDataSource.getRepository(Account).count();
res.send({
api_base: BASE_URL,
name_suffix: DOMAIN,
software: {
name: "authsrv",
version: "0.1.0-dev",
source: "https://github.com/longmont-chat",
},
features: [],
registrations: "open",
usage: {
users: userCount,
},
} satisfies AuthNode);
res.status(204);
},
};
export default route;