From 29f470c7c1d121d865ec098c78374f9299aa29aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E5=AD=90=E9=BE=99?= <14096380+qwe963852@user.noreply.gitee.com> Date: Tue, 20 Aug 2024 22:07:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- babel.config.js | 13 ++ src/App.vue | 28 ++++ src/layout/components/AppMain.vue | 75 +++++++++++ src/plugins/auth.js | 60 +++++++++ src/utils/auth.js | 29 ++++ src/views/dashboard/BarChart.vue | 103 +++++++++++++++ src/views/system/role/authUser.vue | 205 +++++++++++++++++++++++++++++ src/views/system/user/authRole.vue | 118 +++++++++++++++++ 8 files changed, 631 insertions(+) create mode 100644 babel.config.js create mode 100644 src/App.vue create mode 100644 src/layout/components/AppMain.vue create mode 100644 src/plugins/auth.js create mode 100644 src/utils/auth.js create mode 100644 src/views/dashboard/BarChart.vue create mode 100644 src/views/system/role/authUser.vue create mode 100644 src/views/system/user/authRole.vue diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..c8267b2 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,13 @@ +module.exports = { + presets: [ + // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app + '@vue/cli-plugin-babel/preset' + ], + 'env': { + 'development': { + // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require(). + // This plugin can significantly increase the speed of hot updates, when you have a large number of pages. + 'plugins': ['dynamic-import-node'] + } + } +} \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..69a3716 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,28 @@ + + + + diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue new file mode 100644 index 0000000..7c1e34f --- /dev/null +++ b/src/layout/components/AppMain.vue @@ -0,0 +1,75 @@ + + + + + + + diff --git a/src/plugins/auth.js b/src/plugins/auth.js new file mode 100644 index 0000000..6c6bc24 --- /dev/null +++ b/src/plugins/auth.js @@ -0,0 +1,60 @@ +import store from '@/store' + +function authPermission(permission) { + const all_permission = "*:*:*"; + const permissions = store.getters && store.getters.permissions + if (permission && permission.length > 0) { + return permissions.some(v => { + return all_permission === v || v === permission + }) + } else { + return false + } +} + +function authRole(role) { + const super_admin = "admin"; + const roles = store.getters && store.getters.roles + if (role && role.length > 0) { + return roles.some(v => { + return super_admin === v || v === role + }) + } else { + return false + } +} + +export default { + // 验证用户是否具备某权限 + hasPermi(permission) { + return authPermission(permission); + }, + // 验证用户是否含有指定权限,只需包含其中一个 + hasPermiOr(permissions) { + return permissions.some(item => { + return authPermission(item) + }) + }, + // 验证用户是否含有指定权限,必须全部拥有 + hasPermiAnd(permissions) { + return permissions.every(item => { + return authPermission(item) + }) + }, + // 验证用户是否具备某角色 + hasRole(role) { + return authRole(role); + }, + // 验证用户是否含有指定角色,只需包含其中一个 + hasRoleOr(roles) { + return roles.some(item => { + return authRole(item) + }) + }, + // 验证用户是否含有指定角色,必须全部拥有 + hasRoleAnd(roles) { + return roles.every(item => { + return authRole(item) + }) + } +} diff --git a/src/utils/auth.js b/src/utils/auth.js new file mode 100644 index 0000000..a673d22 --- /dev/null +++ b/src/utils/auth.js @@ -0,0 +1,29 @@ +import Cookies from 'js-cookie' + +const TokenKey = 'Admin-Token' + +const ExpiresInKey = 'Admin-Expires-In' + +export function getToken() { + return Cookies.get(TokenKey) +} + +export function setToken(token) { + return Cookies.set(TokenKey, token) +} + +export function removeToken() { + return Cookies.remove(TokenKey) +} + +export function getExpiresIn() { + return Cookies.get(ExpiresInKey) || -1 +} + +export function setExpiresIn(time) { + return Cookies.set(ExpiresInKey, time) +} + +export function removeExpiresIn() { + return Cookies.remove(ExpiresInKey) +} diff --git a/src/views/dashboard/BarChart.vue b/src/views/dashboard/BarChart.vue new file mode 100644 index 0000000..e175369 --- /dev/null +++ b/src/views/dashboard/BarChart.vue @@ -0,0 +1,103 @@ + + + diff --git a/src/views/system/role/authUser.vue b/src/views/system/role/authUser.vue new file mode 100644 index 0000000..ea88e9d --- /dev/null +++ b/src/views/system/role/authUser.vue @@ -0,0 +1,205 @@ + + + diff --git a/src/views/system/user/authRole.vue b/src/views/system/user/authRole.vue new file mode 100644 index 0000000..e849c05 --- /dev/null +++ b/src/views/system/user/authRole.vue @@ -0,0 +1,118 @@ + + +