8a1e74a18696c560c540dde15792e148af4aeebe
[ndcode_site.git] / api / account / change_details / get.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         // initialize env.session_key, set cookie in env.response
16         await get_session(env, transaction)
17         if (env.signed_in_as === null)
18           throw new Problem('Unauthorized', 'Please sign in first.', 401)
19
20         let account = await (
21           await (
22             await transaction.get({})
23           ).get('accounts', {})
24         ).get(env.signed_in_as)
25         let details = {
26           given_names: await account.get_json('given_names'),
27           family_name: await account.get_json('family_name'),
28           contact_me: await account.get_json('contact_me')
29         }
30
31         await transaction.commit()
32         return details
33       }
34       catch (error) {
35         transaction.rollback()
36         throw error
37       }
38     }
39   )
40 }