diff --git a/app/app.ts b/app/app.ts index 3d026e9..9b3ddca 100644 --- a/app/app.ts +++ b/app/app.ts @@ -1,4 +1,4 @@ -const version = 1.9; +const version = 1.12; import "dotenv"; @@ -16,6 +16,7 @@ import path from "path"; import authRouter from "./routes/auth"; import indexRouter from "./routes/index"; import adduserRouter from "./routes/adduser"; +import settingsRouter from "./routes/settings"; import {db, expire, createDatabase, updateDatabase, MediaRow} from "./lib/db"; @@ -69,7 +70,7 @@ function onError(error: any) { // Check if there is an existing DB or not, then check if it needs to be updated to new schema db.get("SELECT * FROM sqlite_master WHERE name ='users' and type='table'", async (err, row) => { - if (!row) createDatabase(2); + if (!row) createDatabase(3); else checkVersion(); }); @@ -77,12 +78,11 @@ function checkVersion () { db.get("PRAGMA user_version", (err: Error, row: any) => { if (row && row.user_version) { const version = row.user_version; - if (version != 2) console.log("DATABASE IS OUTDATED"); - //no future releases yet, and else statement handles version 1 - //updateDatabase(version, 2); + if (version != 3) console.log("DATABASE IS OUTDATED"); + updateDatabase(version, 3); } else { // Because ver 1 does not have user_version set, we can safely assume that it is ver 1 - updateDatabase(1, 2); + updateDatabase(1, 3); } }); } @@ -124,6 +124,7 @@ app.use(passport.authenticate("session")); app.use("/", indexRouter); app.use("/", authRouter); app.use("/", adduserRouter); +app.use("/", settingsRouter); app.use("/uploads", express.static("uploads")); @@ -141,6 +142,8 @@ async function prune () { fs.unlink(`uploads/${row.path}`, (err) => { if (err && err.errno == -4058) { console.log("File already deleted"); + } else { + if (err) console.log(err); } }); }); diff --git a/app/lib/db.ts b/app/lib/db.ts index 42da724..1bd165b 100644 --- a/app/lib/db.ts +++ b/app/lib/db.ts @@ -31,6 +31,14 @@ export function createDatabase(version: number) { )" ); + db.run( + "CREATE TABLE IF NOT EXISTS settings ( \ + id INTEGER PRIMARY KEY, \ + downsclaing BOOLEAN, \ + namerandomization BOOLEAN \ + )" + ); + db.run(`PRAGMA user_version = ${version}`); } @@ -38,9 +46,10 @@ export function createDatabase(version: number) { export function updateDatabase(oldVersion: number, newVersion: number) { if (oldVersion == 1) { console.log(`Updating database from ${oldVersion} to ${newVersion}`); - db.run("PRAGMA user_version = 2", (err) => { + db.run("PRAGMA user_version = 3", (err) => { if (err) return; }); + db.run("ALTER TABLE media ADD COLUMN username TEXT", (err) => { if (err) return; }); @@ -49,6 +58,20 @@ export function updateDatabase(oldVersion: number, newVersion: number) { if (err) return; }); } + if (oldVersion == 2) { + console.log(`Updating database from ${oldVersion} to ${newVersion}`); + db.run("PRAGMA user_version = 3", (err) => { + if (err) return; + }); + + db.run( + "CREATE TABLE IF NOT EXISTS settings ( \ + id INTEGER PRIMARY KEY, \ + downsclaing BOOLEAN, \ + namerandomization BOOLEAN \ + )" + ); + } } /**Inserts into the media table */ diff --git a/app/public/css/login.css b/app/public/css/login.css index d33b643..12f94a1 100644 --- a/app/public/css/login.css +++ b/app/public/css/login.css @@ -2,7 +2,7 @@ max-width: 400px; margin: 50px auto; padding: 25px; - background: #11111; + background: #111111; border: 1px solid #e6e6e6; border-radius: 8px; } diff --git a/app/routes/settings.ts b/app/routes/settings.ts new file mode 100644 index 0000000..5d83ca0 --- /dev/null +++ b/app/routes/settings.ts @@ -0,0 +1,44 @@ +import type { + RequestHandler as Middleware, + Request, + Response, + NextFunction, +} from "express"; + +import express from "express"; + +import { db, UserRow } from "../lib/db"; + +const router = express.Router(); + +const fetchUsers = (): Promise<[UserRow]> => { + const query = "SELECT * FROM users"; + + return new Promise((resolve, reject) => { + db.all(query, (err: Error, rows: [UserRow]) => { + if (err) reject(err); + resolve(rows); + }); + }); +} + +const fetchSettings: Middleware = async (req, res, next) => { + res.locals.users = req.user.username == "admin" ? await fetchUsers() : null; + next(); +}; + +router.get( + "/settings", + (req: Request, res: Response, next: NextFunction) => { + if (!req.user) return res.render("home"); + console.log(req.user); + next(); + }, + fetchSettings, + (req: Request, res: Response) => { + res.locals.filter = null; + req.user.username == "admin" ? res.render("settings", { user: req.user, userList: res.locals.users }) : res.redirect("/"); + } +); + +export default router; \ No newline at end of file diff --git a/app/views/login.ejs b/app/views/login.ejs index f727a96..a851795 100644 --- a/app/views/login.ejs +++ b/app/views/login.ejs @@ -1,37 +1,40 @@ -
- - -