跳到主要内容

应用内权限管理

简介

应用内权限主要用在菜单或者一些功能操作的管理;目前可以设置view和manage两个权限

用法

  1. app.json中菜单的配置:菜单中配置security,当codeview表示当前菜单有查看权限,当codemanage表示当前菜单有管理权限;在实际使用中可根据需要选择配置
    注意

    菜单配置的权限security是2、3点的使用基础

  2. 菜单对应的HTML代码中使用SecurityFilter过滤器实现条件过滤,进行权限控制
  3. 菜单对应的JavaScript代码中使用SecurityService进行权限控制

JSON代码示例

{
"menus": [
{
"name": "皮料切割机",
"showOnTop": true,
"page": "index/index.html",
"depend": [
"index/index.css"
]
},
{
"name": "机台",
"page": "device/list/device_list.html",
"detailPage": "device/view/device_view.html",
"depend": [
"device/list/device_list.js",
"device/list/device_list.css",
"device/view/device_view.js",
"device/view/device_view.css"
],
"security": [
{
"code": "view",
"description": "查看"
},
{
"code": "manage",
"description": "管理"
}
]
}
]
}

HTML代码示例

<div ng-controller="CuttingDeviceController as ctrl">
<div class="widget">
<div class="widget-header">
<div class="widget-title">机台</div>
<div class="widget-buttons">
<!--机台对应当前菜单的name的值;manage是security中code的值,可选view或者manage。这行代码的意思是如果用户有机台菜单的管理权限,则有新增功能的权限-->
<button class="btn btn-sm" ng-if="'' | SecurityFilter: '机台':'manage'">新增</button>
</div>
</div>
<hr class="widget-separator"/>
<div class="widget-body">
<div class="board-box">
<janus-datatable options="ctrl.boardOptions">
</janus-datatable>
</div>
</div>
</div>
</div>

JavaScript代码示例

define([], function () {
var app = angular.module('app');

/* 先注入SecurityService服务*/
app.controller('CuttingDeviceController', ['$scope', 'janus', '$element','SecurityService',
function ($scope, janus, $element, SecurityService) {
var ctrl = this;
_.extend(ctrl, {
initialize: function () {
ctrl.initBoardOptions();
},
initBoardOptions: function () {
ctrl.boardOptions = {
columns: [{
'data': 'uuid',
"title": "UUID",
width: "120px;"
}, {
"data": "online",
"title": "在线",
render: function (data, type, row) {
return data == 'true' ? '是' : '否';
}
}, {
"data": "baseInfo.name",
"title": "名称",
}, {
"data": "baseInfo.remarks",
"title": "备注"
}, {
"data": "operation",
"title": "操作",
orderable: false,
render: function (data, type, row) {
/*hasRight判断是否有相应权限;机台表示当前对应菜单的name;view表示查看权限,也可以是manage管理权限,根据自己需求选择*/
if (SecurityService.hasRight('机台', 'view')) {
var html = `<button class="btn btn-primary btn-outline btn-xs" type="button" data-key="viewDetail"><i class="fa fa-list"></i>详细</button>`;
return html;
}
}
}],
buttonClick: function (button, rowData) {
if (button.data('key') === 'viewDetail') {
janus.goToMenuDetailByName('机台', rowData.uuid);
}
}
}
}
});
ctrl.initialize();
}]);
});