annotate app/main/api/_member.lua @ 1426:a964cf74e02f
Link to unit member list when showing a unit
 | author | bsw | 
 | date | Fri Oct 05 18:57:52 2018 +0200 (2018-10-05) | 
 | 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 |