chore: Changes the way route options work.

This commit is contained in:
greysoh 2024-04-22 20:50:50 -04:00
parent 0e004b1f9f
commit c2c59cd0da
No known key found for this signature in database
GPG key ID: FE0F173B8FC01571
13 changed files with 125 additions and 71 deletions

View file

@ -3,7 +3,7 @@ import process from "node:process";
import { PrismaClient } from '@prisma/client'; import { PrismaClient } from '@prisma/client';
import Fastify from "fastify"; import Fastify from "fastify";
import { ServerOptions, SessionToken } from "./libs/types.js"; import type { ServerOptions, SessionToken, RouteOptions } from "./libs/types.js";
import type { BackendInterface } from "./backendimpl/base.js"; import type { BackendInterface } from "./backendimpl/base.js";
import { route as getPermissions } from "./routes/getPermissions.js"; import { route as getPermissions } from "./routes/getPermissions.js";
@ -46,20 +46,29 @@ const fastify = Fastify({
logger: true logger: true
}); });
getPermissions(fastify, prisma, sessionTokens, serverOptions); const routeOptions: RouteOptions = {
fastify: fastify,
prisma: prisma,
tokens: sessionTokens,
options: serverOptions,
backendCreate(fastify, prisma, sessionTokens, serverOptions, backends); backends: backends
backendRemove(fastify, prisma, sessionTokens, serverOptions, backends); };
backendLookup(fastify, prisma, sessionTokens, serverOptions, backends);
forwardCreate(fastify, prisma, sessionTokens, serverOptions, backends); getPermissions(routeOptions);
forwardRemove(fastify, prisma, sessionTokens, serverOptions, backends);
forwardLookup(fastify, prisma, sessionTokens, serverOptions, backends);
userCreate(fastify, prisma, sessionTokens, serverOptions); backendCreate(routeOptions);
userRemove(fastify, prisma, sessionTokens, serverOptions); backendRemove(routeOptions);
userLookup(fastify, prisma, sessionTokens, serverOptions); backendLookup(routeOptions);
userLogin(fastify, prisma, sessionTokens, serverOptions);
forwardCreate(routeOptions);
forwardRemove(routeOptions);
forwardLookup(routeOptions);
userCreate(routeOptions);
userRemove(routeOptions);
userLookup(routeOptions);
userLogin(routeOptions);
// Run the server! // Run the server!
try { try {

View file

@ -1,3 +1,8 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../backendimpl/base.js";
export type ServerOptions = { export type ServerOptions = {
isSignupEnabled: boolean; isSignupEnabled: boolean;
isSignupAsAdminEnabled: boolean; isSignupAsAdminEnabled: boolean;
@ -12,3 +17,12 @@ export type SessionToken = {
token: string token: string
}; };
export type RouteOptions = {
fastify: FastifyInstance,
prisma: PrismaClient,
tokens: Record<number, SessionToken[]>,
options: ServerOptions,
backends: Record<number, BackendInterface>
};

View file

@ -1,11 +1,13 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
import type { RouteOptions } from "../../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens
} = routeOptions;
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,11 +1,13 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
import type { RouteOptions } from "../../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens
} = routeOptions;
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,11 +1,13 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
import type { RouteOptions } from "../../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens
} = routeOptions;
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,11 +1,13 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
import type { RouteOptions } from "../../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens
} = routeOptions;
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,11 +1,13 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
import type { RouteOptions } from "../../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens
} = routeOptions;
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, _backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,11 +1,13 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
import type { RouteOptions } from "../../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens
} = routeOptions;
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,10 +1,13 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import { ServerOptions, SessionToken } from "../libs/types.js";
import { hasPermission, getUID } from "../libs/permissions.js"; import { hasPermission, getUID } from "../libs/permissions.js";
import type { RouteOptions } from "../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens
} = routeOptions;
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) {
/** /**
* Logs in to a user account. * Logs in to a user account.
*/ */

View file

@ -1,12 +1,18 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import { hash } from "bcrypt"; import { hash } from "bcrypt";
import { ServerOptions, SessionToken } from "../../libs/types.js";
import { permissionListEnabled } from "../../libs/permissions.js"; import { permissionListEnabled } from "../../libs/permissions.js";
import { generateToken } from "../../libs/generateToken.js"; import { generateToken } from "../../libs/generateToken.js";
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) { import type { RouteOptions } from "../../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens,
options
} = routeOptions;
/** /**
* Creates a new user account to use, only if it is enabled. * Creates a new user account to use, only if it is enabled.
*/ */

View file

@ -1,11 +1,15 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import { compare } from "bcrypt"; import { compare } from "bcrypt";
import { ServerOptions, SessionToken } from "../../libs/types.js";
import { generateToken } from "../../libs/generateToken.js"; import { generateToken } from "../../libs/generateToken.js";
import type { RouteOptions } from "../../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens
} = routeOptions;
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) {
/** /**
* Logs in to a user account. * Logs in to a user account.
*/ */

View file

@ -1,10 +1,13 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
import type { RouteOptions } from "../../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens
} = routeOptions;
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,10 +1,13 @@
import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify";
import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
import type { RouteOptions } from "../../libs/types.js";
export function route(routeOptions: RouteOptions) {
const {
fastify,
prisma,
tokens
} = routeOptions;
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };