From 4f561f95db773dc21256d6d2ed5c7b5be91fe22f Mon Sep 17 00:00:00 2001 From: sc Date: Thu, 22 Apr 2021 17:00:20 +0800 Subject: [PATCH] UP --- public/json/user.json | 8 ++++++++ src/main.js | 2 ++ src/utils/permission.js | 15 +++++++++++++++ src/utils/tool.js | 18 ++++++++++++------ src/views/home.vue | 20 +++++++++++++++++++- 5 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 src/utils/permission.js diff --git a/public/json/user.json b/public/json/user.json index b39acdcb..e55af129 100644 --- a/public/json/user.json +++ b/public/json/user.json @@ -101,6 +101,14 @@ "component": "lala" }] } + ], + "permissions": [ + "list.add", + "list.edit", + "list.delete", + "user.add", + "user.edit", + "user.delete" ] }, "message": "" diff --git a/src/main.js b/src/main.js index a8c5a124..d2b62bc6 100644 --- a/src/main.js +++ b/src/main.js @@ -7,12 +7,14 @@ import router from './router' import store from './store' import tool from './utils/tool' import api from './api' +import permission from './utils/permission' const app = createApp(App); app.config.globalProperties.$CONFIG = config; app.config.globalProperties.$TOOL = tool; app.config.globalProperties.$API = api; +app.config.globalProperties.$HAS = permission; app.use(store); app.use(router); diff --git a/src/utils/permission.js b/src/utils/permission.js new file mode 100644 index 00000000..cdde2930 --- /dev/null +++ b/src/utils/permission.js @@ -0,0 +1,15 @@ +import tool from '@/utils/tool'; + +let permission = (data) => { + let userInfo = tool.data.get("user"); + if(!userInfo){ + return false; + } + let permissions = userInfo.permissions; + if(!permissions){ + return false; + } + let isHave = permissions.includes(data); + return isHave; +} +export default permission; \ No newline at end of file diff --git a/src/utils/tool.js b/src/utils/tool.js index 5725b87f..0228eda6 100644 --- a/src/utils/tool.js +++ b/src/utils/tool.js @@ -1,17 +1,23 @@ const tool = { /* localStorage */ - data : { - set : function(table, settings){ + data: { + set: function(table, settings) { var _set = JSON.stringify(settings) return localStorage.setItem(table, _set); }, - get : function(table){ - return JSON.parse(localStorage.getItem(table)); + get: function(table) { + var data = localStorage.getItem(table); + try { + data = JSON.parse(data) + } catch (err) { + return null + } + return data; }, - remove : function(table){ + remove: function(table) { return localStorage.removeItem(table); }, - clear : function(){ + clear: function() { return localStorage.clear(); } } diff --git a/src/views/home.vue b/src/views/home.vue index c4e858d9..1a94566a 100644 --- a/src/views/home.vue +++ b/src/views/home.vue @@ -1,5 +1,5 @@