菜单上的权限

This commit is contained in:
Captain.B 2020-03-06 15:26:03 +08:00
parent d9ee8e4085
commit 4274e8d81c
4 changed files with 50 additions and 10 deletions

View File

@ -1,4 +1,4 @@
import {TokenKey} from "./constants";
import {ROLE_ORG_ADMIN, ROLE_TEST_MANAGER, ROLE_TEST_USER, ROLE_TEST_VIEWER, TokenKey} from "./constants";
export function hasRole(role) {
let user = JSON.parse(localStorage.getItem(TokenKey));
@ -16,3 +16,15 @@ export function hasRoles(...roles) {
}
return false;
}
export function checkoutCurrentOrganization() {
let user = JSON.parse(localStorage.getItem(TokenKey));
// 查看当前用户是否是 lastOrganizationId 的组织管理员
return user.userRoles.filter(ur => hasRole(ROLE_ORG_ADMIN) && user.lastOrganizationId === ur.sourceId).length > 0;
}
export function checkoutCurrentWorkspace() {
let user = JSON.parse(localStorage.getItem(TokenKey));
// 查看当前用户是否是 lastWorkspaceId 的工作空间用户
return user.userRoles.filter(ur => hasRoles(ROLE_TEST_MANAGER, ROLE_TEST_USER, ROLE_TEST_VIEWER) && user.lastWorkspaceId === ur.sourceId).length > 0;
}

View File

@ -17,7 +17,7 @@
</el-col>
<el-col :span="4">
<el-row type="flex" justify="center" align="middle">
<router-link to="/createTest" v-permission="['test_user','test_manager']">
<router-link to="/createTest" v-permission="['test_user','test_manager']" v-if="isCurrentWorkspaceUser">
<el-button type="primary" size="small">{{$t('load_test.create')}}</el-button>
</router-link>
</el-row>
@ -36,12 +36,14 @@
import MsView from "./components/router/View";
import MsUser from "./components/HeaderUser";
import MsWebSocket from "./components/websocket/WebSocket";
import {checkoutCurrentWorkspace} from "../common/utils";
export default {
name: 'app',
data() {
return {
auth: false,
isCurrentWorkspaceUser: false,
}
},
beforeCreate() {
@ -58,7 +60,10 @@
});
},
components: {MsWebSocket, MsUser, MsMenus, MsView, MsTopMenus},
methods: {}
methods: {},
mounted() {
this.isCurrentWorkspaceUser = checkoutCurrentWorkspace();
}
}
</script>

View File

@ -4,7 +4,7 @@
<el-menu-item index="/setting/personsetting">
{{ $t("i18n.home") }}
</el-menu-item>
<el-submenu index="3" popper-class="submenu" v-permission="['test_manager']">
<el-submenu index="3" popper-class="submenu" v-permission="['test_manager']" v-if="isCurrentWorkspaceUser">
<template slot="title">{{$t('commons.project')}}</template>
<ms-recent-project/>
<el-divider/>
@ -16,7 +16,8 @@
<el-button type="text">{{$t('project.create')}}</el-button>
</el-menu-item>
</el-submenu>
<el-submenu index="4" popper-class="submenu" v-permission="['test_manager', 'test_user']">
<el-submenu index="4" popper-class="submenu" v-permission="['test_manager', 'test_user']"
v-if="isCurrentWorkspaceUser">
<template slot="title">{{$t('commons.test')}}</template>
<ms-recent-test-plan/>
<el-divider/>
@ -28,7 +29,8 @@
<el-button type="text">{{$t('load_test.create')}}</el-button>
</el-menu-item>
</el-submenu>
<el-submenu index="5" popper-class="submenu" v-permission="['test_manager', 'test_user', 'test_viewer']">
<el-submenu index="5" popper-class="submenu" v-permission="['test_manager', 'test_user', 'test_viewer']"
v-if="isCurrentWorkspaceUser">
<template slot="title">{{$t('commons.report')}}</template>
<ms-recent-report/>
<el-divider/>
@ -44,10 +46,19 @@
import MsRecentTestPlan from "./testPlan/RecentTestPlan";
import MsRecentProject from "./project/RecentProject";
import MsRecentReport from "./report/RecentReport";
import {checkoutCurrentWorkspace} from "../../common/utils";
export default {
name: "MsMenus",
components: {MsRecentReport, MsRecentTestPlan, MsRecentProject}
components: {MsRecentReport, MsRecentTestPlan, MsRecentProject},
data() {
return {
isCurrentWorkspaceUser: false,
}
},
mounted() {
this.isCurrentWorkspaceUser = checkoutCurrentWorkspace();
}
}
</script>

View File

@ -11,7 +11,7 @@
<el-menu-item index="/setting/testresourcepool">测试资源池</el-menu-item>
</el-submenu>
<el-submenu index="2" v-permission="['org_admin']">
<el-submenu index="2" v-permission="['org_admin']" v-if="isCurrentOrganizationAdmin">
<template slot="title">
<font-awesome-icon class="icon organization" :icon="['far', 'building']" size="lg"/>
<span>组织</span>
@ -20,7 +20,7 @@
<el-menu-item index="/setting/organizationworkspace" v-permission="['org_admin']">工作空间</el-menu-item>
</el-submenu>
<el-submenu index="3" v-permission="['test_manager','test_user','test_viewer']">
<el-submenu index="3" v-permission="['test_manager','test_user','test_viewer']" v-if="isCurrentWorkspaceUser">
<template slot="title">
<font-awesome-icon class="icon workspace" :icon="['far', 'list-alt']" size="lg"/>
<span>工作空间</span>
@ -40,8 +40,20 @@
</template>
<script>
import {checkoutCurrentOrganization, checkoutCurrentWorkspace} from "../../../common/utils";
export default {
name: "MsSettingMenu"
name: "MsSettingMenu",
data() {
return {
isCurrentOrganizationAdmin: false,
isCurrentWorkspaceUser: false,
}
},
mounted() {
this.isCurrentOrganizationAdmin = checkoutCurrentOrganization();
this.isCurrentWorkspaceUser = checkoutCurrentWorkspace();
},
}
</script>