3
0

Add membership management basics

This commit is contained in:
Denis Arh
2020-11-29 10:14:44 +01:00
parent 3589f54349
commit d36ccf4522
2 changed files with 24 additions and 5 deletions

View File

@@ -14,8 +14,9 @@ import (
type (
usersHandler struct {
svc service.UserService
sec getSecurityContextFn
svc service.UserService
rleSvc service.RoleService
sec getSecurityContextFn
}
)
@@ -57,7 +58,8 @@ func (h usersHandler) create(w http.ResponseWriter, r *http.Request) {
func (h usersHandler) createFromJSON(ctx context.Context, j io.Reader) (u *types.User, err error) {
var (
svc = h.svc.With(ctx)
svc = h.svc.With(ctx)
//roles = h.rleSvc.With(ctx)
payload = &userResourceRequest{}
)
@@ -92,10 +94,21 @@ func (h usersHandler) createFromJSON(ctx context.Context, j io.Reader) (u *types
payload.applyTo(u)
if u.ID > 0 {
return svc.Update(u)
u, err = svc.Update(u)
} else {
return svc.Create(u)
u, err = svc.Create(u)
}
if err != nil {
return
}
if payload.Groups != nil {
// remove existing, add new
// @todo
}
return u, nil
}
func (h usersHandler) replace(w http.ResponseWriter, r *http.Request) {

View File

@@ -26,6 +26,10 @@ type (
Formatted string `json:"formatted"`
}
userGroupMembershipRequest struct {
Value string `json:"value"`
}
userResourceResponse struct {
Schemas []string `json:"schemas"`
Meta *metaResponse `json:"meta,omitempty"`
@@ -46,6 +50,8 @@ type (
Password *string `json:"password,omitempty"`
Name *userNameResponse `json:"name"`
Emails emailsResponse `json:"emails,omitempty"`
Groups []*userGroupMembershipRequest `json:"groups,omitempty"`
}
)