菜单上的权限
This commit is contained in:
parent
d9ee8e4085
commit
4274e8d81c
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
Loading…
Reference in New Issue