ONLYOFFICE权限开发之三

标签: onlyoffice engineercms 权限 casbin
67人阅读 评论(0) 收藏 举报
分类:

登录用户,对于已经进行了权限设置的文档,将根据权限数据库,比对用户名,当与用户有关时,就显示相对应的权限,当都与登录用户无关时,则显示拒绝访问;

对于未登录用户,已经设置了权限的文档,都将显示拒绝访问;

对于登录和未登录用户,未进行权限设置的文档,则显示全部允许。

如果是用户自己上传的,则全部允许。

下图登陆用户和未登陆用户箭头指反了。




权限用casbin进行。

//提供给列表页的table中json数据
func (c *OnlyController) GetData() {
	//1.取得客户端用户名
	var uname, useridstring string
	v := c.GetSession("uname")
	if v != nil {
		uname = v.(string)
		user, err := models.GetUserByUsername(uname)
		if err != nil {
			beego.Error(err)
		}
		c.Data["Uid"] = user.Id
		useridstring = strconv.FormatInt(user.Id, 10)
	}
	var myRes [][]string
	if useridstring != "" {
		myRes = e.GetPermissionsForUser(useridstring)
	}
	myResall := e.GetPermissionsForUser("") //取出所有设置了权限的数据
	var err error
	docs, err := models.GetDocs()
	if err != nil {
		beego.Error(err)
	}
	link := make([]OnlyLink, 0)
	Docxslice := make([]DocxLink, 0)
	for _, w := range docs {
		Attachments, err := models.GetOnlyAttachments(w.Id)
		if err != nil {
			beego.Error(err)
		}
		linkarr := make([]OnlyLink, 1)
		linkarr[0].Id = w.Id
		linkarr[0].Code = w.Code
		linkarr[0].Title = w.Title
		linkarr[0].Label = w.Label
		linkarr[0].End = w.End
		linkarr[0].Principal = w.Principal
		linkarr[0].Uid = w.Uid
		linkarr[0].Created = w.Created
		linkarr[0].Updated = w.Updated
		for _, v := range Attachments {
			docxarr := make([]DocxLink, 1)
			docxarr[0].Permission = "1"
			//查询v.Id是否和myres的V1路径后面的id一致,如果一致,则取得V2(权限)
			//查询用户具有的权限
			if useridstring != "" { //如果是登录用户,则设置了权限的文档不能看
				for _, k := range myResall {
					if strconv.FormatInt(v.Id, 10) == path.Base(k[1]) {
						docxarr[0].Permission = "4"
					}
				}
				for _, k := range myRes {
					if strconv.FormatInt(v.Id, 10) == path.Base(k[1]) {
						docxarr[0].Permission = k[2]
					}
				}
			} else { //如果用户没登录,则设置了权限的文档不能看
				for i, k := range myResall { //所有设置了权限的不能看
					if strconv.FormatInt(v.Id, 10) == path.Base(k[1]) {
						docxarr[0].Permission = "4"
					}
				}
			}

			docxarr[0].Id = v.Id
			docxarr[0].Title = v.FileName
			if path.Ext(v.FileName) == ".docx" || path.Ext(v.FileName) == ".DOCX" || path.Ext(v.FileName) == ".doc" || path.Ext(v.FileName) == ".DOC" {
				docxarr[0].Suffix = "docx"

			} else if path.Ext(v.FileName) == ".XLSX" || path.Ext(v.FileName) == ".xlsx" || path.Ext(v.FileName) == ".XLS" || path.Ext(v.FileName) == ".xls" {
				docxarr[0].Suffix = "xlsx"
			} else if path.Ext(v.FileName) == ".pptx" || path.Ext(v.FileName) == ".PPTX" || path.Ext(v.FileName) == ".ppt" || path.Ext(v.FileName) == ".PPT" {
				docxarr[0].Suffix = "pptx"
			} else if path.Ext(v.FileName) == ".pdf" || path.Ext(v.FileName) == ".PDF" {
				docxarr[0].Suffix = "pdf"
			} else if path.Ext(v.FileName) == ".txt" || path.Ext(v.FileName) == ".TXT" {
				docxarr[0].Suffix = "txt"
			}
			Docxslice = append(Docxslice, docxarr...)
		}
		linkarr[0].Docxlink = Docxslice
		Docxslice = make([]DocxLink, 0) //再把slice置0
		link = append(link, linkarr...)
	}
	c.Data["json"] = link //products
	c.ServeJSON()
}


查看评论

ONLYOFFICE 开发相关 总结

http://blog.csdn.net/hotqin888/article/details/79337881上面链接里同样介绍了如何开发。这里也涉及了一些:https://www.cnblogs.c...
  • hotqin888
  • hotqin888
  • 2018-02-19 20:45:01
  • 318

onlyoffice document server实时文档协作的部署与开发细节

上一篇介绍了一般设计单位局域网内任意一台电脑上可以利用docker很方便的部署onlyoffice document server实现文档协作,方便领导快速看到大家工作的文档,而避免专人去汇总散落在各...
  • hotqin888
  • hotqin888
  • 2018-02-09 18:28:45
  • 316

onlyoffice online二次开发:(一)环境搭建

前言onlyoffice 提供各种强大组件实现对office文档编辑功能,关键是跨平台不局限Windows系统,其中Document Server 可作为在线编辑文档服务器,我们只需要通过调用其提供的...
  • rcjjian
  • rcjjian
  • 2018-04-07 12:10:15
  • 108

ONLYOFFICE权限开发之二

 除了后台进行权限设置,其实参考官方的样子,直接在文档管理界面进行权限设置也是蛮有效的。步骤:1、选中一个文档2、权限3、弹出权限设置模态框4、选中准备设置的权限,比如只读,全部权限,评论,禁止5、添...
  • hotqin888
  • hotqin888
  • 2018-04-04 18:57:14
  • 26

ONLYOFFICE在Windows上部署,实现实时文档协作

我们一般的设计单位,办公环境都是windows,局域网具有独立ip,所以,你可以在任何一个电脑上部署ONLYOFFICE,实现大家的实时文档协作办公,体验效果很棒。其实windows上部署很简洁,就3...
  • hotqin888
  • hotqin888
  • 2018-02-12 17:28:12
  • 443

如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档

1、说明——可以加我qq504284沟通。ONLYOFFICE Document Server提供文档协作的服务功能,支持Word,Excel和PowerPoint的协作。但是这里告诉我们,需要进行文...
  • hotqin888
  • hotqin888
  • 2018-02-19 20:21:39
  • 2653

ONLYOFFICE与MS Office Online对比

onlyoffice的优势和特点:https://www.onlyoffice.com/document-editor-comparison.aspxonlyoffice与ms office onli...
  • hotqin888
  • hotqin888
  • 2018-02-12 17:51:12
  • 422

ONLYOFFICE中文的实现方法

我在这里详细写了如何在windows环境的局域网部署onlyoffice以及开发。主要是将字体拷入到容器内,先要运行镜像,然后进入容器内,查到字体所在目录,然后删除,然后运行一些命令即可实现中文了。详...
  • hotqin888
  • hotqin888
  • 2018-02-12 20:59:10
  • 406

如何在 Windows 上安装ONLYOFFICE组织您的团队合作

请移步至此,更详细:http://blog.csdn.net/hotqin888/article/details/79337881ONLYOFFICE是一个免费的、开源的企业办公套件,用于在线组织团队...
  • hotqin888
  • hotqin888
  • 2018-02-13 10:15:52
  • 236

开源办公套件onlyoffice打开中文乱码的原因与设置默认字体为中文的解决方法

关于中文乱码问题,归根究底,是字体显示不像Windows一样中英双显,如图WINDOWS字体:, Ubuntu系统字体只显示英文。但是中文字体有包含字母。所以我们可以反其道而行。删除only...
  • yimingriyue
  • yimingriyue
  • 2018-01-27 21:47:08
  • 632
    个人资料
    持之以恒
    等级:
    访问量: 11万+
    积分: 2150
    排名: 2万+
    最新评论