Use globals object in database rather than /_config/globals.json everywhere
authorNick Downing <nick@ndcode.org>
Sun, 23 Jan 2022 02:03:41 +0000 (13:03 +1100)
committerNick Downing <nick@ndcode.org>
Sun, 23 Jan 2022 02:52:42 +0000 (13:52 +1100)
_lib/navbar.jst
api/account/password_reset.json.jst
api/account/sign_in.json.jst
api/account/sign_out.json.jst
api/account/sign_up/send_email_verification_link.json.jst
api/contact/send_enquiry.json.jst
api/feedback.json.jst

index d3bad0c..a9e511a 100644 (file)
@@ -3,7 +3,6 @@ let XDate = require('xdate')
 
 return async (env, head, body, scripts) => {
   //let cart = await _require('/online_store/cart.jst')
-  let globals = await env.site.get_json('/_config/globals.json')
   //let icon_cart_small = await env.site.get_min_svg('/_svg/icon_cart_small.svg')
   let icon_search_mono = await env.site.get_min_svg('/_svg/icon_search_mono.svg')
   let logo_large = await env.site.get_min_svg('/_svg/logo_large.svg')
@@ -23,13 +22,18 @@ return async (env, head, body, scripts) => {
       let dir = index === -1 ? '' : env.parsed_url.pathname.slice(1, index)
 
       title {
-        _out.push(
-          globals.site_title + ': ' + (
+        let transaction = await env.site.database.Transaction()
+        try {
+          let globals = await (await transaction.get({})).get('globals')
+          ;`${await globals.get_json('site_title')}: ${
             dir.length === 0 ?
-            'Home' :
-            menu.entries[menu.index[dir]].name
-          )
-        )
+              'Home' :
+              menu.entries[menu.index[dir]].name
+            }`
+        }
+        finally {
+          transaction.rollback()
+        }
       }
 
       await head(_out)
@@ -189,7 +193,16 @@ return async (env, head, body, scripts) => {
 
           p {'Example code fragments embedded within the text are placed in the public domain unless otherwise noted.'}
 
-          p {`Copyright © ${new XDate().getUTCFullYear()} ${globals.copyright}.`}
+          p {
+            let transaction = await env.site.database.Transaction()
+            try {
+              let globals = await (await transaction.get({})).get('globals')
+              ;`Copyright © ${new XDate().getUTCFullYear()} ${await globals.get('copyright')}.`
+            }
+            finally {
+              transaction.rollback()
+            }
+          }
         }
       }
 
index 908bf75..ff6aed9 100644 (file)
@@ -2,7 +2,6 @@ let crypto = require('crypto')
 let XDate = require('xdate')
 
 return async env => {
-  let globals = await env.site.get_json('/_config/globals.json')
   let nodemailer_noreply = await env.site.get_nodemailer(
     '/_config/nodemailer_noreply.json'
   )
@@ -50,6 +49,11 @@ return async env => {
           {password, link_code, expires: expires.getTime()}
         )
 
+        let globals = await (await transaction.get({})).get('globals')
+        let site_url = await globals.get_json('site_url')
+        let noreply_from = await globals.get_json('noreply_from')
+        let noreply_signature = await globals.get_json('noreply_signature')
+
         let given_names = await account.get_json('given_names', '')
         let family_name = await account.get_json('family_name', '')
         let name =
@@ -57,7 +61,7 @@ return async env => {
 
         await nodemailer_noreply.sendMail(
           {
-            from: globals.noreply_from,
+            from: noreply_from,
             to: `${name} <${email}>`,
             subject: 'Password reset',
             text: `Dear ${given_names},
@@ -65,12 +69,12 @@ return async env => {
 We have received a request to reset the account password for your email address.
 
 If this request is valid, please verify the new password by visiting the below link:
-${globals.site_url}/my_account/verify_password/index.html?email=${encodeURIComponent(email)}&link_code=${encodeURIComponent(link_code)}
+${site_url}/my_account/verify_password/index.html?email=${encodeURIComponent(email)}&link_code=${encodeURIComponent(link_code)}
 
 The link is valid for 24 hours.
 
 Thanks,
-${globals.noreply_signature}
+${noreply_signature}
 `
           }
         )
index ecd0f4e..ab7f4b8 100644 (file)
@@ -1,8 +1,4 @@
 return async env => {
-  let globals = await env.site.get_json('/_config/globals.json')
-  let nodemailer_noreply = await env.site.get_nodemailer(
-    '/_config/nodemailer_noreply.json'
-  )
   let post_request = await _require('/_lib/post_request.jst')
   let session_cookie = await _require('/_lib/session_cookie.jst')
   let Problem = await _require('/_lib/Problem.jst')
index f5fda46..120e568 100644 (file)
@@ -1,8 +1,4 @@
 return async env => {
-  let globals = await env.site.get_json('/_config/globals.json')
-  let nodemailer_noreply = await env.site.get_nodemailer(
-    '/_config/nodemailer_noreply.json'
-  )
   let post_request = await _require('/_lib/post_request.jst')
   let session_cookie = await _require('/_lib/session_cookie.jst')
   let Problem = await _require('/_lib/Problem.jst')
index f4cb176..c682c2c 100644 (file)
@@ -2,7 +2,6 @@ let crypto = require('crypto')
 let XDate = require('xdate')
 
 return async env => {
-  let globals = await env.site.get_json('/_config/globals.json')
   let nodemailer_noreply = await env.site.get_nodemailer(
     '/_config/nodemailer_noreply.json'
   )
@@ -56,6 +55,11 @@ return async env => {
           {link_code, expires: expires.getTime()}
         )
 
+        let globals = await (await transaction.get({})).get('globals')
+        let site_url = await globals.get_json('site_url')
+        let noreply_from = await globals.get_json('noreply_from')
+        let noreply_signature = await globals.get_json('noreply_signature')
+
         let given_names = await account.get_json('given_names', '')
         let family_name = await account.get_json('family_name', '')
         let name =
@@ -63,7 +67,7 @@ return async env => {
 
         await nodemailer_noreply.sendMail(
           {
-            from: globals.noreply_from,
+            from: noreply_from,
             to: `${name} <${email}>`,
             subject: 'Email address verification',
             text: `Dear ${given_names},
@@ -71,12 +75,12 @@ return async env => {
 We have received a request to sign up using your email address.
 
 If this request is valid, please verify your email address by visiting the below link:
-${globals.site_url}/my_account/verify_email/index.html?email=${encodeURIComponent(email)}&link_code=${encodeURIComponent(link_code)}
+${site_url}/my_account/verify_email/index.html?email=${encodeURIComponent(email)}&link_code=${encodeURIComponent(link_code)}
 
 The link is valid for 24 hours.
 
 Thanks,
-${globals.noreply_signature}
+${noreply_signature}
 `
           }
         )
index d6b9d80..04ac3b0 100644 (file)
@@ -2,7 +2,6 @@ let crypto = require('crypto')
 let XDate = require('xdate')
 
 return async env => {
-  let globals = await env.site.get_json('/_config/globals.json')
   let nodemailer_contact = await env.site.get_nodemailer(
     '/_config/nodemailer_contact.json'
   )
@@ -35,9 +34,15 @@ return async env => {
         )
 
       let transaction = await env.site.database.Transaction()
+      let contact_from, contact_to
       try {
         // initialize env.session_key, set cookie in env.response
         session_cookie(env, transaction)
+
+        let globals = await (await transaction.get({})).get('globals')
+        contact_from = await globals.get_json('contact_from')
+        contact_to = await globals.get_json('contact_to')
+
         await transaction.commit()
       }
       catch (error) {
@@ -55,10 +60,10 @@ return async env => {
           'Enquiry'
       await nodemailer_contact.sendMail(
         {
-          from: globals.contact_from,
-          to: globals.contact_to,
+          from: contact_from,
+          to: contact_to,
           replyTo: `${name} <${details.email}>`,
-          subject: subject,
+          subject,
           text: details.message
         }
       )
index 400c284..8d6f201 100644 (file)
@@ -1,7 +1,6 @@
 let XDate = require('xdate')
 
 return async env => {
-  let globals = await env.site.get_json('/_config/globals.json')
   let nodemailer_feedback = await env.site.get_nodemailer(
     '/_config/nodemailer_feedback.json'
   )
@@ -24,9 +23,15 @@ return async env => {
         )
 
       let transaction = await env.site.database.Transaction()
+      let feedback_from, feedback_to
       try {
         // initialize env.session_key, set cookie in env.response
         await session_cookie(env, transaction)
+
+        let globals = await (await transaction.get({})).get('globals')
+        feedback_from = await globals.get_json('feedback_from')
+        feedback_to = await globals.get_json('feedback_to')
+
         await transaction.commit()
       }
       catch (error) {
@@ -36,8 +41,8 @@ return async env => {
 
       await nodemailer_feedback.sendMail(
         {
-          from: globals.feedback_from,
-          to: globals.feedback_to,
+          from: feedback_from,
+          to: feedback_to,
           subject: 'Page: ' + page,
           text: message
         }