From 9d3f19c47e2a08444e587fbe912642aecf24c9f1 Mon Sep 17 00:00:00 2001 From: pat Date: Sun, 15 Apr 2018 00:14:41 -0700 Subject: [PATCH 1/9] added signupLanguage query support for registration --- routes/actions.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/routes/actions.js b/routes/actions.js index b9019c60..261ada41 100755 --- a/routes/actions.js +++ b/routes/actions.js @@ -201,6 +201,15 @@ router.get('/new/user', function(req, res) { }); router.get('/register', function(req, res) { + if (req.query.signupLanguage && languages.isValid(req.query.signupLanguage)){ + const lang = req.query.signupLanguage; + let maxAge = 1000 * 60 * config.sessionCookieDuration; // cookie age: 30 days + res.cookie('locale', lang, { + maxAge, + httpOnly: true + }); + i18n.setLocale(req, lang); + } if (config.requireInviteLinks) return render.template(req, res, 'invite-needed', { titleKey: 'register' @@ -210,7 +219,16 @@ router.get('/register', function(req, res) { }); router.get('/register/:code', function(req, res, next) { - const { code } = req.params; + const { code } = req.params.code; + if (req.query.signupLanguage && languages.isValid(req.query.signupLanguage)){ + const lang = req.query.signupLanguage; + let maxAge = 1000 * 60 * config.sessionCookieDuration; // cookie age: 30 days + res.cookie('locale', lang, { + maxAge, + httpOnly: true + }); + i18n.setLocale(req, lang); + } InviteLink .get(code) .then(inviteLink => { From ed40b0ef0c4d64c0cd626c31169572dd5ca1b9d6 Mon Sep 17 00:00:00 2001 From: pat Date: Mon, 16 Apr 2018 01:52:28 -0700 Subject: [PATCH 2/9] moved signupLanguage into function and added check for logged in user --- routes/actions.js | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/routes/actions.js b/routes/actions.js index 261ada41..999f6282 100755 --- a/routes/actions.js +++ b/routes/actions.js @@ -201,15 +201,7 @@ router.get('/new/user', function(req, res) { }); router.get('/register', function(req, res) { - if (req.query.signupLanguage && languages.isValid(req.query.signupLanguage)){ - const lang = req.query.signupLanguage; - let maxAge = 1000 * 60 * config.sessionCookieDuration; // cookie age: 30 days - res.cookie('locale', lang, { - maxAge, - httpOnly: true - }); - i18n.setLocale(req, lang); - } + setSignupLanguage(req, res); if (config.requireInviteLinks) return render.template(req, res, 'invite-needed', { titleKey: 'register' @@ -220,15 +212,7 @@ router.get('/register', function(req, res) { router.get('/register/:code', function(req, res, next) { const { code } = req.params.code; - if (req.query.signupLanguage && languages.isValid(req.query.signupLanguage)){ - const lang = req.query.signupLanguage; - let maxAge = 1000 * 60 * config.sessionCookieDuration; // cookie age: 30 days - res.cookie('locale', lang, { - maxAge, - httpOnly: true - }); - i18n.setLocale(req, lang); - } + setSignupLanguage(req, res); InviteLink .get(code) .then(inviteLink => { @@ -379,4 +363,17 @@ function returnToPath(req, res) { returnTo = '/'; res.redirect(returnTo); } -module.exports = router; \ No newline at end of file +// check for signupLanguage, ensure valid lang and user not logged in +// set locale cookie if conditions met, else do nothing +function setSignupLanguage(req, res) { + if (req.query.signupLanguage && languages.isValid(req.query.signupLanguage) && !req.user) { + const lang = req.query.signupLanguage; + let maxAge = 1000 * 60 * config.sessionCookieDuration; // cookie age: 30 days + res.cookie('locale', lang, { + maxAge, + httpOnly: true + }); + i18n.setLocale(req, lang); + } +} +module.exports = router; From bd47eea916a1d5e8ddbbffe3c89b8a1b7d382e04 Mon Sep 17 00:00:00 2001 From: pat Date: Thu, 19 Apr 2018 15:22:28 -0700 Subject: [PATCH 3/9] added rendering register page temporarily using signupLanguage. Locale cookie is not setting on registration post --- routes/actions.js | 12 ++++++++---- routes/helpers/render.js | 7 ++++++- views/register.hbs | 1 + 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/routes/actions.js b/routes/actions.js index 999f6282..20f55593 100755 --- a/routes/actions.js +++ b/routes/actions.js @@ -31,6 +31,9 @@ const formDefs = { }, { name: 'returnTo', required: false + }, { + name: 'signupLanguage', + required: false }] }; @@ -201,7 +204,6 @@ router.get('/new/user', function(req, res) { }); router.get('/register', function(req, res) { - setSignupLanguage(req, res); if (config.requireInviteLinks) return render.template(req, res, 'invite-needed', { titleKey: 'register' @@ -212,7 +214,6 @@ router.get('/register', function(req, res) { router.get('/register/:code', function(req, res, next) { const { code } = req.params.code; - setSignupLanguage(req, res); InviteLink .get(code) .then(inviteLink => { @@ -262,6 +263,7 @@ if (!config.requireInviteLinks) { if (error) { debug.error({ req, error }); } + setSignupLanguage(req, res); returnToPath(req, res); }); }) @@ -310,6 +312,7 @@ router.post('/register/:code', function(req, res, next) { if (error) { debug.error({ req, error }); } + setSignupLanguage(req, res); returnToPath(req, res); }); }) @@ -366,8 +369,9 @@ function returnToPath(req, res) { // check for signupLanguage, ensure valid lang and user not logged in // set locale cookie if conditions met, else do nothing function setSignupLanguage(req, res) { - if (req.query.signupLanguage && languages.isValid(req.query.signupLanguage) && !req.user) { - const lang = req.query.signupLanguage; + if (req.body.signupLanguage && languages.isValid(req.body.signupLanguage)) { + const lang = req.body.signupLanguage; + console.log(lang); let maxAge = 1000 * 60 * config.sessionCookieDuration; // cookie age: 30 days res.cookie('locale', lang, { maxAge, diff --git a/routes/helpers/render.js b/routes/helpers/render.js index f969cdbc..06be30c2 100755 --- a/routes/helpers/render.js +++ b/routes/helpers/render.js @@ -3,6 +3,7 @@ const config = require('config'); const url = require('url'); const getJS = require('../../util/get-js'); +const i18n = require('i18n'); // Internal dependencies const languages = require('../../locales/languages'); @@ -14,7 +15,11 @@ let render = { // scripts (must not contain sensitive data!) template(req, res, view, extraVars, extraJSConfig) { let vars = {}; - + + // override locale cookie using signupLanguage if present + if (req.query.signupLanguage) + i18n.setLocale(req, req.query.signupLanguage); + let jsConfig = { userName: req.user ? req.user.displayName : undefined, userID: req.user ? req.user.id : undefined, diff --git a/views/register.hbs b/views/register.hbs index a11969ed..f40cb9d2 100755 --- a/views/register.hbs +++ b/views/register.hbs @@ -10,6 +10,7 @@
+
From c32090288ffd3043d70f7f6305f0f8ef21ec0d2b Mon Sep 17 00:00:00 2001 From: pat Date: Thu, 19 Apr 2018 21:30:24 -0700 Subject: [PATCH 4/9] add signupLanguage to vars iin render and remove signed in user check in actions --- routes/actions.js | 3 ++- routes/helpers/render.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/routes/actions.js b/routes/actions.js index 20f55593..3b66b69e 100755 --- a/routes/actions.js +++ b/routes/actions.js @@ -366,7 +366,8 @@ function returnToPath(req, res) { returnTo = '/'; res.redirect(returnTo); } -// check for signupLanguage, ensure valid lang and user not logged in + +// check for signupLanguage, ensure valid lang // set locale cookie if conditions met, else do nothing function setSignupLanguage(req, res) { if (req.body.signupLanguage && languages.isValid(req.body.signupLanguage)) { diff --git a/routes/helpers/render.js b/routes/helpers/render.js index 06be30c2..cb87650e 100755 --- a/routes/helpers/render.js +++ b/routes/helpers/render.js @@ -19,7 +19,8 @@ let render = { // override locale cookie using signupLanguage if present if (req.query.signupLanguage) i18n.setLocale(req, req.query.signupLanguage); - + vars.signupLanguage = req.query.signupLanguage; + let jsConfig = { userName: req.user ? req.user.displayName : undefined, userID: req.user ? req.user.id : undefined, From 12d36d25650a058092b1b80e52dbbdebf34a7917 Mon Sep 17 00:00:00 2001 From: pat Date: Fri, 20 Apr 2018 00:59:51 -0700 Subject: [PATCH 5/9] clean up code --- routes/actions.js | 17 ++++++++--------- routes/helpers/render.js | 5 +++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/routes/actions.js b/routes/actions.js index 3b66b69e..6a098ac5 100755 --- a/routes/actions.js +++ b/routes/actions.js @@ -213,7 +213,7 @@ router.get('/register', function(req, res) { }); router.get('/register/:code', function(req, res, next) { - const { code } = req.params.code; + const { code } = req.params; InviteLink .get(code) .then(inviteLink => { @@ -371,14 +371,13 @@ function returnToPath(req, res) { // set locale cookie if conditions met, else do nothing function setSignupLanguage(req, res) { if (req.body.signupLanguage && languages.isValid(req.body.signupLanguage)) { - const lang = req.body.signupLanguage; - console.log(lang); - let maxAge = 1000 * 60 * config.sessionCookieDuration; // cookie age: 30 days - res.cookie('locale', lang, { - maxAge, - httpOnly: true - }); - i18n.setLocale(req, lang); + const lang = req.body.signupLanguage; + let maxAge = 1000 * 60 * config.sessionCookieDuration; // cookie age: 30 days + res.cookie('locale', lang, { + maxAge, + httpOnly: true + }); + i18n.setLocale(req, lang); } } module.exports = router; diff --git a/routes/helpers/render.js b/routes/helpers/render.js index cb87650e..f628536d 100755 --- a/routes/helpers/render.js +++ b/routes/helpers/render.js @@ -15,11 +15,12 @@ let render = { // scripts (must not contain sensitive data!) template(req, res, view, extraVars, extraJSConfig) { let vars = {}; - + // override locale cookie using signupLanguage if present - if (req.query.signupLanguage) + if (req.query.signupLanguage) { i18n.setLocale(req, req.query.signupLanguage); vars.signupLanguage = req.query.signupLanguage; + } let jsConfig = { userName: req.user ? req.user.displayName : undefined, From b8c794960fef7ca61e3c055c5a4662125bc7b71a Mon Sep 17 00:00:00 2001 From: pat Date: Wed, 25 Apr 2018 17:56:08 -0700 Subject: [PATCH 6/9] removed git marks in file --- routes/actions.js | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/routes/actions.js b/routes/actions.js index a5796062..02e37782 100755 --- a/routes/actions.js +++ b/routes/actions.js @@ -374,20 +374,6 @@ function returnToPath(req, res) { res.redirect(returnTo); } -<<<<<<< HEAD -// check for signupLanguage, ensure valid lang -// set locale cookie if conditions met, else do nothing -function setSignupLanguage(req, res) { - if (req.body.signupLanguage && languages.isValid(req.body.signupLanguage)) { - const lang = req.body.signupLanguage; - let maxAge = 1000 * 60 * config.sessionCookieDuration; // cookie age: 30 days - res.cookie('locale', lang, { - maxAge, - httpOnly: true - }); - i18n.setLocale(req, lang); - } -======= // If the ?signupLanguage query parameter or has been POSTed, and the language // is valid, show the form in the language (but do not set the cookie yet). function viewInSignupLanguage(req) { @@ -407,6 +393,5 @@ function setSignupLanguage(req, res) { httpOnly: true }); } ->>>>>>> 30626056619eb681c2798ea5c90bf10780a2d3a1 } module.exports = router; From 71afb76dfc9ad47d8bfea0d045e1e7391a43cff3 Mon Sep 17 00:00:00 2001 From: pat Date: Wed, 25 Apr 2018 18:21:07 -0700 Subject: [PATCH 7/9] add changes missed by merge --- routes/helpers/render.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/routes/helpers/render.js b/routes/helpers/render.js index f628536d..f969cdbc 100755 --- a/routes/helpers/render.js +++ b/routes/helpers/render.js @@ -3,7 +3,6 @@ const config = require('config'); const url = require('url'); const getJS = require('../../util/get-js'); -const i18n = require('i18n'); // Internal dependencies const languages = require('../../locales/languages'); @@ -16,12 +15,6 @@ let render = { template(req, res, view, extraVars, extraJSConfig) { let vars = {}; - // override locale cookie using signupLanguage if present - if (req.query.signupLanguage) { - i18n.setLocale(req, req.query.signupLanguage); - vars.signupLanguage = req.query.signupLanguage; - } - let jsConfig = { userName: req.user ? req.user.displayName : undefined, userID: req.user ? req.user.id : undefined, From 4011a1d9c5ff427d5fe5e7039575892c340d7c1a Mon Sep 17 00:00:00 2001 From: pat Date: Mon, 28 May 2018 20:54:20 -0700 Subject: [PATCH 8/9] added first half of signupTeams support --- routes/actions.js | 41 +++++++++++++++++++++++++++++++++++------ views/register.hbs | 12 ++++++++++++ 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/routes/actions.js b/routes/actions.js index 02e37782..b8eab1c2 100755 --- a/routes/actions.js +++ b/routes/actions.js @@ -17,6 +17,7 @@ const actionHandler = require('./handlers/action-handler.js'); const signinRequiredRoute = require('./handlers/signin-required-route'); const languages = require('../locales/languages'); const search = require('../search'); +const slugs = require('./helpers/slugs.js'); const formDefs = { 'register': [{ @@ -343,12 +344,40 @@ router.post('/register/:code', function(req, res, next) { }); -function sendRegistrationForm(req, res, formInfo) { +async function sendRegistrationForm(req, res, formInfo) { let pageErrors = req.flash('pageErrors'); const { code } = req.params; - - render.template(req, res, 'register', { + const signupTeams = req.query.signupTeams; + // checks if signupTeams exist, valid teams are passed to render + if (signupTeams) { + let signupTeamsArray = signupTeams.split(' '); + let validSignupTeams = []; + let promise_array = []; + for (let i = 0; i < signupTeamsArray.length; i++) { + let team = slugs.resolveAndLoadTeam(req, res, signupTeamsArray[i]) + .then(result => { + validSignupTeams.push({ 'team': result.canonicalSlugName }); + }) + // swallow DocumentNotFoundErrors + .catch(err => console.log(err.message)); + promise_array[i] = team; + } + await Promise.all(promise_array); + render.template(req, res, 'register', { + titleKey: 'register', + pageErrors, + formValues: formInfo ? formInfo.formValues : undefined, + questionCaptcha: forms.getQuestionCaptcha('register'), + illegalUsernameCharactersReadable: User.options.illegalCharsReadable, + scripts: ['register.js'], + inviteCode: code, + signupLanguage: req.query.signupLanguage || req.body.signupLanguage, + signupTeamsTransfer: validSignupTeams, + illegalUsernameCharacters: User.options.illegalChars.source + }); + } else { + render.template(req, res, 'register', { titleKey: 'register', pageErrors, formValues: formInfo ? formInfo.formValues : undefined, @@ -356,10 +385,10 @@ function sendRegistrationForm(req, res, formInfo) { illegalUsernameCharactersReadable: User.options.illegalCharsReadable, scripts: ['register.js'], inviteCode: code, - signupLanguage: req.query.signupLanguage || req.body.signupLanguage - }, { + signupLanguage: req.query.signupLanguage || req.body.signupLanguage, illegalUsernameCharacters: User.options.illegalChars.source - }); + }); + } } // Check for external redirect in returnTo. If present, redirect to /, otherwise diff --git a/views/register.hbs b/views/register.hbs index f40cb9d2..84685d82 100755 --- a/views/register.hbs +++ b/views/register.hbs @@ -29,6 +29,18 @@
+ {{#if signupTeamsTransfer}} +
+

Teams suggested by invite link, check box to join

+ {{#each signupTeamsTransfer}} + + {{/each}} +
+ {{/if}} + {{#if questionCaptcha}}

{{{__ "captcha intro"}}}

From b730b3d70d63cc01a6165c75849baff2bd21e71e Mon Sep 17 00:00:00 2001 From: pat Date: Mon, 28 May 2018 21:07:04 -0700 Subject: [PATCH 9/9] revert unintended change in sendRegistrationForm --- routes/actions.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/routes/actions.js b/routes/actions.js index b8eab1c2..83ea4108 100755 --- a/routes/actions.js +++ b/routes/actions.js @@ -373,7 +373,8 @@ async function sendRegistrationForm(req, res, formInfo) { scripts: ['register.js'], inviteCode: code, signupLanguage: req.query.signupLanguage || req.body.signupLanguage, - signupTeamsTransfer: validSignupTeams, + signupTeamsTransfer: validSignupTeams + }, { illegalUsernameCharacters: User.options.illegalChars.source }); } else { @@ -385,7 +386,8 @@ async function sendRegistrationForm(req, res, formInfo) { illegalUsernameCharactersReadable: User.options.illegalCharsReadable, scripts: ['register.js'], inviteCode: code, - signupLanguage: req.query.signupLanguage || req.body.signupLanguage, + signupLanguage: req.query.signupLanguage || req.body.signupLanguage + }, { illegalUsernameCharacters: User.options.illegalChars.source }); }