[census] instead of disallowing suspicious answers, mark them

This commit is contained in:
Avris 2021-02-01 11:02:57 +01:00
parent 0d65127eb4
commit ca0eaa2056
5 changed files with 23 additions and 6 deletions

View File

@ -547,6 +547,7 @@ census:
- ['osobą niebinarną']
- ['osobą cispłciową']
- ['binarną osobą transpłciową']
# - ['nie wiem']
-
type: 'number'
min: 1900

View File

@ -966,7 +966,7 @@ census:
By uniknąć tendencyjności, <strong>kolejność propozycji jest losowa</strong>.
agree: >
Wyrażam zgodę na przetwarzanie moich odpowiedzi
oraz na użycie zanonimizowanej wersji mojego adresu IP oraz fingerprintu przeglądarki
oraz na użycie mojego adresu IP oraz fingerprintu przeglądarki
do przeciwdziałania wandalizmom i spamowi.
Dane te nie są w stanie zidentyfikować żadnej osoby,
zostaną użyte wyłącznie w celu zapewnienia unikalności odpowiedzi

View File

@ -0,0 +1,8 @@
-- Up
ALTER TABLE census ADD COLUMN ip TEXT NULL DEFAULT NULL;
ALTER TABLE census ADD COLUMN userAgent TEXT NULL DEFAULT NULL;
ALTER TABLE census ADD COLUMN acceptLanguage TEXT NULL DEFAULT NULL;
ALTER TABLE census ADD COLUMN suspicious INTEGER NOT NULL DEFAULT 0;
-- Down

View File

@ -168,6 +168,11 @@
countResponses,
};
},
mounted() {
if (process.client) {
this.finished = !!parseInt(window.localStorage.getItem('census-finished') || 0);
}
},
methods: {
startSurvey() {
this.q = 0;
@ -224,6 +229,7 @@
writins: JSON.stringify(this.writins),
});
this.finished = true;
window.localStorage.setItem('census-finished', '1');
}
this.$nextTick(() => {
if (this.$refs.questionform) {

View File

@ -38,19 +38,21 @@ router.get('/census/finished', async (req, res) => {
});
router.post('/census/submit', async (req, res) => {
if (await hasFinished(req)) {
return res.status(401).json({error: 'Unauthorised'});
}
const suspicious = await hasFinished(req);
const id = ulid();
await req.db.get(SQL`INSERT INTO census (id, locale, edition, userId, fingerprint, answers, writins) VALUES (
await req.db.get(SQL`INSERT INTO census (id, locale, edition, userId, fingerprint, answers, writins, ip, userAgent, acceptLanguage, suspicious) VALUES (
${id},
${req.config.locale},
${req.config.census.edition},
${req.user ? req.user.id : null},
${buildFingerprint(req)},
${req.body.answers},
${req.body.writins}
${req.body.writins},
${req.ip},
${req.headers['user-agent']},
${req.headers['accept-language']},
${suspicious}
)`);
return res.json(id);