829cbe349e700aeb2829281b00100fd5f0b297b9
[ndcode_site.git] / api / account / sign_up / get_draft.json.jst
1 let XDate = require('xdate')
2
3 return async env => {
4   let post_request = await _require('/_lib/post_request.jst')
5   let get_session = await _require('/_lib/get_session.jst')
6   let Problem = await _require('/_lib/Problem.jst')
7
8   await post_request(
9     // env
10     env,
11     // handler
12     async () => {
13       let transaction = await env.site.database.Transaction()
14       try {
15         let root = await transaction.get({})
16         let session = await get_session(env, root)
17
18         let sign_up_draft = await session.get('sign_up_draft')
19         return (
20           sign_up_draft !== undefined &&
21             XDate.now() < await sign_up_draft.get_json('expires') ?
22             {
23               email: await sign_up_draft.get_json('email'),
24               given_names: await sign_up_draft.get_json('given_names'),
25               family_name: await sign_up_draft.get_json('family_name'),
26               contact_me: await sign_up_draft.get_json('contact_me')
27             } :
28             null
29         )
30       }
31       finally {
32         transaction.rollback()
33       }
34     }
35   )
36 }