bd55bb3d8bc10b44819e441a5a46fd96dd054cbc
[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 session_cookie = await _require('/_lib/session_cookie.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         // initialize env.session_key, set cookie in env.response
16         let session = await session_cookie(env, transaction)
17
18         let sign_up_draft = await session.get('sign_up_draft')
19         let details =
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         await transaction.commit()
31         return details
32       }
33       catch (error) {
34         transaction.rollback()
35         throw error
36       }
37     }
38   )
39 }