New approach to sign up form
[ndcode_site.git] / page.jst
index b631d3f..2d1e3dc 100644 (file)
--- a/page.jst
+++ b/page.jst
@@ -5,32 +5,17 @@ let crypto = require('crypto')
 return async (env, head, body, scripts) => {
   let favicons = await env.site.get_min_html('/_favicon/favicons.html')
   let globals = await env.site.get_json('/_config/globals.json')
+  let session_cookie = await _require('/session_cookie.jst')
 
+  // initialize env.session_key, set cookie in env.response
   let transaction = env.site.database.Transaction()
-  let root = await transaction.get({})
-  let sessions = await root.get('sessions', {})
-  let pageviews = await root.get('pageviews', {})
+  let session = await session_cookie(env, transaction)
 
-  let cookies = cookie.parse(env.request.headers.cookie || '')
-  let session_key =
-    Object.prototype.hasOwnProperty.call(cookies, 'session_key') ?
-      cookies.session_key :
-      crypto.randomBytes(16).toString('hex')
-  let session = await sessions.get(session_key, {})
-    
-  let expires = new XDate()
-  expires.addMonths(1)
-  session.set('expires', expires.toUTCString())
-  env.response.setHeader(
-    'Set-Cookie',
-    'session_key=' +
-    session_key +
-    '; expires=' +
-    session.expires +
-    '; path=/;'
-  )
-
-  let pageview = await pageviews.get(env.parsed_url.pathname, {})
+  let pageview = await (
+    await (
+      await transaction.get({})
+    ).get('pageviews', {})
+  ).get(env.parsed_url.pathname, {})
   pageview.set('visits', (await pageview.get('visits') || 0) + 1)
 
   let session_pageviews = await session.get('pageviews', {})