diff --git a/spec/EmailVerificationToken.spec.js b/spec/EmailVerificationToken.spec.js index 7f8c982333..688180590f 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(); }); }) diff --git a/src/Routers/PublicAPIRouter.js b/src/Routers/PublicAPIRouter.js index a126423cb0..624329003e 100644 --- a/src/Routers/PublicAPIRouter.js +++ b/src/Routers/PublicAPIRouter.js @@ -172,14 +172,55 @@ export class PublicAPIRouter extends PromiseRouter { }); } + /** + * 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(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 = 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}'`); + } + return this.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 (req.query.username && req.params.appId) { - const params = qs.stringify({username: req.query.username, appId: req.params.appId}); + if (!config.publicServerURL) { return Promise.resolve({ - status: 302, - location: `${config.invalidVerificationLinkURL}?${params}` + status: 404, + text: 'Not found.' }); + } + + if (req.query.username && req.params.appId) { + // load page template from file or from memory + 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}'`); + invalid_verification_link_page = invalid_verification_link_page.replace("APPID", `'${req.params.appId}'`); + // send page to the client + return Promise.resolve({ + text: invalid_verification_link_page + }); + } else { + Promise.reject("Could not load invalid_verification_link template."); + } } else { return this.invalidLink(req); } diff --git a/public_html/invalid_verification_link.html b/views/invalid_verification_link similarity index 76% rename from public_html/invalid_verification_link.html rename to views/invalid_verification_link index fe6914fc82..ffbb677271 100644 --- a/public_html/invalid_verification_link.html +++ b/views/invalid_verification_link @@ -37,21 +37,16 @@