菜单上的权限
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) {
|
export function hasRole(role) {
|
||||||
let user = JSON.parse(localStorage.getItem(TokenKey));
|
let user = JSON.parse(localStorage.getItem(TokenKey));
|
||||||
|
@ -16,3 +16,15 @@ export function hasRoles(...roles) {
|
||||||
}
|
}
|
||||||
return false;
|
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>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-row type="flex" justify="center" align="middle">
|
<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>
|
<el-button type="primary" size="small">{{$t('load_test.create')}}</el-button>
|
||||||
</router-link>
|
</router-link>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -36,12 +36,14 @@
|
||||||
import MsView from "./components/router/View";
|
import MsView from "./components/router/View";
|
||||||
import MsUser from "./components/HeaderUser";
|
import MsUser from "./components/HeaderUser";
|
||||||
import MsWebSocket from "./components/websocket/WebSocket";
|
import MsWebSocket from "./components/websocket/WebSocket";
|
||||||
|
import {checkoutCurrentWorkspace} from "../common/utils";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'app',
|
name: 'app',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
auth: false,
|
auth: false,
|
||||||
|
isCurrentWorkspaceUser: false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeCreate() {
|
beforeCreate() {
|
||||||
|
@ -58,7 +60,10 @@
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
components: {MsWebSocket, MsUser, MsMenus, MsView, MsTopMenus},
|
components: {MsWebSocket, MsUser, MsMenus, MsView, MsTopMenus},
|
||||||
methods: {}
|
methods: {},
|
||||||
|
mounted() {
|
||||||
|
this.isCurrentWorkspaceUser = checkoutCurrentWorkspace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<el-menu-item index="/setting/personsetting">
|
<el-menu-item index="/setting/personsetting">
|
||||||
{{ $t("i18n.home") }}
|
{{ $t("i18n.home") }}
|
||||||
</el-menu-item>
|
</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>
|
<template slot="title">{{$t('commons.project')}}</template>
|
||||||
<ms-recent-project/>
|
<ms-recent-project/>
|
||||||
<el-divider/>
|
<el-divider/>
|
||||||
|
@ -16,7 +16,8 @@
|
||||||
<el-button type="text">{{$t('project.create')}}</el-button>
|
<el-button type="text">{{$t('project.create')}}</el-button>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</el-submenu>
|
</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>
|
<template slot="title">{{$t('commons.test')}}</template>
|
||||||
<ms-recent-test-plan/>
|
<ms-recent-test-plan/>
|
||||||
<el-divider/>
|
<el-divider/>
|
||||||
|
@ -28,7 +29,8 @@
|
||||||
<el-button type="text">{{$t('load_test.create')}}</el-button>
|
<el-button type="text">{{$t('load_test.create')}}</el-button>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</el-submenu>
|
</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>
|
<template slot="title">{{$t('commons.report')}}</template>
|
||||||
<ms-recent-report/>
|
<ms-recent-report/>
|
||||||
<el-divider/>
|
<el-divider/>
|
||||||
|
@ -44,10 +46,19 @@
|
||||||
import MsRecentTestPlan from "./testPlan/RecentTestPlan";
|
import MsRecentTestPlan from "./testPlan/RecentTestPlan";
|
||||||
import MsRecentProject from "./project/RecentProject";
|
import MsRecentProject from "./project/RecentProject";
|
||||||
import MsRecentReport from "./report/RecentReport";
|
import MsRecentReport from "./report/RecentReport";
|
||||||
|
import {checkoutCurrentWorkspace} from "../../common/utils";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "MsMenus",
|
name: "MsMenus",
|
||||||
components: {MsRecentReport, MsRecentTestPlan, MsRecentProject}
|
components: {MsRecentReport, MsRecentTestPlan, MsRecentProject},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isCurrentWorkspaceUser: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.isCurrentWorkspaceUser = checkoutCurrentWorkspace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<el-menu-item index="/setting/testresourcepool">测试资源池</el-menu-item>
|
<el-menu-item index="/setting/testresourcepool">测试资源池</el-menu-item>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
|
|
||||||
<el-submenu index="2" v-permission="['org_admin']">
|
<el-submenu index="2" v-permission="['org_admin']" v-if="isCurrentOrganizationAdmin">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<font-awesome-icon class="icon organization" :icon="['far', 'building']" size="lg"/>
|
<font-awesome-icon class="icon organization" :icon="['far', 'building']" size="lg"/>
|
||||||
<span>组织</span>
|
<span>组织</span>
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
<el-menu-item index="/setting/organizationworkspace" v-permission="['org_admin']">工作空间</el-menu-item>
|
<el-menu-item index="/setting/organizationworkspace" v-permission="['org_admin']">工作空间</el-menu-item>
|
||||||
</el-submenu>
|
</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">
|
<template slot="title">
|
||||||
<font-awesome-icon class="icon workspace" :icon="['far', 'list-alt']" size="lg"/>
|
<font-awesome-icon class="icon workspace" :icon="['far', 'list-alt']" size="lg"/>
|
||||||
<span>工作空间</span>
|
<span>工作空间</span>
|
||||||
|
@ -40,8 +40,20 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import {checkoutCurrentOrganization, checkoutCurrentWorkspace} from "../../../common/utils";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "MsSettingMenu"
|
name: "MsSettingMenu",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isCurrentOrganizationAdmin: false,
|
||||||
|
isCurrentWorkspaceUser: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.isCurrentOrganizationAdmin = checkoutCurrentOrganization();
|
||||||
|
this.isCurrentWorkspaceUser = checkoutCurrentWorkspace();
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue