onlyoffice权限配置不完全

我想达到这样的目的,资料库权限设置为【只读】后,点开onlyoffice文档不光是只读,还要能够评论。但实际上只读权限只能看,不能添加或回复批注。只有设置为【读写】权限后才能批注。

我查看了onlyoffice的文档,onlyoffice文档里是提供了批注权限接口的:

var docEditor = new DocsAPI.DocEditor("placeholder", {
    "document": {
        "permissions": {
            "chat": true,
            "comment": true,
            "commentGroups": {
                "edit": ["Group2", ""],
                "remove": [""],
                "view": ""
            },
            "copy": true,
            "deleteCommentAuthorOnly": false,
            "download": true,
            "edit": true,
            "editCommentAuthorOnly": false,
            "fillForms": true,
            "modifyContentControl": true,
            "modifyFilter": true,
            "print": true,
            "protect": true,
            "review": true,
            "reviewGroups": ["Group1", "Group2", ""],
            "userInfoGroups": ["Group1", ""]
        },
        ...
    },
    ...
});

我也看了seafile源码, 也是按照onlyoffice的api来做的,https://github.com/haiwen/seahub/blob/master/seahub/templates/view_file_onlyoffice.html

<script type="text/javascript">
    var config = {
        "type": window.screen.width < 992 ? 'mobile' : 'desktop',
        "document": {
            "fileType": "{{ file_type }}",
            "key": "{{ doc_key }}",
            "title": "{{ doc_title|escapejs }}",
            "url": "{{ doc_url }}",
            "permissions": {
                "download": {% if can_download %}true{% else %}false{% endif %},
                "edit": {% if can_edit %}true{% else %}false{% endif %},
                "print": {% if can_download %}true{% else %}false{% endif %},
                "review": true
            }
        },
.....

但是如果我按照onlyoffice的文档,在permission里添加comment权限

<script type="text/javascript">
    var config = {
        "type": window.screen.width < 992 ? 'mobile' : 'desktop',
        "document": {
            "fileType": "{{ file_type }}",
            "key": "{{ doc_key }}",
            "title": "{{ doc_title|escapejs }}",
            "url": "{{ doc_url }}",
            "permissions": {
                "download": {% if can_download %}true{% else %}false{% endif %},
                "edit": {% if can_edit %}true{% else %}false{% endif %},
                "print": {% if can_download %}true{% else %}false{% endif %},
                "review": true,
                "comment": true, # 添加了这里
            }
        },

就会出现下面的错误,提示“您正在尝试执行您没有权限的操作”

请问是不是在seafile其他地方做了什么限制?


我的也改动了一点,没有任何报错
,估计是你哪里配置有问题

进onlyoffice容器里,/var/log/onlyoffice/documentserver/docservice,这目录下有日志看下吧

那你的权限生效了吗?你可以试试只读,看看能否添加批注?

image


是这样嘛

嗯,您是只读权限吗?就是我这样的界面,你看我的菜单栏是不可见的


是的

嗯,可能是我onlyoffice配置出问题了,我来重装一下试试。我原来一直没定位到是seafile还是onlyoffice的问题,感谢感谢!看来是onlyoffice的问题

一样的问题,你解决了吗

还没尝试呢,打算晚上重新布署下onlyoffice看看,因为我之前用了第三方的docker镜像 :sweat_smile:

如果咱俩都有问题,为啥 @zgydkf 可以?

和oo没啥关系,他是seafile的问题吧,加了参数就会出现这个

你用的是原版oo镜像么?

确实是加了参数就会出现这个,即使我加的是"comment": false

但是改现有的参数:

"edit": {% if can_edit %}true{% else %}false{% endif %}

改成

"edit": {% if can_edit %}true{% else %}true{% endif %}

这样又不会报错。

我看了oo的官方论坛,官方人员解答说修改初始权限后要重启一下oo服务端,我重启了也是一样报错。

镜像时自己编译的

我只能说草了,把onlyoffice的jwt秘钥关了就不报错了,让我现在试试能不能达到【只读可评论】的效果

确实解决了问题,通过修改seafile的前端html就能实现我的目的,但是不加JWT secret确实是心里有疙瘩,毕竟是公司用途

这个各有取舍把

想要达到这个目的:只读权限的人也可以添加批注,但不可以修改内容。做了如下几部:

1、修改view_file_onlyoffice.html,https://github.com/haiwen/seahub/blob/master/seahub/templates/view_file_onlyoffice.html

根据onlyoffice文档,https://api.onlyoffice.com/editors/config/document/permissions,添加comment、editCommentAuthorOnly、deleteCommentAuthorOnly字段。并且按照https://api.onlyoffice.com/editors/config/editor,mode要改为edit,而seafile原版是view,view不能添加批注。

2、onlyoffice不能启用JWT秘钥。

3、此时,如果新增一个文档,如果【读写权限用户】还没打开,而【只读权限用户】先开了,会报错"can not get doc_info from database by doc_key"。

查看onlyoffice源码,https://api.onlyoffice.com/editors/troubleshooting#error0,可知{“error”: 1}导致了这个问题。

所以,修改seafile-seahub 源码https://github.com/haiwen/seahub/blob/master/seahub/onlyoffice/views.py,{“error”: 1}改为{“error”: 0}

恭喜解决了。