ONLYOFFICE权限开发之二
登录用户,对于已经进行了权限设置的文档,将根据权限数据库,比对用户名,当与用户有关时,就显示相对应的权限,当都与登录用户无关时,则显示拒绝访问;
对于未登录用户,已经设置了权限的文档,都将显示拒绝访问;
对于登录和未登录用户,未进行权限设置的文档,则显示全部允许。
如果是用户自己上传的,则全部允许。
下图登陆用户和未登陆用户箭头指反了。
权限用casbin进行。
//提供给列表页的table中json数据
func (c *OnlyController) GetData() {//1.取得客户端用户名var uname, useridstring stringv := c.GetSession("uname")if v != nil {uname = v.(string)user, err := models.GetUserByUsername(uname)if err != nil {beego.Error(err)}c.Data["Uid"] = user.Iduseridstring = strconv.FormatInt(user.Id, 10)}var myRes [][]stringif useridstring != "" {myRes = e.GetPermissionsForUser(useridstring)}myResall := e.GetPermissionsForUser("") //取出所有设置了权限的数据var err errordocs, 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.Idlinkarr[0].Code = w.Codelinkarr[0].Title = w.Titlelinkarr[0].Label = w.Labellinkarr[0].End = w.Endlinkarr[0].Principal = w.Principallinkarr[0].Uid = w.Uidlinkarr[0].Created = w.Createdlinkarr[0].Updated = w.Updatedfor _, 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.Iddocxarr[0].Title = v.FileNameif 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 = DocxsliceDocxslice = make([]DocxLink, 0) //再把slice置0link = append(link, linkarr...)}c.Data["json"] = link //productsc.ServeJSON()
}
ONLYOFFICE权限开发之二相关推荐
- 方案设计:IPC产品系统设计 - 基于芯片商提供的SDK API开发之二
方案:安霸.海思(君正.Mstar.安凯) 1.每个模块都是开N(1,2,3...)个pthread线程,线程之间通过生产者,消费者模型(或者进程间通信机制)实现数据同步/异步.通过数据队列缓冲模块数 ...
- linux mp4转h264工具,Linux音视频开发之二:转换YUY2到I420便于压缩成h264
在用libx264做h264压缩的时候,我们可以通过命令ffmpeg -h encoder=libx264来查看它所支持的输入格式 Encoder libx264 [libx264 H.264 / A ...
- unity开发之二:调用电脑外部键盘osk
今天领导突然说项目需要调用外部键盘很急,然后我匆匆忙忙的写了这个功能,遇到很多蛋疼的地方,记录下来! 第一步: 管理员模式打开unity: 我们需要使用管理员模式打开unity,不然osk.exe是电 ...
- Step by Step WebMatrix网站开发之二:使用WebMatrix(1)
第一次运行WebMatrix会看到如图1所示的窗口. 图1 第一次运行WebMatrix显示的窗口 我的网站 进入"我的网站"可看到自己设计过的网站. 从Web库创建网站 可以从& ...
- 指尖下的js ——多触式web前端开发之二:处理简单手势
这篇文章将描述多触式网页开发中对手势(Gesture)事件的处理. 水果设备中的Gesture,广义的说包括手指点击(click),轻拂(flick),双击(double-click),两只 ...
- Step by Step WebMatrix网站开发之二:使用WebMatrix(2)
上一篇,从Web库创建了一个电子商务的网站.现在回到WebMatrix,看看它有什么功能. 由图1可以看到,WebMatrix主要有3个区域,顶部Ribbon区域,左边是功能区域,右边是信息或编辑区域 ...
- 滤波器开发之二:基于算数平均的带阻平滑滤波器
信号采集是非常常见的需求,我们也总是希望采集到的数据是纯净而真实的,但这只是我们的希望.环境中存在太多的干扰信号,为了让我们得到的数据尽可能地接近实际值,我们需要降低这些干扰信号的影响,于是就有了滤波 ...
- 基于Nokia S60的游戏开发之二
把基于Series 60的智能电话作为一种游戏设备 本章将深入研究Series 60和Symbian OS,描述它们作为一个游戏平台的特性.此外,智能电话的需求和限制也将被讨论. 需求 与许多其它用于 ...
- Web开发之二:什么是前端、什么是后端
从去年做空间开始,这一年来,一直在提前端和后端这样两个概念,同时,也在小组内推行着技术上的分工,并在开发模式上尝试着创新.在学习了Spring.IBatis之后,对于前端后分工的需求也越来越强烈,所以 ...
- OneNET麒麟座应用开发之二:串口读取PM25传感器数据
作为环境数据监测站首先要获取大气中可吸入颗粒物的数据.为了检测PM25数据,我们采用北京海联信为的HLPM025K3型号传感器,该传感器使用激光法测量PM25和PM10的数据. 该型传感器的检测对象如 ...
最新文章
- 从王者荣耀AI看人工智能与游戏结合的未来意义
- [FFmpeg] ffmpeg 常用命令
- 云小课 | 使用ROMA API,API管理从此不用愁
- python每天学多久_怎么自学python,大概要多久?
- java gc 可达性_JAVA--GC 垃圾回收机制----可达性分析算法
- SOLIDWORKS Composer生成BOM表属性不显示的解决办法
- 网络流量分析利器-可视化网络-netflow【1】-基础原理
- 上海始终未出现真正“富人区”
- 100个c#初学者编程实例_C#编程:初学者入门
- 删除flash助手推荐广告
- 【操作系统】成组链接法详解
- python实现kd树以及最近邻查找算法
- android4.3 中兴s291天机 发送AT指令
- 无法查看网上邻居工作组计算机,网上邻居无法查看工作组计算机怎么办
- 2013年三月GBin1月刊
- 用Java实现周易算卦
- 解决从光标处插入图片光标消失的问题
- MATLAB将图片做成视频
- AMD突然发布7nm芯片背后的野心
- 腾讯推出全新 Linux QQ 并正式上线官网
热门文章
- python爬虫小说爬取
- 远程桌面计算机没有密码设置,如果对方电脑没有设置密码,如何使用远程桌面连接?...
- 刚装好的mysql设置密码_第一次装好mysql后要设置密码
- 京东商品详情数据接口(APP端,H5端),实时了解商品价格走势,接口代码教程
- marked 用户手册 在线查看
- java猜数游戏图形界面_java 猜数字游戏 swing实现带界面
- 量化择业 银行vs券商vs公募vs私募?(行内人深度分享)
- 安恒2020-四月春季战-reverse-sm
- arcsin在matlab中怎么输,matlab arcsin
- BUUCTF Crypto BabyRSA