diff --git a/system/rest.yaml b/system/rest.yaml index ebfc7b6fa..3181e8c9d 100644 --- a/system/rest.yaml +++ b/system/rest.yaml @@ -228,6 +228,7 @@ endpoints: parameters: get: - { type: "string", name: "query", title: "Search query" } + - { type: "uint64", name: "memberID", title: "Search roles for member"} - { type: "uint", name: "deleted", title: "Exclude (0, default), include (1) or return only (2) deleted roles" } - { type: "uint", name: "archived", title: "Exclude (0, default), include (1) or return only (2) archived roles" } - { type: "map[string]string", name: "labels", title: "Labels", parser: "label.ParseStrings" } diff --git a/system/rest/request/role.go b/system/rest/request/role.go index 449b123cb..fa2c69e5a 100644 --- a/system/rest/request/role.go +++ b/system/rest/request/role.go @@ -41,6 +41,11 @@ type ( // Search query Query string + // MemberID GET parameter + // + // Search roles for member + MemberID uint64 `json:",string"` + // Deleted GET parameter // // Exclude (0, default), include (1) or return only (2) deleted roles @@ -243,6 +248,7 @@ func NewRoleList() *RoleList { func (r RoleList) Auditable() map[string]interface{} { return map[string]interface{}{ "query": r.Query, + "memberID": r.MemberID, "deleted": r.Deleted, "archived": r.Archived, "labels": r.Labels, @@ -257,6 +263,11 @@ func (r RoleList) GetQuery() string { return r.Query } +// Auditable returns all auditable/loggable parameters +func (r RoleList) GetMemberID() uint64 { + return r.MemberID +} + // Auditable returns all auditable/loggable parameters func (r RoleList) GetDeleted() uint { return r.Deleted @@ -300,6 +311,12 @@ func (r *RoleList) Fill(req *http.Request) (err error) { return err } } + if val, ok := tmp["memberID"]; ok && len(val) > 0 { + r.MemberID, err = payload.ParseUint64(val[0]), nil + if err != nil { + return err + } + } if val, ok := tmp["deleted"]; ok && len(val) > 0 { r.Deleted, err = payload.ParseUint(val[0]), nil if err != nil { diff --git a/system/rest/role.go b/system/rest/role.go index e7733302a..f3e41ade6 100644 --- a/system/rest/role.go +++ b/system/rest/role.go @@ -66,8 +66,9 @@ func (ctrl Role) List(ctx context.Context, r *request.RoleList) (interface{}, er var ( err error f = types.RoleFilter{ - Query: r.Query, - Labels: r.Labels, + Query: r.Query, + Labels: r.Labels, + MemberID: r.MemberID, Archived: filter.State(r.Archived), Deleted: filter.State(r.Deleted),