* [bug#64599] Add doc user groups for edit doc.

This commit is contained in:
xieqiyu
2025-08-08 01:12:33 +00:00
parent 95feaeb607
commit bddac3822a
3 changed files with 18 additions and 3 deletions
+8 -2
View File
@@ -696,8 +696,14 @@ function handleSaveDoc(doc)
}).complete(() => {
docApp.isSavingDoc = false;
$(docApp.element).find('[zui-command^="saveDoc"],[zui-command^="saveNewDoc"]').removeAttr('disabled');
const {id, acl, users, addedBy} = doc;
if(acl == 'private' && !users.includes(docAppData.currentUser) && addedBy !== docAppData.currentUser)
const {id, acl, users, groups, addedBy} = doc;
let isInEditGroups = false;
for(let groupID of Object.values(userGroups))
{
if(groups.includes(groupID)) isInEditGroups = true;
}
if(acl == 'private' && !users.includes(docAppData.currentUser) && addedBy !== docAppData.currentUser && !isInEditGroups)
{
if(docApp.hasEditingDoc)
{
+1
View File
@@ -171,6 +171,7 @@ class docApp extends wg
jsVar('needReadable', $lang->doc->needReadable);
jsVar('vision', $config->vision);
jsVar('isInModal', isInModal());
jsVar('userGroups', $app->user->groups);
/**
* 定义文档应用接口链接。
+9 -1
View File
@@ -965,8 +965,16 @@ class doc extends control
$currentAccount = $this->app->user->account;
$isAuthorOrAdmin = $doc->acl == 'private' && ($doc->addedBy == $currentAccount || $this->app->user->admin);
$isInEditUsers = strpos(",$doc->users,", ",$currentAccount,") !== false;
$isInEditGroups = false;
if(!empty($doc->groups))
{
foreach($this->app->user->groups as $groupID)
{
if(strpos(",$doc->groups,", ",$groupID,") !== false) $isInEditGroups = true;
}
}
if(!$isOpen && !$isAuthorOrAdmin && !$isInEditUsers) return $this->send(array('result' => 'fail', 'message' => $this->lang->doc->needEditable));
if(!$isOpen && !$isAuthorOrAdmin && !$isInEditUsers && !$isInEditGroups) return $this->send(array('result' => 'fail', 'message' => $this->lang->doc->needEditable));
if($doc->type == 'chapter') $this->lang->doc->title = $this->lang->doc->chapterName;