47 lines
961 B
TypeScript
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;
|