From c813f7bd07d401282c1128ed40b8d60d8f563cbe Mon Sep 17 00:00:00 2001 From: tengge <930372551@qq.com> Date: Sun, 31 May 2020 19:09:53 +0800 Subject: [PATCH] fix bug --- server/server/assets/scene/handle_save.go | 21 +++++++++++++++++++++ web/src/editor/assets/ScenePanel.jsx | 4 ++-- web/src/editor/menu/SceneMenu.jsx | 19 ++++++++++--------- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/server/server/assets/scene/handle_save.go b/server/server/assets/scene/handle_save.go index 32a8fef6..fac3fe6a 100644 --- a/server/server/assets/scene/handle_save.go +++ b/server/server/assets/scene/handle_save.go @@ -72,6 +72,27 @@ func Save(w http.ResponseWriter, r *http.Request) { collectionName = "Scene" + helper.TimeToString(now, "yyyyMMddHHmmss") version = 0 } else { // edit scene + if server.Config.Authority.Enabled { + user, _ := server.GetCurrentUser(r) + // save other people's scene + if doc["UserID"] != nil && doc["UserID"].(string) != user.ID { + helper.WriteJSON(w, server.Result{ + Code: 300, + Msg: "Permission denied.", + }) + return + } + + // not admin save scene without UserID + if doc["UserID"] == nil && user.RoleName != "Administrator" { + helper.WriteJSON(w, server.Result{ + Code: 300, + Msg: "Permission denied.", + }) + return + } + } + collectionName = doc["CollectionName"].(string) if doc["Version"] != nil { version = int(doc["Version"].(int32)) diff --git a/web/src/editor/assets/ScenePanel.jsx b/web/src/editor/assets/ScenePanel.jsx index ef93f6c9..7270fce1 100644 --- a/web/src/editor/assets/ScenePanel.jsx +++ b/web/src/editor/assets/ScenePanel.jsx @@ -52,8 +52,8 @@ class ScenePanel extends React.Component { title: n.Name, icon: 'scenes', cornerText: `v${n.Version}`, - showEditButton: !enableAuthority || app.server.isAdmin || n.Username === app.server.username, - showDeleteButton: !enableAuthority || app.server.isAdmin || n.Username === app.server.username + //showEditButton: !enableAuthority || app.server.isAdmin || n.Username === app.server.username, + //showDeleteButton: !enableAuthority || app.server.isAdmin || n.Username === app.server.username }); }); diff --git a/web/src/editor/menu/SceneMenu.jsx b/web/src/editor/menu/SceneMenu.jsx index d4504fec..dc0a5b6f 100644 --- a/web/src/editor/menu/SceneMenu.jsx +++ b/web/src/editor/menu/SceneMenu.jsx @@ -50,10 +50,10 @@ class SceneMenu extends React.Component { : null} {!enableAuthority || authorities.includes('SAVE_SCENE') ? : null} + /> : null} {!enableAuthority || authorities.includes('SAVE_SCENE') ? : null} + /> : null} {!enableAuthority || authorities.includes('SAVE_SCENE') ? : null} {!enableAuthority || isLogin ? : null} {!enableAuthority || authorities.includes('PUBLISH_SCENE') ? : null} + /> : null} ; } @@ -219,17 +219,18 @@ class SceneMenu extends React.Component { Ajax.post(`${app.options.server}/api/Scene/Save`, params, result => { var obj = JSON.parse(result); + app.unmask(); + if (obj.Code === 200) { editor.sceneID = obj.ID; editor.sceneName = sceneName; document.title = sceneName; + + app.call(`sceneSaved`, this); + app.toast(_t(obj.Msg), 'success'); + } else { + app.toast(_t(obj.Msg), 'warn'); } - - app.call(`sceneSaved`, this); - - app.unmask(); - - app.toast(_t(obj.Msg), 'success'); }); }