背景:
公司為了方便的管理過程文檔,搭建了一個Confluence服務器,版本6.9。在使用過程中,需要按照用戶對空間中上傳的附件進行下載權限控制。
解決過程及處理方案:
一、Confluence中導出功能支持導出的內容:
二、Confluence中如何控制導出功能:
社區中給出的這個方案,
第一種是全局的,由於需求僅僅是限制某個空間、某些用戶的下載,所以第一種不合適
第二種方案嘗試之后無法控制,原因是:
https://confluence.atlassian.com/conf69/space-permissions-overview-950284360.html
空間權限控制這里如果有查看權限,默認就會有導出功能,所以從下圖的控制無法實現。
三、Confluence提供的權限控制不能直接滿足需求,需要擴展實現一下。發現Confluence中有“自定義HTML”的功能,即在界面中增加html代碼,准備在這里做一些手腳
具體操作如下:
Body尾部添加的代碼如下:其中****處填寫空間的標識
<script type="text/javascript"> $(document).ready(function(){ $('body').bind("DOMNodeInserted",function(e){ if(AJS.params.spaceKey=="****") { if(AJS.params.canRemovePage==false) { $('.cp-control-panel-download').hide();
//禁用頁面打印
$('head').append('<style> @media print{html, body{display:none} } </style> ');
//禁用右鍵菜單
$('body').attr('oncontextmenu','self.event.returnValue=false');
//禁用選中文字
$('body').attr('onselectstart','return false');
} } }) AJS.toInit(function(){ if(AJS.params.spaceKey=="****") { if(AJS.params.canRemovePage==false) { AJS.$('#action-export-word-link').hide(); AJS.$('#action-export-pdf-link').hide();
//禁用頁面打印
$('head').append('<style> @media print{html, body{display:none} } </style> ');
//禁用右鍵菜單
$('body').attr('oncontextmenu','self.event.returnValue=false');
//禁用選中文字
$('body').attr('onselectstart','return false');
} } });}) </script>
上面的代碼功能主要是
1.做一個界面元素綁定的監聽,當下載按鈕元素加載后,符合代碼中要求就隱藏掉
2.把confluence界面上的“導出為**”控件隱藏
這里把html直接寫到Body尾部,而不用js腳本引用的方式是因為,當使用js腳本時,測試過程中發現js文件下載用時20s,具體原因不是太清楚,所以暫時把html直接寫到Body尾部這里
四、完成自定義HTML的配置之后,僅需要簡單的做一下用戶的權限配置就行
當用戶分配了頁面的添加、刪除權限之后,就同步有下載、導出的權限
參考資料