// handler
async details => {
// coerce and/or validate
- details = {
- email: details.email.slice(0, 256).toLowerCase(),
- given_names: details.given_names.slice(0, 256),
- family_name: details.family_name.slice(0, 256),
- contact_me: details.contact_me ? true : false
- }
+ if (details !== null)
+ details = {
+ email: details.email.slice(0, 256).toLowerCase(),
+ given_names: details.given_names.slice(0, 256),
+ family_name: details.family_name.slice(0, 256),
+ contact_me: details.contact_me ? true : false
+ }
let transaction = await env.site.database.Transaction()
try {
// initialize env.session_key, set cookie in env.response
let session = await session_cookie(env, transaction)
- session.set('sign_up_draft', transaction.json_to_logjson(details))
+ if (details) {
+ let expires = new XDate()
+ expires.addDays(1)
+ session.set(
+ 'sign_up_draft',
+ transaction.json_to_logjson(
+ {
+ email: details.email,
+ given_names: details.given_names,
+ family_name: details.family_name,
+ contact_me: details.contact_me,
+ expires: expires.getTime()
+ }
+ )
+ )
+ }
+ else
+ session.delete('sign_up_draft')
+
await transaction.commit()
}
catch (error) {