bsw/jbe@1309: local members = param.get("members", "table") bsw/jbe@1309: bsw/jbe@1309: local include_profile = param.get("include_profile", atom.boolean) bsw/jbe@1309: bsw/jbe@1309: if include_profile and not app.scopes.read_profiles then bsw/jbe@1309: return util.api_error(403, "Forbidden", "insufficient_scope", "Scope read_profiles required") bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: local fields = {} bsw/jbe@1309: bsw/jbe@1309: if app.scopes.read_authors or app.scopes.read_identities then bsw/jbe@1309: fields = { "id", "created", "last_activity", "admin", "name", "location" } bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: if app.scopes.read_identities then bsw/jbe@1309: fields[#fields+1] = "identification" bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: local r = json.array() bsw/jbe@1309: bsw/jbe@1309: if app.scopes.read_identities then bsw/jbe@1309: bsw/jbe@1309: if include_profile then bsw/jbe@1309: members:load("profile") bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: for i, member in ipairs(members) do bsw/jbe@1309: local m = json.object() bsw/jbe@1309: for j, field in ipairs(fields) do bsw/jbe@1309: local value = member[field] bsw/jbe@1309: if value == nil then bsw/jbe@1309: value = json.null bsw/jbe@1309: else bsw/jbe@1309: value = tostring(value) bsw/jbe@1309: end bsw/jbe@1309: m[field] = value bsw/jbe@1309: end bsw/jbe@1309: if include_profile then bsw/jbe@1309: m.profile = execute.chunk{ module = "api", chunk = "_profile", params = { profile = member.profile } } bsw/jbe@1309: end bsw/jbe@1309: r[#r+1] = m bsw/jbe@1309: end bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: return r