diff --git a/models/resources/resource.go b/models/resources/resource.go index b001059..8ca3d28 100755 --- a/models/resources/resource.go +++ b/models/resources/resource.go @@ -56,7 +56,7 @@ func (r *AbstractResource) StoreDraftDefault() { } func (r *AbstractResource) CanUpdate(set utils.DBObject) (bool, utils.DBObject) { - return r.IsDraft, set + return r.IsDraft != set.IsDrafted() && !set.IsDrafted(), set } func (r *AbstractResource) CanDelete() bool { diff --git a/models/utils/common.go b/models/utils/common.go index fdf06d9..759ad6a 100755 --- a/models/utils/common.go +++ b/models/utils/common.go @@ -1,6 +1,7 @@ package utils import ( + "encoding/json" "errors" "os" @@ -91,7 +92,10 @@ func ModelGenericUpdateOne(change map[string]interface{}, id string, a Accessor) if err != nil { return nil, c, err } - ok, r := r.CanUpdate(r) + obj := &AbstractObject{} + b, _ := json.Marshal(r) + json.Unmarshal(b, obj) + ok, r := r.CanUpdate(obj) if !ok { return nil, 403, errors.New("you are not allowed to update :" + a.GetType().String()) }