From 27e5583849bccb8169d8d1d953cc7c3b08f4be05 Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Sun, 20 Dec 2020 19:49:57 +0100 Subject: [PATCH] Using generic session ID variable for to determine consent warning, rather than dedicated property. --- assets/components/container/container.vue | 4 ++-- assets/js/ui/actions.js | 9 +-------- src/web/consent.js | 8 -------- src/web/server.js | 13 ++++++++----- 4 files changed, 11 insertions(+), 23 deletions(-) delete mode 100644 src/web/consent.js diff --git a/assets/components/container/container.vue b/assets/components/container/container.vue index 6f879db6..6d03d804 100644 --- a/assets/components/container/container.vue +++ b/assets/components/container/container.vue @@ -45,7 +45,7 @@ function toggleSidebar(state) { async function setConsent(consent) { if (consent) { this.showWarning = false; - await this.$store.dispatch('setConsent', true); + localStorage.setItem('consent', window.env.sessionId); } } @@ -64,7 +64,7 @@ export default { data() { return { showSidebar: false, - showWarning: !window.env.consent, + showWarning: localStorage.getItem('consent') !== window.env.sessionId, }; }, computed: { diff --git a/assets/js/ui/actions.js b/assets/js/ui/actions.js index 14166b1f..7b7b2b37 100644 --- a/assets/js/ui/actions.js +++ b/assets/js/ui/actions.js @@ -1,4 +1,4 @@ -import { graphql, post } from '../api'; +import { graphql } from '../api'; import { curateRelease, curateActor } from '../curate'; function initUiActions(_store, _router) { @@ -26,12 +26,6 @@ function initUiActions(_store, _router) { localStorage.setItem('sfw', sfw); } - async function setConsent({ _commit }, consent) { - const res = await post('/consent', consent); - - return res.ok; - } - async function search({ _commit }, { query, limit = 20 }) { const res = await graphql(` query SearchReleases( @@ -194,7 +188,6 @@ function initUiActions(_store, _router) { setRange, setBatch, setSfw, - setConsent, setTheme, fetchStats, }; diff --git a/src/web/consent.js b/src/web/consent.js deleted file mode 100644 index 4f9330a9..00000000 --- a/src/web/consent.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -function setConsent(req, res) { - req.session.consent = !!req.body; - res.status(204).send(); -} - -module.exports = setConsent; diff --git a/src/web/server.js b/src/web/server.js index 02d8397f..36e35d69 100644 --- a/src/web/server.js +++ b/src/web/server.js @@ -8,6 +8,7 @@ const Router = require('express-promise-router'); const bodyParser = require('body-parser'); const session = require('express-session'); const KnexSessionStore = require('connect-session-knex')(session); +const nanoid = require('nanoid'); const PgConnectionFilterPlugin = require('postgraphile-plugin-connection-filter'); const PgSimplifyInflectorPlugin = require('@graphile-contrib/pg-simplify-inflector'); @@ -38,8 +39,6 @@ const { fetchTags, } = require('./tags'); -const setConsent = require('./consent'); - async function initServer() { const app = express(); const router = Router(); @@ -85,6 +84,12 @@ async function initServer() { router.use(bodyParser.json({ strict: false })); router.use(session({ ...config.web.session, store })); + router.use((req, res, next) => { + req.session.safeId = req.session.safeId || nanoid(); + + next(); + }); + router.get('/api/scenes', fetchScenes); router.get('/api/scenes/:releaseId', fetchScene); router.get('/api/scenes/:releaseId/poster', fetchScenePoster); @@ -110,13 +115,11 @@ async function initServer() { router.get('/api/tags', fetchTags); router.get('/api/tags/:tagId', fetchTag); - router.post('/api/consent', setConsent); - router.get('*', (req, res) => { res.render(path.join(__dirname, '../../assets/index.ejs'), { env: JSON.stringify({ sfw: !!req.headers.sfw || Object.prototype.hasOwnProperty.call(req.query, 'sfw'), - consent: !!req.session.consent, + sessionId: req.session.safeId, }), }); });