annotate app/main/api/_member.lua @ 1500:71f54c43d7cb
Added API support interface
author |
bsw |
date |
Tue Mar 24 16:59:32 2020 +0100 (2020-03-24) |
parents |
32cc544d5a5b |
children |
2a0d86117d54 |
rev |
line source |
bsw/jbe@1309
|
1 local members = param.get("members", "table")
|
bsw/jbe@1309
|
2
|
bsw/jbe@1309
|
3 local include_profile = param.get("include_profile", atom.boolean)
|
bsw/jbe@1309
|
4
|
bsw/jbe@1309
|
5 if include_profile and not app.scopes.read_profiles then
|
bsw/jbe@1309
|
6 return util.api_error(403, "Forbidden", "insufficient_scope", "Scope read_profiles required")
|
bsw/jbe@1309
|
7 end
|
bsw/jbe@1309
|
8
|
bsw/jbe@1309
|
9 local fields = {}
|
bsw/jbe@1309
|
10
|
bsw/jbe@1309
|
11 if app.scopes.read_authors or app.scopes.read_identities then
|
bsw/jbe@1309
|
12 fields = { "id", "created", "last_activity", "admin", "name", "location" }
|
bsw/jbe@1309
|
13 end
|
bsw/jbe@1309
|
14
|
bsw/jbe@1309
|
15 if app.scopes.read_identities then
|
bsw/jbe@1309
|
16 fields[#fields+1] = "identification"
|
bsw/jbe@1309
|
17 end
|
bsw/jbe@1309
|
18
|
bsw/jbe@1309
|
19 local r = json.array()
|
bsw/jbe@1309
|
20
|
bsw/jbe@1309
|
21 if app.scopes.read_identities then
|
bsw/jbe@1309
|
22
|
bsw/jbe@1309
|
23 if include_profile then
|
bsw/jbe@1309
|
24 members:load("profile")
|
bsw/jbe@1309
|
25 end
|
bsw/jbe@1309
|
26
|
bsw/jbe@1309
|
27 for i, member in ipairs(members) do
|
bsw/jbe@1309
|
28 local m = json.object()
|
bsw/jbe@1309
|
29 for j, field in ipairs(fields) do
|
bsw/jbe@1309
|
30 local value = member[field]
|
bsw/jbe@1309
|
31 if value == nil then
|
bsw/jbe@1309
|
32 value = json.null
|
bsw/jbe@1309
|
33 else
|
bsw/jbe@1309
|
34 value = tostring(value)
|
bsw/jbe@1309
|
35 end
|
bsw/jbe@1309
|
36 m[field] = value
|
bsw/jbe@1309
|
37 end
|
bsw/jbe@1309
|
38 if include_profile then
|
bsw/jbe@1309
|
39 m.profile = execute.chunk{ module = "api", chunk = "_profile", params = { profile = member.profile } }
|
bsw/jbe@1309
|
40 end
|
bsw/jbe@1309
|
41 r[#r+1] = m
|
bsw/jbe@1309
|
42 end
|
bsw/jbe@1309
|
43 end
|
bsw/jbe@1309
|
44
|
bsw/jbe@1309
|
45 return r
|