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 { 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 {
|
||||||
|
|
|
@ -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>
|
||||||
|
};
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue