From a35959a092f5d40837165b7f3b4e3ec47baebf1d Mon Sep 17 00:00:00 2001 From: fatchan Date: Sun, 31 May 2020 14:59:11 +1000 Subject: [PATCH] Sage only email without force anon reference #130 --- configs/main.js.example | 1 + migrations/index.js | 1 + migrations/migration-0.0.7.js | 12 ++++++++++++ models/forms/changeboardsettings.js | 1 + models/forms/makepost.js | 6 +++--- package.json | 2 +- views/includes/postform.pug | 12 +++++++++--- views/pages/managesettings.pug | 4 ++++ 8 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 migrations/migration-0.0.7.js diff --git a/configs/main.js.example b/configs/main.js.example index 5ab02c0a..ebba76d4 100644 --- a/configs/main.js.example +++ b/configs/main.js.example @@ -247,6 +247,7 @@ module.exports = { pphTrigger: 0, //number of posts in an hour before ^ triggerAction: 0, //0=nothing, 1=captcha enable for threads, 2=captcha enable for all posts, 3=lock board forceAnon: false, //disable name and subject, only allow sage email + sageOnlyEmail: false, //only allow sage email early404: true, //delete threads beyond the first 1/3 of pages with less than 5 replies ids: false, //show per thread poster ID based on ip flags: false, //show geo flags, requires nginx setup diff --git a/migrations/index.js b/migrations/index.js index 62748d27..e529a55b 100644 --- a/migrations/index.js +++ b/migrations/index.js @@ -7,4 +7,5 @@ module.exports = { '0.0.4': require(__dirname+'/migration-0.0.4.js'), //rename some fields for board lock mode and unlisting '0.0.5': require(__dirname+'/migration-0.0.5.js'), //add bumplimit to board settings '0.0.6': require(__dirname+'/migration-0.0.6.js'), //add blocked countries to board settings + '0.0.7': require(__dirname+'/migration-0.0.7.js'), //sage only email without force anon for some reason } diff --git a/migrations/migration-0.0.7.js b/migrations/migration-0.0.7.js new file mode 100644 index 00000000..98a1d1db --- /dev/null +++ b/migrations/migration-0.0.7.js @@ -0,0 +1,12 @@ +'use strict'; + +module.exports = async(db, redis) => { + console.log('add sageOnlyEmail option to boards'); + await db.collection('boards').updateMany({}, { + '$set': { + 'settings.sageOnlyEmail': false, + } + }); + console.log('Cleared boards cache'); + await redis.deletePattern('board:*'); +}; diff --git a/models/forms/changeboardsettings.js b/models/forms/changeboardsettings.js index 46bd93cf..18d56a7a 100644 --- a/models/forms/changeboardsettings.js +++ b/models/forms/changeboardsettings.js @@ -82,6 +82,7 @@ module.exports = async (req, res, next) => { 'ids': booleanSetting(req.body.ids), 'flags': booleanSetting(req.body.flags), 'forceAnon': booleanSetting(req.body.force_anon), + 'sageOnlyEmail': booleanSetting(req.body.sage_only_email), 'userPostDelete': booleanSetting(req.body.user_post_delete), 'userPostSpoiler': booleanSetting(req.body.user_post_spoiler), 'userPostUnlink': booleanSetting(req.body.user_post_unlink), diff --git a/models/forms/makepost.js b/models/forms/makepost.js index ec60072c..4dc373b3 100644 --- a/models/forms/makepost.js +++ b/models/forms/makepost.js @@ -45,7 +45,7 @@ module.exports = async (req, res, next) => { let salt = null; let thread = null; const { filterBanDuration, filterMode, filters, blockedCountries, - maxFiles, forceAnon, replyLimit, disableReplySubject, + maxFiles, sageOnlyEmail, forceAnon, replyLimit, disableReplySubject, threadLimit, ids, userPostSpoiler, pphTrigger, tphTrigger, triggerAction, captchaMode, lockMode, allowedFileTypes, flags } = res.locals.board.settings; if (flags === true @@ -322,9 +322,9 @@ module.exports = async (req, res, next) => { const spoiler = userPostSpoiler && req.body.spoiler ? true : false; //forceanon hide reply subjects so cant be used as name for replies - //forceanon only allow sage email + //forceanon and sageonlyemail only allow sage email let subject = (res.locals.permLevel >= 4 && req.body.thread && (disableReplySubject || forceAnon)) ? null : req.body.subject; - let email = (res.locals.permLevel < 4 || !forceAnon || req.body.email === 'sage') ? req.body.email : null; + let email = (res.locals.permLevel < 4 || (!forceAnon && !sageOnlyEmail) || req.body.email === 'sage') ? req.body.email : null; //get name, trip and cap const { name, tripcode, capcode } = await nameHandler(req.body.name, res.locals.permLevel, res.locals.board.settings); diff --git a/package.json b/package.json index be9b5968..6662aa63 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "jschan", "version": "0.0.1", - "migrateVersion": "0.0.6", + "migrateVersion": "0.0.7", "description": "", "main": "server.js", "dependencies": { diff --git a/views/includes/postform.pug b/views/includes/postform.pug index 2229a695..d50125e4 100644 --- a/views/includes/postform.pug +++ b/views/includes/postform.pug @@ -21,9 +21,15 @@ section.form-wrapper.flex-center .label Name input.mr-1(type='text', name='name', placeholder=board.settings.defaultName maxlength=globalLimits.fieldLength.name) a.close.postform-style(href='#!') X - section.row - .label Email - input(type='text', name='email', autocomplete='off' maxlength=globalLimits.fieldLength.email) + if board.settings.sageOnlyEmail + section.row + .label Sage + label.postform-style.ph-5 + input(type='checkbox', name='email', value='sage') + else + section.row + .label Email + input(type='text', name='email', autocomplete='off' maxlength=globalLimits.fieldLength.email) include ./subjectfield.pug section.row .label diff --git a/views/pages/managesettings.pug b/views/pages/managesettings.pug index 2f0ea2a1..ae292ea1 100644 --- a/views/pages/managesettings.pug +++ b/views/pages/managesettings.pug @@ -97,6 +97,10 @@ block content .label Force Anon label.postform-style.ph-5 input(type='checkbox', name='force_anon', value='true' checked=board.settings.forceAnon) + .row + .label Sage Only Email + label.postform-style.ph-5 + input(type='checkbox', name='sage_only_email', value='true' checked=board.settings.sageOnlyEmail) .col.mr-5 .row .label Force Thread Subject