From 8b209be4c480001b9694b8b7a5c631285209d7fa Mon Sep 17 00:00:00 2001 From: MaxKey Date: Sat, 19 Oct 2024 11:01:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A1=AB=E5=85=85instId=EF=BC=8CcreatedBy?= =?UTF-8?q?=EF=BC=8CcreatedDate=EF=BC=8CmodifiedBy=EF=BC=8CmodifiedDate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit instId,createdBy,createdDate,modifiedBy,modifiedDate --- .../dromara/maxkey/authn/SignPrincipal.java | 15 ++++++ .../web/PersistFieldAutoFillHandler.java | 48 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 maxkey-authentications/maxkey-authentication-core/src/main/java/org/dromara/maxkey/authn/web/PersistFieldAutoFillHandler.java diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/dromara/maxkey/authn/SignPrincipal.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/dromara/maxkey/authn/SignPrincipal.java index 3628094e..8faaf986 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/dromara/maxkey/authn/SignPrincipal.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/dromara/maxkey/authn/SignPrincipal.java @@ -32,6 +32,9 @@ public class SignPrincipal implements UserDetails { UserDetails userDetails; + String instId; + String userId; + String sessionId; List grantedAuthority; @@ -61,6 +64,8 @@ public class SignPrincipal implements UserDetails { */ public SignPrincipal(UserInfo userInfo) { this.userInfo = userInfo; + this.userId =userInfo.getId(); + this.instId = userInfo.getInstId(); this.authenticated = true; this.accountNonExpired = true; this.accountNonLocked = true; @@ -70,6 +75,8 @@ public class SignPrincipal implements UserDetails { public SignPrincipal(UserInfo userInfo,Session session) { this.userInfo = userInfo; + this.userId =userInfo.getId(); + this.instId = userInfo.getInstId(); this.authenticated = true; this.accountNonExpired = true; this.accountNonLocked = true; @@ -157,6 +164,14 @@ public class SignPrincipal implements UserDetails { public void setSessionId(String sessionId) { this.sessionId = sessionId; } + + public String getInstId() { + return instId; + } + + public String getUserId() { + return userId; + } @Override public boolean isEnabled() { diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/dromara/maxkey/authn/web/PersistFieldAutoFillHandler.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/dromara/maxkey/authn/web/PersistFieldAutoFillHandler.java new file mode 100644 index 00000000..555fc22e --- /dev/null +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/dromara/maxkey/authn/web/PersistFieldAutoFillHandler.java @@ -0,0 +1,48 @@ +package org.dromara.maxkey.authn.web; + +import java.util.Date; + +import org.apache.ibatis.reflection.MetaObject; +import org.dromara.maxkey.authn.SignPrincipal; +import org.dromara.mybatis.jpa.handler.FieldAutoFillHandler; +import org.springframework.stereotype.Component; + +@Component +public class PersistFieldAutoFillHandler extends FieldAutoFillHandler{ + + @Override + public void insertFill(MetaObject metaObject) { + + SignPrincipal principal = getPrincipal(); + if(principal != null) { + this.setFieldValue(metaObject , "instId", principal.getInstId()); + this.setFieldValue(metaObject , "createdBy", principal.getUserId()); + } + this.setFieldValue(metaObject , "createdDate", new Date()); + + } + + @Override + public void updateFill(MetaObject metaObject) { + SignPrincipal principal = getPrincipal(); + if(principal != null) { + this.setFieldValue(metaObject , "modifiedBy", principal.getUserId()); + } + this.setFieldValue(metaObject , "modifiedDate", new Date()); + } + + /** + * 获取principal , 忽略异常情况 + * @return + */ + SignPrincipal getPrincipal() { + SignPrincipal principal = null; + try { + principal = AuthorizationUtils.getPrincipal(); + }catch(Exception e) { + // + } + return principal; + } + +}