Skip to content
This repository was archived by the owner on Apr 19, 2025. It is now read-only.

Commit cde2b64

Browse files
committed
use proper session store
1 parent 218f0ef commit cde2b64

File tree

6 files changed

+58
-258
lines changed

6 files changed

+58
-258
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,6 @@ dist
103103
# TernJS port file
104104
.tern-port
105105

106-
keycloak.json
106+
keycloak.json
107+
sessions.sqlite3
108+
db.sqlite3

db.sqlite3

-12 KB
Binary file not shown.

docker-compose.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
services:
2+
shorten:
3+
build: .
4+
restart: on-failure
5+
environment:
6+
- DB_VENDOR=sqlite
7+
- DB_FILE=/data/db.sqlite3
8+
- SESSION_DB_FILE_LOC=/data/
9+
- SESSION_DB_FILE_NAME=sessions.sqlite3
10+
ports:
11+
- "9215:9215"
12+
volumes:
13+
- ${PWD}/db.sqlite3:/data/db.sqlite3
14+
- ${PWD}/sessions.sqlite3/:/data/sessions.sqlite3

index.js

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,24 @@ const Keycloak = require('keycloak-connect');
22
const hogan = require('hogan-express');
33
const express = require('express');
44
const session = require('express-session');
5+
const SQLiteStore = require('connect-sqlite3')(session);
56
const fetch = require('node-fetch');
67
const baseURL = process.env.baseURL || 'out.epochml.org';
78
const favicon = require('serve-favicon');
89
const sqlite3 = require('sqlite3')
9-
10-
const db = new sqlite3.Database('./db.sqlite3', sqlite3.OPEN_READWRITE, (err) => {
11-
if (err) {
12-
console.error(err.message);
13-
process.exit(1);
14-
}
15-
})
10+
const dbVendor = process.env.DB_VENDOR;
11+
if (dbVendor === "postgresql") {
12+
console.error("SQL support not yet implemented")
13+
process.exit(2)
14+
} else {
15+
var db = new sqlite3.Database(process.env.DB_FILE, sqlite3.OPEN_READWRITE, (err) => {
16+
if (err) {
17+
console.error(err.message);
18+
process.exit(1);
19+
}
20+
})
21+
var store = new SQLiteStore({'dir': process.env.SESSION_DB_FILE_LOC, 'db': process.env.SESSION_DB_FILE_NAME});
22+
}
1623

1724
var app = express();
1825
var server = app.listen(9215, function () {
@@ -29,21 +36,21 @@ app.engine('html', hogan);
2936
// Create a session-store to be used by both the express-session
3037
// middleware and the keycloak middleware.
3138

32-
var memoryStore = new session.MemoryStore();
33-
3439
app.use(session({
3540
secret: 'mySecret',
3641
resave: false,
3742
saveUninitialized: true,
38-
store: memoryStore
43+
store: store
3944
}));
4045

41-
app.use(favicon(__dirname + '/public/img/favicon.ico'));
42-
4346
var keycloak = new Keycloak({
44-
store: memoryStore
47+
store: store
4548
});
4649

50+
app.use(favicon(__dirname + '/public/img/favicon.ico'));
51+
52+
53+
4754
async function getUserInfo(bearer_token) {
4855
const myHeaders = {
4956
'Content-Type': 'application/json',

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
"description": "",
55
"main": "index.js",
66
"scripts": {
7-
"start": "forever start index.js",
7+
"start": "SESSION_DB_FILE_LOC=${PWD} SESSION_DB_FILE_NAME=sessions.sqlite3 DB_VENDOR=sqlite DB_FILE=${PWD}/db.sqlite3 forever start index.js",
88
"stop": "forever stop index.js",
9-
"dev": "nodemon index.js"
9+
"dev": "SESSION_DB_FILE_LOC=${PWD} SESSION_DB_FILE_NAME=sessions.sqlite3 DB_VENDOR=sqlite DB_FILE=${PWD}/db.sqlite3 nodemon index.js",
10+
"container-start": "node index.js"
1011
},
1112
"author": "Dev Singh <[email protected]>",
1213
"license": "BSD-3-Clause",
1314
"dependencies": {
15+
"connect-sqlite3": "^0.9.11",
1416
"express": "^4.17.1",
1517
"express-session": "^1.17.1",
1618
"forever": "^3.0.4",

0 commit comments

Comments
 (0)