From 09ac15835fe8c1c655efd231509a5ae98499e4e4 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期三, 29 十一月 2023 14:26:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/UBCS-WEB/package.json | 68 ++++----
/dev/null | 158 ----------------------
Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java | 6
Source/UBCS-WEB/src/views/monitor/log/operateLog.vue | 177 +++++++++++++++++++++++++
4 files changed, 216 insertions(+), 193 deletions(-)
diff --git a/Source/UBCS-WEB/package.json b/Source/UBCS-WEB/package.json
index 3d5663c..0b035b2 100644
--- a/Source/UBCS-WEB/package.json
+++ b/Source/UBCS-WEB/package.json
@@ -11,44 +11,44 @@
"test:e2e": "vue-cli-service test:e2e"
},
"dependencies": {
- "avue-plugin-ueditor": "^0.1.4",
- "axios": "^0.18.0",
- "babel-polyfill": "^6.26.0",
- "classlist-polyfill": "^1.2.0",
- "crypto-js": "^4.1.1",
+ "avue-plugin-ueditor": "0.1.4",
+ "axios": "0.18.0",
+ "babel-polyfill": "6.26.0",
+ "classlist-polyfill": "1.2.0",
+ "crypto-js": "4.1.1",
"echarts": "4.9.0",
- "element-ui": "^2.15.6",
- "instead": "^1.0.3",
- "js-base64": "^2.5.1",
- "js-cookie": "^2.2.0",
- "js-md5": "^0.7.3",
- "js-pinyin": "^0.2.4",
- "mockjs": "^1.0.1-beta3",
- "moment": "^2.29.4",
- "node-gyp": "^4.0.0",
- "nprogress": "^0.2.0",
- "portfinder": "^1.0.23",
- "save": "^2.9.0",
- "script-loader": "^0.7.2",
- "vue": "^2.6.10",
- "vue-axios": "^2.1.2",
- "vue-clipboard2": "^0.3.3",
+ "element-ui": "2.15.6",
+ "instead": "1.0.3",
+ "js-base64": "2.5.1",
+ "js-cookie": "2.2.0",
+ "js-md5": "0.7.3",
+ "js-pinyin": "0.2.4",
+ "mockjs": "1.0.1-beta3",
+ "moment": "2.29.4",
+ "node-gyp": "4.0.0",
+ "nprogress": "0.2.0",
+ "portfinder": "1.0.23",
+ "save": "2.9.0",
+ "script-loader": "0.7.2",
+ "vue": "2.6.10",
+ "vue-axios": "2.1.2",
+ "vue-clipboard2": "0.3.3",
"vue-echarts": "5.0.0-beta.0",
- "vue-flowchart-editor": "^1.0.2",
- "vue-i18n": "^8.7.0",
- "vue-router": "^3.0.1",
- "vuex": "^3.1.1"
+ "vue-flowchart-editor": "1.0.2",
+ "vue-i18n": "8.7.0",
+ "vue-router": "3.0.1",
+ "vuex": "3.1.1"
},
"devDependencies": {
- "@vue/cli-plugin-babel": "^3.1.1",
- "@vue/cli-plugin-eslint": "^3.1.5",
- "@vue/cli-service": "^3.1.4",
- "@vue/composition-api": "^1.7.2",
- "chai": "^4.1.2",
- "node-sass": "^6.0.1",
- "sass-loader": "^10.0.5",
- "vue-template-compiler": "^2.5.17",
- "webpack-bundle-analyzer": "^3.0.3"
+ "@vue/cli-plugin-babel": "3.1.1",
+ "@vue/cli-plugin-eslint": "3.1.5",
+ "@vue/cli-service": "3.1.4",
+ "@vue/composition-api": "1.7.2",
+ "chai": "4.1.2",
+ "node-sass": "6.0.1",
+ "sass-loader": "10.0.5",
+ "vue-template-compiler": "2.5.17",
+ "webpack-bundle-analyzer": "3.0.3"
},
"lint-staged": {
"*.js": [
diff --git a/Source/UBCS-WEB/src/views/monitor/log/authLog.vue b/Source/UBCS-WEB/src/views/monitor/log/authLog.vue
deleted file mode 100644
index e69de29..0000000
--- a/Source/UBCS-WEB/src/views/monitor/log/authLog.vue
+++ /dev/null
diff --git a/Source/UBCS-WEB/src/views/monitor/log/loginLog.vue b/Source/UBCS-WEB/src/views/monitor/log/loginLog.vue
deleted file mode 100644
index e5d653c..0000000
--- a/Source/UBCS-WEB/src/views/monitor/log/loginLog.vue
+++ /dev/null
@@ -1,158 +0,0 @@
-<template>
- <basic-container>
- <avue-crud :option="option"
- :table-loading="loading"
- :data="data"
- ref="crud"
- v-model="form"
- :permission="permissionList"
- :page.sync="page"
- :before-open="beforeOpen"
- @search-change="searchChange"
- @search-reset="searchReset"
- @current-change="currentChange"
- @size-change="sizeChange"
- @refresh-change="refreshChange"
- @on-load="onLoad">
- </avue-crud>
- </basic-container>
-</template>
-
-<script>
- import { listLogOperate } from "@/api/logs";
- import {mapGetters} from "vuex";
-
- export default {
- data() {
- return {
- form: {},
- selectionList: [],
- query: {},
- //鏄惁鏄笁鍛樼鐞嗗憳鏃ュ織
- isAdmin: 0,
- // LoginOrLogout:鐧诲綍鏃ュ織,auth:鎺堟潈鏃ュ織,operate:鎿嶄綔鏃ュ織
- logType: "LoginOrLogout",
- loading: true,
- page: {
- pageSize: 10,
- currentPage: 1,
- total: 0
- },
- option: {
- height: 'auto',
- calcHeight: 30,
- columnBtn:false,
- tip: false,
- searchShow: true,
- searchMenuSpan: 6,
- border: true,
- index: true,
- viewBtn: true,
- editBtn: false,
- addBtn: false,
- delBtn: false,
- menuWidth: 120,
- dialogType: 'drawer',
- column: [
- {
- label: "鐢ㄦ埛鍚�",
- prop: "userName",
- search: true
- },
- {
- label: "濮撳悕",
- prop: "realName",
- search: true
- },
- {
- label: "鐢ㄦ埛ip",
- prop: "ip"
- },
- {
- label: "妯″潡",
- prop: "model",
- width:'160'
- },
- {
- label: "鏃堕棿",
- prop: "time"
- },
- {
- label: "鎿嶄綔缁撴灉",
- prop: "operateResult"
- },
- {
- label: "鎻忚堪",
- prop: "description"
- },
- ]
- },
- data: []
- };
- },
- computed: {
- ...mapGetters(["permission"]),
- permissionList() {
- return {
- viewBtn: this.vaildData(this.permission.log_usual.log_usual_view, false)
- };
- },
- },
- methods: {
- searchReset() {
- this.query = {};
- this.onLoad(this.page);
- },
- searchChange(params, done) {
- this.query = params;
- this.page.currentPage = 1;
- this.onLoad(this.page, params);
- done();
- },
- underscoreName(key) {
- return key.replace(/([A-Z])/g, "_$1").toLowerCase();
- },
- beforeOpen(done, type) {
- if (["edit", "view"].includes(type)) {
- getUsualLogs(this.form.id).then(res => {
- this.form = res.data.data;
- });
- }
- done();
- },
- currentChange(currentPage){
- this.page.currentPage = currentPage;
- },
- sizeChange(pageSize){
- this.page.pageSize = pageSize;
- },
- refreshChange() {
- this.onLoad(this.page, this.query);
- },
- onLoad(page, params = {}) {
- let conditionMaps = {};
- conditionMaps["conditionMap[is_admin]"] = this.isAdmin;
- conditionMaps["conditionMap[log_type]"] = this.logType.trim();
- if (params) {
- Object.keys(params).forEach((key) => {
- conditionMaps["conditionMap[" + this.underscoreName(key) + "_like]"] = params[key].trim();
- });
- }
- this.loading = true;
- listLogOperate(
- page.currentPage,
- page.pageSize,
- conditionMaps
- ).then(res => {
- const data = res.data.data;
- this.page.total = data.total;
- this.data = data.records;
- this.loading = false;
- });
- }
- }
- };
-</script>
-
-<style>
-</style>
diff --git a/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue b/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue
index e69de29..b797733 100644
--- a/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue
+++ b/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue
@@ -0,0 +1,177 @@
+<template>
+ <basic-container>
+ <avue-crud :option="option"
+ :table-loading="loading"
+ :data="data"
+ ref="crud"
+ v-model="form"
+ :permission="permissionList"
+ :page.sync="page"
+ :before-open="beforeOpen"
+ @search-change="searchChange"
+ @search-reset="searchReset"
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ @refresh-change="refreshChange"
+ @on-load="onLoad">
+ </avue-crud>
+ </basic-container>
+</template>
+
+<script>
+ import { listLogOperate } from "@/api/logs";
+ import {mapGetters} from "vuex";
+
+ export default {
+ data() {
+ return {
+ form: {},
+ selectionList: [],
+ query: {},
+ //鏄惁鏄笁鍛樼鐞嗗憳鏃ュ織
+ isAdmin: '',
+ // LoginOrLogout:鐧诲綍鏃ュ織,grant:鎺堟潈鏃ュ織,operate:鎿嶄綔鏃ュ織
+ logType: '',
+ loading: true,
+ page: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 0
+ },
+ option: {
+ height: 'auto',
+ calcHeight: 30,
+ columnBtn:false,
+ tip: false,
+ searchShow: true,
+ searchMenuSpan: 6,
+ border: true,
+ index: true,
+ viewBtn: true,
+ editBtn: false,
+ addBtn: false,
+ delBtn: false,
+ menuWidth: 120,
+ dialogType: 'drawer',
+ column: [
+ {
+ label: "鐢ㄦ埛鍚�",
+ prop: "userName",
+ search: true,
+ width:'100'
+ },
+ {
+ label: "濮撳悕",
+ prop: "realName",
+ search: true,
+ width:'100'
+ },
+ {
+ label: "鐢ㄦ埛ip",
+ prop: "ip",
+ width:'100'
+ },
+ {
+ label: "妯″潡",
+ prop: "model",
+ width:'140'
+ },
+ {
+ label: "鏃堕棿",
+ prop: "time",
+ width:'160'
+ },
+ {
+ label: "鎿嶄綔缁撴灉",
+ prop: "operateResult",
+ width:'100'
+ },
+ {
+ label: "鎻忚堪",
+ prop: "description",
+ width:'300'
+ },
+ ]
+ },
+ data: []
+ };
+ },
+ computed: {
+ ...mapGetters(["permission"]),
+ permissionList() {
+ return {
+ viewBtn: this.vaildData(this.permission.log_usual.log_usual_view, false)
+ };
+ },
+ },
+ created() {
+ this.getRouteParam()
+ },
+ methods: {
+ //鑾峰彇鏁版嵁
+ getRouteParam() {
+ const logType = this.$route.query.log_type; // 鑾峰彇log_type鍙傛暟鐨勫��
+ const result = logType.substring(0, logType.indexOf(':')); // 鎴彇浠�0鍒癅涔嬮棿鐨勫瓙瀛楃涓�
+ const isAdmin = logType.substring(logType.indexOf(':')+1, logType.indexOf('@')); // 浠嶡涔嬪悗鎴彇鍒版湯灏剧殑瀛愬瓧绗︿覆
+ this.logType = result;
+ this.isAdmin = isAdmin;
+ //console.log(this.logType)
+ //console.log(this.isAdmin)
+ },
+ searchReset() {
+ this.query = {};
+ this.onLoad(this.page);
+ },
+ searchChange(params, done) {
+ this.query = params;
+ this.page.currentPage = 1;
+ this.onLoad(this.page, params);
+ done();
+ },
+ underscoreName(key) {
+ return key.replace(/([A-Z])/g, "_$1").toLowerCase();
+ },
+ beforeOpen(done, type) {
+ if (["edit", "view"].includes(type)) {
+ getUsualLogs(this.form.id).then(res => {
+ this.form = res.data.data;
+ });
+ }
+ done();
+ },
+ currentChange(currentPage){
+ this.page.currentPage = currentPage;
+ },
+ sizeChange(pageSize){
+ this.page.pageSize = pageSize;
+ },
+ refreshChange() {
+ this.onLoad(this.page, this.query);
+ },
+ onLoad(page, params = {}) {
+ let conditionMaps = {};
+ conditionMaps["conditionMap[is_admin]"] = this.isAdmin;
+ conditionMaps["conditionMap[log_type]"] = this.logType.trim();
+ if (params) {
+ Object.keys(params).forEach((key) => {
+ conditionMaps["conditionMap[" + this.underscoreName(key) + "_like]"] = params[key].trim();
+ });
+ }
+ this.loading = true;
+ listLogOperate(
+ page.currentPage,
+ page.pageSize,
+ conditionMaps
+ ).then(res => {
+ const data = res.data.data;
+ this.page.total = data.total;
+ this.data = data.records;
+ this.loading = false;
+ });
+ }
+ }
+ };
+</script>
+
+<style>
+</style>
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
index 9913f8b..eb886d5 100644
--- a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
@@ -31,6 +31,7 @@
import com.vci.ubcs.common.cache.CacheNames;
import org.springblade.core.jwt.JwtUtil;
import org.springblade.core.jwt.props.JwtProperties;
+import org.springblade.core.launch.constant.TokenConstant;
import org.springblade.core.log.annotation.LoginOrLogoutLog;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.utils.AuthUtil;
@@ -110,6 +111,7 @@
// 鑾峰彇绉熸埛ID
String headerTenant = request.getHeader(TokenUtil.TENANT_HEADER_KEY);
String paramTenant = request.getParameter(TokenUtil.TENANT_PARAM_KEY);
+ String refreshToken = request.getParameter(TokenConstant.REFRESH_TOKEN);
String password = request.getParameter(TokenUtil.PASSWORD_KEY);
String grantType = request.getParameter(TokenUtil.GRANT_TYPE_KEY);
// 鍒ゆ柇绉熸埛璇锋眰澶�
@@ -139,7 +141,9 @@
//瓒呯骇绠$悊鍛橀厤缃枃浠堕厤缃处鍙峰瘑鐮侊紝瀹炵幇鐧诲綍, 榛樿绉熸埛id鍜岃秴绠′负閰嶇疆鍑烘潵鐨�
if(tenantId.equals(this.tenantId) && userName.equals(username)){
- if (!this.userName.equals(username) || !BladePasswordEncoderFactories.createDelegatingPasswordEncoder().encode(password).equalsIgnoreCase(AuthConstant.ENCRYPT+this.password)) {
+ if (Func.isBlank(refreshToken)/*鍒锋柊token涓嶇敤鏍¢獙瀵嗙爜*/
+ && (!this.userName.equals(username) || !BladePasswordEncoderFactories.createDelegatingPasswordEncoder().encode(password).equalsIgnoreCase(AuthConstant.ENCRYPT+this.password))
+ ) {
setFailCount(tenantId, username, count,strategy.getLockingTime());
throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND+"杩樻湁銆�"+(failCount-count)+"銆戞灏濊瘯鏈轰細!");
}
--
Gitblit v1.9.3