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

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

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

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

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

权限用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权限开发之二相关推荐

  1. 方案设计:IPC产品系统设计 - 基于芯片商提供的SDK API开发之二

    方案:安霸.海思(君正.Mstar.安凯) 1.每个模块都是开N(1,2,3...)个pthread线程,线程之间通过生产者,消费者模型(或者进程间通信机制)实现数据同步/异步.通过数据队列缓冲模块数 ...

  2. linux mp4转h264工具,Linux音视频开发之二:转换YUY2到I420便于压缩成h264

    在用libx264做h264压缩的时候,我们可以通过命令ffmpeg -h encoder=libx264来查看它所支持的输入格式 Encoder libx264 [libx264 H.264 / A ...

  3. unity开发之二:调用电脑外部键盘osk

    今天领导突然说项目需要调用外部键盘很急,然后我匆匆忙忙的写了这个功能,遇到很多蛋疼的地方,记录下来! 第一步: 管理员模式打开unity: 我们需要使用管理员模式打开unity,不然osk.exe是电 ...

  4. Step by Step WebMatrix网站开发之二:使用WebMatrix(1)

    第一次运行WebMatrix会看到如图1所示的窗口. 图1 第一次运行WebMatrix显示的窗口 我的网站 进入"我的网站"可看到自己设计过的网站. 从Web库创建网站 可以从& ...

  5. 指尖下的js ——多触式web前端开发之二:处理简单手势

    这篇文章将描述多触式网页开发中对手势(Gesture)事件的处理.      水果设备中的Gesture,广义的说包括手指点击(click),轻拂(flick),双击(double-click),两只 ...

  6. Step by Step WebMatrix网站开发之二:使用WebMatrix(2)

    上一篇,从Web库创建了一个电子商务的网站.现在回到WebMatrix,看看它有什么功能. 由图1可以看到,WebMatrix主要有3个区域,顶部Ribbon区域,左边是功能区域,右边是信息或编辑区域 ...

  7. 滤波器开发之二:基于算数平均的带阻平滑滤波器

    信号采集是非常常见的需求,我们也总是希望采集到的数据是纯净而真实的,但这只是我们的希望.环境中存在太多的干扰信号,为了让我们得到的数据尽可能地接近实际值,我们需要降低这些干扰信号的影响,于是就有了滤波 ...

  8. 基于Nokia S60的游戏开发之二

    把基于Series 60的智能电话作为一种游戏设备 本章将深入研究Series 60和Symbian OS,描述它们作为一个游戏平台的特性.此外,智能电话的需求和限制也将被讨论. 需求 与许多其它用于 ...

  9. Web开发之二:什么是前端、什么是后端

    从去年做空间开始,这一年来,一直在提前端和后端这样两个概念,同时,也在小组内推行着技术上的分工,并在开发模式上尝试着创新.在学习了Spring.IBatis之后,对于前端后分工的需求也越来越强烈,所以 ...

  10. OneNET麒麟座应用开发之二:串口读取PM25传感器数据

    作为环境数据监测站首先要获取大气中可吸入颗粒物的数据.为了检测PM25数据,我们采用北京海联信为的HLPM025K3型号传感器,该传感器使用激光法测量PM25和PM10的数据. 该型传感器的检测对象如 ...

最新文章

  1. 从王者荣耀AI看人工智能与游戏结合的未来意义
  2. [FFmpeg] ffmpeg 常用命令
  3. 云小课 | 使用ROMA API,API管理从此不用愁
  4. python每天学多久_怎么自学python,大概要多久?
  5. java gc 可达性_JAVA--GC 垃圾回收机制----可达性分析算法
  6. SOLIDWORKS Composer生成BOM表属性不显示的解决办法
  7. 网络流量分析利器-可视化网络-netflow【1】-基础原理
  8. 上海始终未出现真正“富人区”
  9. 100个c#初学者编程实例_C#编程:初学者入门
  10. 删除flash助手推荐广告
  11. 【操作系统】成组链接法详解
  12. python实现kd树以及最近邻查找算法
  13. android4.3 中兴s291天机 发送AT指令
  14. 无法查看网上邻居工作组计算机,网上邻居无法查看工作组计算机怎么办
  15. 2013年三月GBin1月刊
  16. 用Java实现周易算卦
  17. 解决从光标处插入图片光标消失的问题
  18. MATLAB将图片做成视频
  19. AMD突然发布7nm芯片背后的野心
  20. 腾讯推出全新 Linux QQ 并正式上线官网

热门文章

  1. python爬虫小说爬取
  2. 远程桌面计算机没有密码设置,如果对方电脑没有设置密码,如何使用远程桌面连接?...
  3. 刚装好的mysql设置密码_第一次装好mysql后要设置密码
  4. 京东商品详情数据接口(APP端,H5端),实时了解商品价格走势,接口代码教程
  5. marked 用户手册 在线查看
  6. java猜数游戏图形界面_java 猜数字游戏 swing实现带界面
  7. 量化择业 银行vs券商vs公募vs私募?(行内人深度分享)
  8. 安恒2020-四月春季战-reverse-sm
  9. arcsin在matlab中怎么输,matlab arcsin
  10. BUUCTF Crypto BabyRSA