aboutsummaryrefslogtreecommitdiff
path: root/src/index.js
diff options
context:
space:
mode:
authorAkshay <[email protected]>2024-11-13 22:34:03 +0000
committerAkshay <[email protected]>2024-11-13 22:34:03 +0000
commitbbe0413ae1aad2516745f6f279225d2aea3555af (patch)
tree609fc751fb153f9fc0e3fbf111b644d5df5b1025 /src/index.js
parent81adffe4c1ecd2f0260ec08e73760505dfe4edaa (diff)
add login and users and all the pizzazz
Diffstat (limited to 'src/index.js')
-rw-r--r--src/index.js44
1 files changed, 16 insertions, 28 deletions
diff --git a/src/index.js b/src/index.js
index 6885ee5..6296534 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,35 +1,13 @@
1const express = require("express"); 1const express = require("express");
2const rateLimit = require("express-rate-limit");
2const path = require("node:path"); 3const path = require("node:path");
3const geddit = require("./geddit.js"); 4const geddit = require("./geddit.js");
4const { Database } = require("bun:sqlite"); 5const cookieParser = require("cookie-parser");
5
6const db = new Database("readit.db");
7
8const createUsers = db.query(`
9 CREATE TABLE IF NOT EXISTS users (
10 id INTEGER PRIMARY KEY AUTOINCREMENT,
11 username TEXT UNIQUE,
12 password_hash TEXT
13 )
14`);
15
16createUsers.run();
17
18const createSubs = db.query(`
19 CREATE TABLE IF NOT EXISTS subscriptions (
20 id INTEGER PRIMARY KEY AUTOINCREMENT,
21 user_id INTEGER,
22 subreddit TEXT,
23 FOREIGN KEY(user_id) REFERENCES users(id),
24 UNIQUE(user_id, subreddit)
25 )
26`);
27
28createSubs.run();
29
30module.exports = { db };
31
32const app = express(); 6const app = express();
7const hasher = new Bun.CryptoHasher("sha256", "secret-key");
8const JWT_KEY = hasher.update(Math.random().toString()).digest("hex");
9
10module.exports = { JWT_KEY };
33 11
34app.set("views", path.join(__dirname, "views")); 12app.set("views", path.join(__dirname, "views"));
35app.set("view engine", "pug"); 13app.set("view engine", "pug");
@@ -38,6 +16,16 @@ const routes = require("./routes/index");
38app.use(express.json()); 16app.use(express.json());
39app.use(express.urlencoded({ extended: true })); 17app.use(express.urlencoded({ extended: true }));
40app.use(express.static(path.join(__dirname, "public"))); 18app.use(express.static(path.join(__dirname, "public")));
19app.use(cookieParser());
20app.use(
21 rateLimit({
22 windowMs: 15 * 60 * 1000,
23 max: 100,
24 message: "Too many requests from this IP, please try again later.",
25 standardHeaders: true,
26 legacyHeaders: false,
27 }),
28);
41app.use("/", routes); 29app.use("/", routes);
42 30
43const port = process.env.READIT_PORT; 31const port = process.env.READIT_PORT;