diff --git a/api/system/spec.json b/api/system/spec.json index b9aad052f..9cfdd1a37 100644 --- a/api/system/spec.json +++ b/api/system/spec.json @@ -199,7 +199,7 @@ "title": "Name of Role" }, { - "type": "[]uint64", + "type": "[]string", "name": "members", "required": false, "title": "Role member IDs" @@ -229,7 +229,7 @@ "title": "Name of Role" }, { - "type": "[]uint64", + "type": "[]string", "name": "members", "required": false, "title": "Role member IDs" diff --git a/api/system/spec/role.json b/api/system/spec/role.json index 4461f508f..bdf96e8a1 100644 --- a/api/system/spec/role.json +++ b/api/system/spec/role.json @@ -44,7 +44,7 @@ "name": "members", "required": false, "title": "Role member IDs", - "type": "[]uint64" + "type": "[]string" } ] } @@ -74,7 +74,7 @@ "name": "members", "required": false, "title": "Role member IDs", - "type": "[]uint64" + "type": "[]string" } ] } diff --git a/docs/system/README.md b/docs/system/README.md index 9279350df..25cba58e2 100644 --- a/docs/system/README.md +++ b/docs/system/README.md @@ -228,7 +228,7 @@ An organisation may have many roles. Roles may have many channels available. Acc | Parameter | Type | Method | Description | Default | Required? | | --------- | ---- | ------ | ----------- | ------- | --------- | | name | string | POST | Name of Role | N/A | YES | -| members | []uint64 | POST | Role member IDs | N/A | NO | +| members | []string | POST | Role member IDs | N/A | NO | ## Update role details @@ -244,7 +244,7 @@ An organisation may have many roles. Roles may have many channels available. Acc | --------- | ---- | ------ | ----------- | ------- | --------- | | roleID | uint64 | PATH | Role ID | N/A | YES | | name | string | POST | Name of Role | N/A | NO | -| members | []uint64 | POST | Role member IDs | N/A | NO | +| members | []string | POST | Role member IDs | N/A | NO | ## Read role details and memberships diff --git a/system/rest/request/role.go b/system/rest/request/role.go index 51725fef3..5dcc71cb8 100644 --- a/system/rest/request/role.go +++ b/system/rest/request/role.go @@ -78,7 +78,7 @@ var _ RequestFiller = NewRoleList() // Role create request parameters type RoleCreate struct { Name string - Members []uint64 `json:",string"` + Members []string } func NewRoleCreate() *RoleCreate { @@ -116,7 +116,6 @@ func (ro *RoleCreate) Fill(r *http.Request) (err error) { ro.Name = val } - ro.Members = parseUInt64A(r.Form["members"]) return err } @@ -127,7 +126,7 @@ var _ RequestFiller = NewRoleCreate() type RoleUpdate struct { RoleID uint64 `json:",string"` Name string - Members []uint64 `json:",string"` + Members []string } func NewRoleUpdate() *RoleUpdate { @@ -166,7 +165,6 @@ func (ro *RoleUpdate) Fill(r *http.Request) (err error) { ro.Name = val } - ro.Members = parseUInt64A(r.Form["members"]) return err } diff --git a/system/rest/role.go b/system/rest/role.go index 057088067..942b2e5fe 100644 --- a/system/rest/role.go +++ b/system/rest/role.go @@ -3,9 +3,9 @@ package rest import ( "context" - "github.com/davecgh/go-spew/spew" "github.com/pkg/errors" + "github.com/crusttech/crust/internal/payload" "github.com/crusttech/crust/system/rest/request" "github.com/crusttech/crust/system/service" "github.com/crusttech/crust/system/types" @@ -44,7 +44,8 @@ func (ctrl *Role) Create(ctx context.Context, r *request.RoleCreate) (interface{ if err != nil { return nil, err } - for _, userID := range r.Members { + + for _, userID := range payload.ParseUInt64s(r.Members) { err := ctrl.svc.role.With(ctx).MemberAdd(role.ID, userID) if err != nil { return nil, err @@ -76,7 +77,7 @@ func (ctrl *Role) Update(ctx context.Context, r *request.RoleUpdate) (interface{ } } - for _, userID := range r.Members { + for _, userID := range payload.ParseUInt64s(r.Members) { err := ctrl.svc.role.With(ctx).MemberAdd(role.ID, userID) if err != nil { return nil, err @@ -106,11 +107,10 @@ func (ctrl *Role) MemberList(ctx context.Context, r *request.RoleMemberList) (in if mm, err := ctrl.svc.role.With(ctx).MemberList(r.RoleID); err != nil { return nil, err } else { - rval := make([]uint64, len(mm)) + rval := make([]string, len(mm)) for i := range mm { - rval[i] = mm[i].UserID + rval[i] = payload.Uint64toa(mm[i].UserID) } - spew.Dump(rval) return rval, nil } }