From c19bc8d07af48171df46b43bd8940b2a1ffc9caa Mon Sep 17 00:00:00 2001 From: Felix Kaspar Date: Wed, 29 May 2024 23:45:56 +0200 Subject: [PATCH] Environment Config --- server-node/.env | 7 ++++- server-node/src/auth/auth-controller.ts.ts | 22 +++++++++++++++ server-node/src/auth/passport-config.ts | 2 +- server-node/src/auth/user/user-controller.ts | 4 +-- server-node/src/data/sequelize-relations.ts | 6 +++- server-node/src/index.ts | 29 ++++++-------------- server-node/src/jobs/jobs-controller.ts | 1 - 7 files changed, 44 insertions(+), 27 deletions(-) create mode 100644 server-node/src/auth/auth-controller.ts.ts diff --git a/server-node/.env b/server-node/.env index ad14bf6bd..91f8fbf67 100644 --- a/server-node/.env +++ b/server-node/.env @@ -1,2 +1,7 @@ +JOBS_ENABLED=True JOBS_DIR="./jobs" -SESSION_SECRET="default-secret" \ No newline at end of file + +AUTH_ENABLED=True +AUTH_SESSION_SECRET="default-secret" + +SEQUELIZE_LOGGING=False \ No newline at end of file diff --git a/server-node/src/auth/auth-controller.ts.ts b/server-node/src/auth/auth-controller.ts.ts new file mode 100644 index 000000000..2f0b2af40 --- /dev/null +++ b/server-node/src/auth/auth-controller.ts.ts @@ -0,0 +1,22 @@ +import passport from "passport"; +import session from "express-session"; +import { initialize } from "./passport-config"; +import auth from "../routes/auth/auth-controller"; +import { Express } from "express"; + +export function connect(app: Express) { + app.use(session({ + secret: process.env.SESSION_SECRET || "default-secret", + resave: false, + saveUninitialized: false + })); + + app.use(passport.initialize()); + app.use(passport.authenticate(['headerapikey', 'session'], { + session: false, // Only set a session on the login request. + })); + + initialize(passport); + + app.use("/auth", auth); +} \ No newline at end of file diff --git a/server-node/src/auth/passport-config.ts b/server-node/src/auth/passport-config.ts index b1d4a74fb..a4daaa1e8 100644 --- a/server-node/src/auth/passport-config.ts +++ b/server-node/src/auth/passport-config.ts @@ -38,7 +38,7 @@ export function initialize(passport: typeof import("passport")) { )); passport.serializeUser((user, done) => { - done(null, user.id) //TODO: Extend Express.User to include id wich is set by passport + done(null, user.id) }); passport.deserializeUser((id: number, done) => { diff --git a/server-node/src/auth/user/user-controller.ts b/server-node/src/auth/user/user-controller.ts index 1e011250b..611829511 100644 --- a/server-node/src/auth/user/user-controller.ts +++ b/server-node/src/auth/user/user-controller.ts @@ -33,13 +33,13 @@ export async function verifyPassword(user: User, password: string): Promise void ) { User.create({ username: params.username, authenticationMethod: "password" }).then(async user => { user.setPassword(await Password.create({ - password: params.password, + password: params.password, // TODO: Replace with web-crypto })).then(password => { cb(null, user as any as User) }).catch(e => diff --git a/server-node/src/data/sequelize-relations.ts b/server-node/src/data/sequelize-relations.ts index e1de9987b..c2dd59953 100644 --- a/server-node/src/data/sequelize-relations.ts +++ b/server-node/src/data/sequelize-relations.ts @@ -1,7 +1,11 @@ +import 'dotenv/config'; + import { Sequelize, DataTypes } from "sequelize"; //TODO: Make this configurable -const sequelize = new Sequelize("sqlite::memory:"); +const sequelize = new Sequelize("sqlite::memory:", { + logging: process.env.SEQUELIZE_LOGGING === "True" ? console.log : false +}); import { User, AccessRule, APIKey, Password } from "../auth/user/user-model"; diff --git a/server-node/src/index.ts b/server-node/src/index.ts index cf6883865..6887517da 100644 --- a/server-node/src/index.ts +++ b/server-node/src/index.ts @@ -1,3 +1,5 @@ +import 'dotenv/config'; + /* * translation */ @@ -25,13 +27,15 @@ console.log("Available Modules: ", listOperatorNames()); * jobs */ -import "./jobs/jobs-controller"; +if(process.env.JOBS_ENABLED === "True") + import("./jobs/jobs-controller"); /** * database */ -import "./data/sequelize-relations"; +if(process.env.AUTH_ENABLED === "True") + import("./data/sequelize-relations"); /* * EXPRESS @@ -45,25 +49,8 @@ const PORT = 8000; * auth */ -import passport from "passport"; -import session from "express-session"; -import { initialize } from "./auth/passport-config"; -import auth from "./routes/auth/auth-controller"; - -app.use(session({ - secret: process.env.SESSION_SECRET || "default-secret", - resave: false, - saveUninitialized: false -})); - -app.use(passport.initialize()); -app.use(passport.authenticate(['headerapikey', 'session'], { - session: false, // Only set a session on the login request. -})); - -initialize(passport); - -app.use("/auth", auth); +if(process.env.AUTH_ENABLED === "True") + import("./auth/auth-controller.ts").then(router => router.connect(app)); /* * api diff --git a/server-node/src/jobs/jobs-controller.ts b/server-node/src/jobs/jobs-controller.ts index 58823cf3a..958ca200f 100644 --- a/server-node/src/jobs/jobs-controller.ts +++ b/server-node/src/jobs/jobs-controller.ts @@ -1,6 +1,5 @@ import { traverseOperations } from '@stirling-pdf/shared-operations/src/workflow/traverseOperations'; import { PdfFile, RepresentationType } from '@stirling-pdf/shared-operations/src/wrappers/PdfFile'; -import { JoiPDFFileSchema } from '@stirling-pdf/shared-operations/src/wrappers/PdfFileJoi'; import 'dotenv/config'; import fs from 'fs'; import path from "path";