diff --git a/.env.example b/.env.example index 6d577e1..a8f5074 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,13 @@ APP_PORT=8000 APP_DEBUG=true -# a 32-bit base64 encryption key -APP_KEY=TKe8lE2IdkgGBUrB4nxdq7mGMf8PK29xqOnGa3vU0PBmNXADJrVA5LKd8pg6g/YO5aFG/ESzUleo/9Hve3SAe4rvwLBejD/SKOmDR4gbaMv4PuiNi8S2sYL30aVyi1OeaSTyYsfjteumkFxFVwrsxhDCX94xvNEuTEfS4repfLo= \ No newline at end of file +# 32-byte base64 string +APP_KEY= + +DB_PORT=5432 +DB_HOSTNAME=db +DB_PASSWORD=homepage +DB_USERNAME=homepage +DB_DATABASE=homepage + +REDIS_HOST=redis +REDIS_PORT=6379 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index daeb419..493222a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,3 +12,27 @@ services: env_file: ./.env environment: APP_PORT: '${APP_PORT}' + networks: + - homepage + redis: + image: redis:alpine + ports: + - '6379:6379' + networks: + - homepage + db: + image: postgres:alpine + ports: + - '5432:5432' + environment: + POSTGRES_PASSWORD: '${DB_PASSWORD}' + POSTGRES_USER: '${DB_USERNAME}' + POSTGRES_DB: '${DB_DATABASE}' + volumes: + - './data/db:/var/lib/postgresql' + networks: + - homepage + +networks: + homepage: + driver: bridge \ No newline at end of file diff --git a/index.js b/index.js index 0c8ddbd..67e9e65 100644 --- a/index.js +++ b/index.js @@ -7,6 +7,9 @@ const app = express(); const session = require('express-session'); const cookie_parse = require('cookie-parser'); const cookie_encrypt = require('cookie-encrypter'); +const Redis = require("ioredis"); +let redisClient = new Redis(process.env.REDIS_PORT, process.env.REDIS_HOST); +let RedisStore = require("connect-redis")(session) const { APP_PORT, APP_KEY } = process.env; @@ -17,8 +20,12 @@ app.use(cookie_parse(APP_KEY)) app.use(cookie_encrypt(APP_KEY)); app.use(session({ secret: APP_KEY, - cookie: { secure: true } + resave: false, + saveUninitialized: true, + cookie: { secure: true }, + store: new RedisStore({ client: redisClient }) })); +app.use(require('./middleware')); const server = app.listen(APP_PORT, () => { console.log("Listening on port " + APP_PORT); diff --git a/package.json b/package.json index 6d43283..4fd385e 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "author": "", "license": "ISC", "dependencies": { + "connect-redis": "^6.1.3", "cookie-encrypter": "^1.0.1", "cookie-parser": "^1.4.6", "crc-32": "^1.2.2", @@ -20,9 +21,11 @@ "express-session": "^1.17.3", "glob": "^8.1.0", "gulp": "^4.0.2", + "ioredis": "^5.3.1", "js-base64": "^3.7.5", "mocha": "^10.2.0", "pug": "^3.0.2", + "redis": "^4.6.4", "unit.js": "^2.1.1" } }