chore: Changes the way route options work.
This commit is contained in:
parent
0e004b1f9f
commit
c2c59cd0da
13 changed files with 125 additions and 71 deletions
33
src/index.ts
33
src/index.ts
|
@ -3,7 +3,7 @@ import process from "node:process";
|
|||
import { PrismaClient } from '@prisma/client';
|
||||
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 { route as getPermissions } from "./routes/getPermissions.js";
|
||||
|
@ -46,20 +46,29 @@ const fastify = Fastify({
|
|||
logger: true
|
||||
});
|
||||
|
||||
getPermissions(fastify, prisma, sessionTokens, serverOptions);
|
||||
const routeOptions: RouteOptions = {
|
||||
fastify: fastify,
|
||||
prisma: prisma,
|
||||
tokens: sessionTokens,
|
||||
options: serverOptions,
|
||||
|
||||
backendCreate(fastify, prisma, sessionTokens, serverOptions, backends);
|
||||
backendRemove(fastify, prisma, sessionTokens, serverOptions, backends);
|
||||
backendLookup(fastify, prisma, sessionTokens, serverOptions, backends);
|
||||
backends: backends
|
||||
};
|
||||
|
||||
forwardCreate(fastify, prisma, sessionTokens, serverOptions, backends);
|
||||
forwardRemove(fastify, prisma, sessionTokens, serverOptions, backends);
|
||||
forwardLookup(fastify, prisma, sessionTokens, serverOptions, backends);
|
||||
getPermissions(routeOptions);
|
||||
|
||||
userCreate(fastify, prisma, sessionTokens, serverOptions);
|
||||
userRemove(fastify, prisma, sessionTokens, serverOptions);
|
||||
userLookup(fastify, prisma, sessionTokens, serverOptions);
|
||||
userLogin(fastify, prisma, sessionTokens, serverOptions);
|
||||
backendCreate(routeOptions);
|
||||
backendRemove(routeOptions);
|
||||
backendLookup(routeOptions);
|
||||
|
||||
forwardCreate(routeOptions);
|
||||
forwardRemove(routeOptions);
|
||||
forwardLookup(routeOptions);
|
||||
|
||||
userCreate(routeOptions);
|
||||
userRemove(routeOptions);
|
||||
userLookup(routeOptions);
|
||||
userLogin(routeOptions);
|
||||
|
||||
// Run the server!
|
||||
try {
|
||||
|
|
|
@ -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 = {
|
||||
isSignupEnabled: boolean;
|
||||
isSignupAsAdminEnabled: boolean;
|
||||
|
@ -12,3 +17,12 @@ export type SessionToken = {
|
|||
|
||||
token: string
|
||||
};
|
||||
|
||||
export type RouteOptions = {
|
||||
fastify: FastifyInstance,
|
||||
prisma: PrismaClient,
|
||||
tokens: Record<number, SessionToken[]>,
|
||||
|
||||
options: ServerOptions,
|
||||
backends: Record<number, BackendInterface>
|
||||
};
|
|
@ -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 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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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 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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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 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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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 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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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 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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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 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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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 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.
|
||||
*/
|
||||
|
|
|
@ -1,12 +1,18 @@
|
|||
import type { PrismaClient } from "@prisma/client";
|
||||
import type { FastifyInstance } from "fastify";
|
||||
import { hash } from "bcrypt";
|
||||
|
||||
import { ServerOptions, SessionToken } from "../../libs/types.js";
|
||||
import { permissionListEnabled } from "../../libs/permissions.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.
|
||||
*/
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
import type { PrismaClient } from "@prisma/client";
|
||||
import type { FastifyInstance } from "fastify";
|
||||
import { compare } from "bcrypt";
|
||||
|
||||
import { ServerOptions, SessionToken } from "../../libs/types.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.
|
||||
*/
|
||||
|
|
|
@ -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 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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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 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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue