Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Fastify from "fastify";
- import { http } from "@nitric/sdk";
- import { setupFastify } from "../../resources/fastify-setup";
- import { RoleRepository } from "../../repositories/role.repository";
- import { UserRepository } from "../../repositories/user.repository";
- import { registerInternalRoutes } from "./routes";
- import dbClient from "../../db";
- import { FastifyRequest, FastifyReply } from "fastify";
- import { LogtoUser } from "../../resources/logto-fastify";
- // Add this before creating the Fastify instance
- declare module "fastify" {
- export interface FastifyInstance {
- db: Awaited<ReturnType<typeof dbClient>> | null;
- roleRepository: RoleRepository | null;
- userRepository: UserRepository | null;
- verifyLogtoToken: (
- request: FastifyRequest,
- reply: FastifyReply
- ) => Promise<boolean>;
- requireScopes: (
- scopes: string[]
- ) => (request: FastifyRequest, reply: FastifyReply) => Promise<boolean>;
- requireRoles: (
- roles: string[]
- ) => (request: FastifyRequest, reply: FastifyReply) => Promise<boolean>;
- getLogtoUserClaims: (request: FastifyRequest) => LogtoUser | null;
- getLogtoUserClaim: (request: FastifyRequest, claimName: string) => any;
- }
- }
- async function bootstrap(port: number) {
- const fastify = Fastify({
- logger: true,
- });
- // Setup Fastify with plugins, error handlers, etc.
- await setupFastify(fastify, {
- serviceName: "Internal",
- serviceVersion: "1.0.0",
- setupRepositories: (fastify, db) => {
- fastify.decorate("roleRepository", new RoleRepository(db));
- fastify.decorate("userRepository", new UserRepository(db));
- },
- logtoConfig: {
- jwksUrl: `${process.env.LOGTO_EXPRESS_ENDPOINT}/oidc/jwks`,
- issuer: `${process.env.LOGTO_EXPRESS_ENDPOINT}/oidc`,
- audience: "",
- },
- });
- // Register all routes for this service
- registerInternalRoutes(fastify);
- const address = await fastify.listen({ port });
- console.log(`Server listening on ${address}`);
- return fastify.server;
- }
- // Start the server with Nitric
- http(bootstrap, () => {
- console.log("Internal service started");
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement