From d83c8614821b76416a149afed581e124fddcd447 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Fri, 7 Jul 2017 16:37:16 +0200 Subject: [PATCH 01/10] move invalid validation link file it will be a view now as it contains templated parameters --- .../invalid_verification_link | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename public_html/invalid_verification_link.html => views/invalid_verification_link (100%) diff --git a/public_html/invalid_verification_link.html b/views/invalid_verification_link similarity index 100% rename from public_html/invalid_verification_link.html rename to views/invalid_verification_link From 2411b5324da6dba5272ea53b09f1d7e7b64fb933 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Fri, 7 Jul 2017 16:37:49 +0200 Subject: [PATCH 02/10] get base, username and appId from template --- views/invalid_verification_link | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/views/invalid_verification_link b/views/invalid_verification_link index fe6914fc82..ffbb677271 100644 --- a/views/invalid_verification_link +++ b/views/invalid_verification_link @@ -37,21 +37,16 @@ From 28a2e5e2de832868e668f76e0d1231fa86394beb Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Fri, 7 Jul 2017 16:38:57 +0200 Subject: [PATCH 03/10] use templating for invalid verification link in router --- src/Routers/PublicAPIRouter.js | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/Routers/PublicAPIRouter.js b/src/Routers/PublicAPIRouter.js index 012c13b3e5..f8f4c1b335 100644 --- a/src/Routers/PublicAPIRouter.js +++ b/src/Routers/PublicAPIRouter.js @@ -152,16 +152,30 @@ export class PublicAPIRouter extends PromiseRouter { } invalidVerificationLink(req) { - const config = req.config; - if (req.query.username && req.params.appId) { - const params = qs.stringify({username: req.query.username, appId: req.params.appId}); - return Promise.resolve({ - status: 302, - location: `${config.invalidVerificationLinkURL}?${params}` - }); - } else { - return this.invalidLink(req); - } + const config = req.config; + if (!config.publicServerURL) { + return Promise.resolve({ + status: 404, + text: 'Not found.' + }); + } + + if (req.query.username && req.params.appId) { + // Should we keep the file in memory or leave like that? + fs.readFile(path.resolve(views, "invalid_verification_link"), 'utf-8', (err, data) => { + if (err) { + return Promise.reject(err); + } + data = data.replace("PARSE_SERVER_URL", `'${config.publicServerURL}'`); + data = data.replace("USERNAME", `'${req.query.username}'`); + data = data.replace("APPID", `'${req.params.appId}'`); + return Promise.resolve({ + text: data + }) + }); + } else { + return this.invalidLink(req); + } } missingPublicServerURL() { From 24cc552513870abef6d1fbeed809276ca2b8891f Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Fri, 7 Jul 2017 16:59:22 +0200 Subject: [PATCH 04/10] fix indendation --- src/Routers/PublicAPIRouter.js | 46 +++++++++++++++++----------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/Routers/PublicAPIRouter.js b/src/Routers/PublicAPIRouter.js index f8f4c1b335..7bb1e9f001 100644 --- a/src/Routers/PublicAPIRouter.js +++ b/src/Routers/PublicAPIRouter.js @@ -152,30 +152,30 @@ export class PublicAPIRouter extends PromiseRouter { } invalidVerificationLink(req) { - const config = req.config; - if (!config.publicServerURL) { - return Promise.resolve({ - status: 404, - text: 'Not found.' - }); - } + const config = req.config; + if (!config.publicServerURL) { + return Promise.resolve({ + status: 404, + text: 'Not found.' + }); + } - if (req.query.username && req.params.appId) { - // Should we keep the file in memory or leave like that? - fs.readFile(path.resolve(views, "invalid_verification_link"), 'utf-8', (err, data) => { - if (err) { - return Promise.reject(err); - } - data = data.replace("PARSE_SERVER_URL", `'${config.publicServerURL}'`); - data = data.replace("USERNAME", `'${req.query.username}'`); - data = data.replace("APPID", `'${req.params.appId}'`); - return Promise.resolve({ - text: data - }) - }); - } else { - return this.invalidLink(req); - } + if (req.query.username && req.params.appId) { + // Should we keep the file in memory or leave like that? + fs.readFile(path.resolve(views, "invalid_verification_link"), 'utf-8', (err, data) => { + if (err) { + return Promise.reject(err); + } + data = data.replace("PARSE_SERVER_URL", `'${config.publicServerURL}'`); + data = data.replace("USERNAME", `'${req.query.username}'`); + data = data.replace("APPID", `'${req.params.appId}'`); + return Promise.resolve({ + text: data + }) + }); + } else { + return this.invalidLink(req); + } } missingPublicServerURL() { From 2bb9986b006b0fb921d36c27cd9c1ea5c6e25a95 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Fri, 7 Jul 2017 17:02:15 +0200 Subject: [PATCH 05/10] update spec --- spec/EmailVerificationToken.spec.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/spec/EmailVerificationToken.spec.js b/spec/EmailVerificationToken.spec.js index 46bde459a0..b49d3d7998 100644 --- a/spec/EmailVerificationToken.spec.js +++ b/spec/EmailVerificationToken.spec.js @@ -36,8 +36,7 @@ describe("Email Verification Token Expiration: ", () => { request.get(sendEmailOptions.link, { followRedirect: false, }, (error, response) => { - expect(response.statusCode).toEqual(302); - expect(response.body).toEqual('Found. Redirecting to http://localhost:8378/1/apps/invalid_verification_link.html?username=testEmailVerifyTokenValidity&appId=test'); + expect(response.body).toEqual('Found. Redirecting to http://localhost:8378/1/apps/invalid_verification_link'); done(); }); }, 1000); @@ -408,8 +407,7 @@ describe("Email Verification Token Expiration: ", () => { request.get(sendEmailOptions.link, { followRedirect: false, }, (error, response) => { - expect(response.statusCode).toEqual(302); - expect(response.body).toEqual('Found. Redirecting to http://localhost:8378/1/apps/invalid_verification_link.html?username=testEmailVerifyTokenValidity&appId=test'); + expect(response.body).toEqual('Found. Redirecting to http://localhost:8378/1/apps/invalid_verification_link'); done(); }); }) From 7602991bc1eca017171782b721feed5305dea4f8 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 24 Jul 2017 11:54:16 +0200 Subject: [PATCH 06/10] cache the template file in memory --- src/Routers/PublicAPIRouter.js | 50 ++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/src/Routers/PublicAPIRouter.js b/src/Routers/PublicAPIRouter.js index 7bb1e9f001..c2bde00f67 100644 --- a/src/Routers/PublicAPIRouter.js +++ b/src/Routers/PublicAPIRouter.js @@ -151,6 +151,33 @@ export class PublicAPIRouter extends PromiseRouter { }); } + var invalid_verification_link_page_template_file = null; + /** + * loading the template for invalid verification link page + * this method returns the template for the page stored in memory + * on first access it will load the template file from disk + */ + loadInvalidVerificationLinkPageTemplate() { + if (invalid_verification_link_page_template_file) { + return invalid_verification_link_page_template_file; + } else { + invalid_verification_link_page_template_file = loadPageTemplateFile("invalid_verification_link"); + if (invalid_verification_link_page_template_file) { + invalid_verification_link_page_template_file = invalid_verification_link_page_template_file.replace("PARSE_SERVER_URL", `'${config.publicServerURL}'`); + } + return invalid_verification_link_page_template_file; + } + } + + loadPageTemplateFile(filename) { + fs.readFile(path.resolve(views, filename), 'utf-8', (err, data) => { + if (err) { + return null; + } + return data; + }); + } + invalidVerificationLink(req) { const config = req.config; if (!config.publicServerURL) { @@ -161,18 +188,19 @@ export class PublicAPIRouter extends PromiseRouter { } if (req.query.username && req.params.appId) { - // Should we keep the file in memory or leave like that? - fs.readFile(path.resolve(views, "invalid_verification_link"), 'utf-8', (err, data) => { - if (err) { - return Promise.reject(err); - } - data = data.replace("PARSE_SERVER_URL", `'${config.publicServerURL}'`); - data = data.replace("USERNAME", `'${req.query.username}'`); - data = data.replace("APPID", `'${req.params.appId}'`); + // load page template from file or from memory + var invalid_verification_link_page = loadInvalidVerificationLinkPageTemplate(); + if (invalid_verification_link_page) { + // replace dynamic template attributes + invalid_verification_link_page = invalid_verification_link_page.replace("USERNAME", `'${req.query.username}'`); + invalid_verification_link_page = invalid_verification_link_page.replace("APPID", `'${req.params.appId}'`); + // send page to the client return Promise.resolve({ - text: data - }) - }); + text: invalid_verification_link_page + }); + } else { + Promise.reject("Could not load invalid_verification_link template."); + } } else { return this.invalidLink(req); } From fdd8437882e98e99a4ddd879c5c0377ca8b72460 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Fri, 3 Nov 2017 14:08:05 +0100 Subject: [PATCH 07/10] fix syntax --- src/Routers/PublicAPIRouter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Routers/PublicAPIRouter.js b/src/Routers/PublicAPIRouter.js index c2bde00f67..48a5bc9dae 100644 --- a/src/Routers/PublicAPIRouter.js +++ b/src/Routers/PublicAPIRouter.js @@ -151,7 +151,7 @@ export class PublicAPIRouter extends PromiseRouter { }); } - var invalid_verification_link_page_template_file = null; + var invalid_verification_link_page_template_file; /** * loading the template for invalid verification link page * this method returns the template for the page stored in memory From 31baccc177f1b8dcaf7ddea1fee414238dc0700c Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Fri, 3 Nov 2017 14:22:46 +0100 Subject: [PATCH 08/10] fix property creation --- src/Routers/PublicAPIRouter.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Routers/PublicAPIRouter.js b/src/Routers/PublicAPIRouter.js index 865046fe27..9aa2a13d04 100644 --- a/src/Routers/PublicAPIRouter.js +++ b/src/Routers/PublicAPIRouter.js @@ -151,21 +151,20 @@ export class PublicAPIRouter extends PromiseRouter { }); } - var invalid_verification_link_page_template_file; /** * loading the template for invalid verification link page * this method returns the template for the page stored in memory * on first access it will load the template file from disk */ loadInvalidVerificationLinkPageTemplate() { - if (invalid_verification_link_page_template_file) { - return invalid_verification_link_page_template_file; + if (this.invalid_verification_link_page_template_file) { + return this.invalid_verification_link_page_template_file; } else { - invalid_verification_link_page_template_file = loadPageTemplateFile("invalid_verification_link"); - if (invalid_verification_link_page_template_file) { - invalid_verification_link_page_template_file = invalid_verification_link_page_template_file.replace("PARSE_SERVER_URL", `'${config.publicServerURL}'`); + this.invalid_verification_link_page_template_file = loadPageTemplateFile("invalid_verification_link"); + if (this.invalid_verification_link_page_template_file) { + this.invalid_verification_link_page_template_file = this.invalid_verification_link_page_template_file.replace("PARSE_SERVER_URL", `'${config.publicServerURL}'`); } - return invalid_verification_link_page_template_file; + return this.invalid_verification_link_page_template_file; } } From f0da9309df7a29eaa9a112722b46d84cbe34a2fb Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Fri, 3 Nov 2017 14:29:13 +0100 Subject: [PATCH 09/10] fix undefined references --- src/Routers/PublicAPIRouter.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Routers/PublicAPIRouter.js b/src/Routers/PublicAPIRouter.js index 9aa2a13d04..c9e081a182 100644 --- a/src/Routers/PublicAPIRouter.js +++ b/src/Routers/PublicAPIRouter.js @@ -157,10 +157,11 @@ export class PublicAPIRouter extends PromiseRouter { * on first access it will load the template file from disk */ loadInvalidVerificationLinkPageTemplate() { + const config = req.config; if (this.invalid_verification_link_page_template_file) { return this.invalid_verification_link_page_template_file; } else { - this.invalid_verification_link_page_template_file = loadPageTemplateFile("invalid_verification_link"); + this.invalid_verification_link_page_template_file = this.loadPageTemplateFile("invalid_verification_link"); if (this.invalid_verification_link_page_template_file) { this.invalid_verification_link_page_template_file = this.invalid_verification_link_page_template_file.replace("PARSE_SERVER_URL", `'${config.publicServerURL}'`); } @@ -188,7 +189,7 @@ export class PublicAPIRouter extends PromiseRouter { if (req.query.username && req.params.appId) { // load page template from file or from memory - var invalid_verification_link_page = loadInvalidVerificationLinkPageTemplate(); + var invalid_verification_link_page = this.loadInvalidVerificationLinkPageTemplate(); if (invalid_verification_link_page) { // replace dynamic template attributes invalid_verification_link_page = invalid_verification_link_page.replace("USERNAME", `'${req.query.username}'`); From d2e14cdebc6447aec37a90d91bf9be7843e59454 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Fri, 3 Nov 2017 14:33:10 +0100 Subject: [PATCH 10/10] fix undefined config --- src/Routers/PublicAPIRouter.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Routers/PublicAPIRouter.js b/src/Routers/PublicAPIRouter.js index c9e081a182..fa6f719db1 100644 --- a/src/Routers/PublicAPIRouter.js +++ b/src/Routers/PublicAPIRouter.js @@ -156,8 +156,7 @@ export class PublicAPIRouter extends PromiseRouter { * this method returns the template for the page stored in memory * on first access it will load the template file from disk */ - loadInvalidVerificationLinkPageTemplate() { - const config = req.config; + loadInvalidVerificationLinkPageTemplate(config) { if (this.invalid_verification_link_page_template_file) { return this.invalid_verification_link_page_template_file; } else { @@ -189,7 +188,7 @@ export class PublicAPIRouter extends PromiseRouter { if (req.query.username && req.params.appId) { // load page template from file or from memory - var invalid_verification_link_page = this.loadInvalidVerificationLinkPageTemplate(); + var invalid_verification_link_page = this.loadInvalidVerificationLinkPageTemplate(config); if (invalid_verification_link_page) { // replace dynamic template attributes invalid_verification_link_page = invalid_verification_link_page.replace("USERNAME", `'${req.query.username}'`);