annotate app/main/api/_member.lua @ 1332:2efee7c3bf44
Process unit registration field
 | author | 
 bsw | 
 | date | 
 Fri Aug 03 17:14:17 2018 +0200 (2018-08-03) | 
 | 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
 |