From 5b8c1b1e948732b8930c073aea8d7036130b493a Mon Sep 17 00:00:00 2001
From: TsMask <340112800@qq.com>
Date: Wed, 27 Nov 2024 15:23:49 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E7=99=BB=E5=BD=95=E8=AE=A4=E8=AF=81?=
=?UTF-8?q?=E7=9A=84=E7=B1=BB=E5=9E=8B=E5=88=86=E4=B8=BAsys/u=EF=BC=8C?=
=?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=B3=BB=E7=BB=9F=E5=92=8C=E7=94=A8=E6=88=B7?=
=?UTF-8?q?=E5=B9=B3=E5=8F=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
wfc-api/pom.xml | 1 +
wfc-auth/pom.xml | 7 +-
.../wfc/auth/controller/TokenController.java | 32 +++++--
.../org/wfc/auth/service/SysLoginService.java | 11 +--
.../org/wfc/auth/service/ULoginService.java | 24 ++---
.../wfc/auth/service/UPasswordService.java | 87 +++++++++++++++++++
.../wfc/auth/service/URecordLogService.java | 48 ++++++++++
.../core/constant/ServiceNameConstants.java | 6 ++
.../wfc/common/core/domain}/LoginUser.java | 16 ++--
.../wfc/common/core/web}/form/LoginBody.java | 2 +-
.../common/core/web}/form/RegisterBody.java | 2 +-
.../datascope/aspect/DataScopeAspect.java | 6 +-
wfc-common/wfc-common-security/pom.xml | 7 +-
.../wfc/common/security/auth/AuthLogic.java | 4 +-
.../wfc/common/security/auth/AuthUtil.java | 2 +-
.../interceptor/HeaderInterceptor.java | 2 +-
.../common/security/service/TokenService.java | 36 +++++---
.../wfc/common/security/utils/DictUtils.java | 6 +-
.../common/security/utils/SecurityUtils.java | 4 +-
.../controller/SysProfileController.java | 18 ++--
.../system/controller/SysUserController.java | 12 +--
.../controller/SysUserOnlineController.java | 2 +-
.../system/service/ISysUserOnlineService.java | 2 +-
.../service/impl/SysDictTypeServiceImpl.java | 2 +-
.../impl/SysUserOnlineServiceImpl.java | 2 +-
25 files changed, 262 insertions(+), 79 deletions(-)
create mode 100644 wfc-auth/src/main/java/org/wfc/auth/service/UPasswordService.java
create mode 100644 wfc-auth/src/main/java/org/wfc/auth/service/URecordLogService.java
rename {wfc-api/wfc-api-system/src/main/java/org/wfc/system/api/model => wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/domain}/LoginUser.java (87%)
rename {wfc-auth/src/main/java/org/wfc/auth => wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/web}/form/LoginBody.java (95%)
rename {wfc-auth/src/main/java/org/wfc/auth => wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/web}/form/RegisterBody.java (72%)
diff --git a/wfc-api/pom.xml b/wfc-api/pom.xml
index b7dd986..9b8d1db 100644
--- a/wfc-api/pom.xml
+++ b/wfc-api/pom.xml
@@ -11,6 +11,7 @@
wfc-api-system
wfc-api-omada
+ wfc-api-user
wfc-api
diff --git a/wfc-auth/pom.xml b/wfc-auth/pom.xml
index 49aaf53..ca6529a 100644
--- a/wfc-auth/pom.xml
+++ b/wfc-auth/pom.xml
@@ -56,7 +56,12 @@
org.wfc
wfc-common-swagger
-
+
+
+
+ org.wfc
+ wfc-api-user
+
diff --git a/wfc-auth/src/main/java/org/wfc/auth/controller/TokenController.java b/wfc-auth/src/main/java/org/wfc/auth/controller/TokenController.java
index 8df0db8..32b9447 100644
--- a/wfc-auth/src/main/java/org/wfc/auth/controller/TokenController.java
+++ b/wfc-auth/src/main/java/org/wfc/auth/controller/TokenController.java
@@ -1,21 +1,25 @@
package org.wfc.auth.controller;
-import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
-import org.wfc.auth.form.LoginBody;
-import org.wfc.auth.form.RegisterBody;
+import org.wfc.common.core.web.form.LoginBody;
+import org.wfc.common.core.web.form.RegisterBody;
import org.wfc.auth.service.SysLoginService;
+import org.wfc.auth.service.ULoginService;
import org.wfc.common.core.domain.R;
import org.wfc.common.core.utils.JwtUtils;
import org.wfc.common.core.utils.StringUtils;
import org.wfc.common.security.auth.AuthUtil;
import org.wfc.common.security.service.TokenService;
import org.wfc.common.security.utils.SecurityUtils;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
+import org.wfc.system.api.domain.SysUser;
+import org.wfc.user.api.domain.UUser;
+
+import javax.servlet.http.HttpServletRequest;
/**
* token 控制
@@ -31,13 +35,25 @@ public class TokenController
@Autowired
private SysLoginService sysLoginService;
+ @Autowired
+ private ULoginService uLoginService;
+
@PostMapping("login")
public R> login(@RequestBody LoginBody form)
{
- // 用户登录
- LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
- // 获取登录token
- return R.ok(tokenService.createToken(userInfo));
+ if ("u".equals(form.getAuthType())){
+ // 用户登录
+ LoginUser userInfo = uLoginService.login(form.getUsername(), form.getPassword());
+ // 获取登录token
+ return R.ok(tokenService.createToken(userInfo));
+ } if ("sys".equals(form.getAuthType())){
+ // 用户登录
+ LoginUser sysInfo = sysLoginService.login(form.getUsername(), form.getPassword());
+ // 获取登录token
+ return R.ok(tokenService.createToken(sysInfo));
+ }
+
+ return R.fail("authentication type not supported");
}
@DeleteMapping("logout")
diff --git a/wfc-auth/src/main/java/org/wfc/auth/service/SysLoginService.java b/wfc-auth/src/main/java/org/wfc/auth/service/SysLoginService.java
index fe74b1f..3c8a065 100644
--- a/wfc-auth/src/main/java/org/wfc/auth/service/SysLoginService.java
+++ b/wfc-auth/src/main/java/org/wfc/auth/service/SysLoginService.java
@@ -17,7 +17,8 @@ import org.wfc.common.redis.service.RedisService;
import org.wfc.common.security.utils.SecurityUtils;
import org.wfc.system.api.RemoteUserService;
import org.wfc.system.api.domain.SysUser;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
+import org.wfc.user.api.domain.UUser;
/**
* 登录校验方法
@@ -42,7 +43,7 @@ public class SysLoginService
/**
* 登录
*/
- public LoginUser login(String username, String password)
+ public LoginUser login(String username, String password)
{
// 用户名或密码为空 错误
if (StringUtils.isAnyBlank(username, password))
@@ -72,7 +73,7 @@ public class SysLoginService
throw new ServiceException("很遗憾,访问IP已被列入系统黑名单");
}
// 查询用户信息
- R userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
+ R> userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData()))
{
@@ -85,8 +86,8 @@ public class SysLoginService
throw new ServiceException(userResult.getMsg());
}
- LoginUser userInfo = userResult.getData();
- SysUser user = userResult.getData().getSysUser();
+ LoginUser userInfo = userResult.getData();
+ SysUser user = userInfo.getUser();
if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
{
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
diff --git a/wfc-auth/src/main/java/org/wfc/auth/service/ULoginService.java b/wfc-auth/src/main/java/org/wfc/auth/service/ULoginService.java
index 94414c4..737e519 100644
--- a/wfc-auth/src/main/java/org/wfc/auth/service/ULoginService.java
+++ b/wfc-auth/src/main/java/org/wfc/auth/service/ULoginService.java
@@ -15,9 +15,9 @@ import org.wfc.common.core.utils.StringUtils;
import org.wfc.common.core.utils.ip.IpUtils;
import org.wfc.common.redis.service.RedisService;
import org.wfc.common.security.utils.SecurityUtils;
-import org.wfc.system.api.RemoteUserService;
-import org.wfc.system.api.domain.SysUser;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
+import org.wfc.user.api.RemoteUUserService;
+import org.wfc.user.api.domain.UUser;
/**
* 用户平台-登录校验方法
@@ -28,13 +28,13 @@ import org.wfc.system.api.model.LoginUser;
public class ULoginService
{
@Autowired
- private RemoteUserService remoteUserService;
+ private RemoteUUserService remoteUserService;
@Autowired
- private SysPasswordService passwordService;
+ private UPasswordService passwordService;
@Autowired
- private SysRecordLogService recordLogService;
+ private URecordLogService recordLogService;
@Autowired
private RedisService redisService;
@@ -42,7 +42,7 @@ public class ULoginService
/**
* 登录
*/
- public LoginUser login(String username, String password)
+ public LoginUser login(String username, String password)
{
// 用户名或密码为空 错误
if (StringUtils.isAnyBlank(username, password))
@@ -72,7 +72,7 @@ public class ULoginService
throw new ServiceException("很遗憾,访问IP已被列入系统黑名单");
}
// 查询用户信息
- R userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
+ R> userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData()))
{
@@ -85,8 +85,8 @@ public class ULoginService
throw new ServiceException(userResult.getMsg());
}
- LoginUser userInfo = userResult.getData();
- SysUser user = userResult.getData().getSysUser();
+ LoginUser userInfo = userResult.getData();
+ UUser user = userInfo.getUser();
if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
{
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
@@ -110,7 +110,7 @@ public class ULoginService
*/
public void recordLoginInfo(Long userId)
{
- SysUser sysUser = new SysUser();
+ UUser sysUser = new UUser();
sysUser.setUserId(userId);
// 更新用户登录IP
sysUser.setLoginIp(IpUtils.getIpAddr());
@@ -146,7 +146,7 @@ public class ULoginService
}
// 注册用户信息
- SysUser sysUser = new SysUser();
+ UUser sysUser = new UUser();
sysUser.setUserName(username);
sysUser.setNickName(username);
sysUser.setPassword(SecurityUtils.encryptPassword(password));
diff --git a/wfc-auth/src/main/java/org/wfc/auth/service/UPasswordService.java b/wfc-auth/src/main/java/org/wfc/auth/service/UPasswordService.java
new file mode 100644
index 0000000..452f0db
--- /dev/null
+++ b/wfc-auth/src/main/java/org/wfc/auth/service/UPasswordService.java
@@ -0,0 +1,87 @@
+package org.wfc.auth.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.wfc.common.core.constant.CacheConstants;
+import org.wfc.common.core.constant.Constants;
+import org.wfc.common.core.exception.ServiceException;
+import org.wfc.common.core.exception.user.UserPasswordNotMatchException;
+import org.wfc.common.redis.service.RedisService;
+import org.wfc.common.security.utils.SecurityUtils;
+import org.wfc.user.api.domain.UUser;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 登录密码方法
+ *
+ * @author wfc
+ */
+@Component
+public class UPasswordService
+{
+ @Autowired
+ private RedisService redisService;
+
+ private int maxRetryCount = CacheConstants.PASSWORD_MAX_RETRY_COUNT;
+
+ private Long lockTime = CacheConstants.PASSWORD_LOCK_TIME;
+
+ @Autowired
+ private SysRecordLogService recordLogService;
+
+ /**
+ * 登录账户密码错误次数缓存键名
+ *
+ * @param username 用户名
+ * @return 缓存键key
+ */
+ private String getCacheKey(String username)
+ {
+ return CacheConstants.PWD_ERR_CNT_KEY + username;
+ }
+
+ public void validate(UUser user, String password)
+ {
+ String username = user.getUserName();
+
+ Integer retryCount = redisService.getCacheObject(getCacheKey(username));
+
+ if (retryCount == null)
+ {
+ retryCount = 0;
+ }
+
+ if (retryCount >= Integer.valueOf(maxRetryCount).intValue())
+ {
+ String errMsg = String.format("密码输入错误%s次,帐户锁定%s分钟", maxRetryCount, lockTime);
+ recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL,errMsg);
+ throw new ServiceException(errMsg);
+ }
+
+ if (!matches(user, password))
+ {
+ retryCount = retryCount + 1;
+ recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount));
+ redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
+ throw new UserPasswordNotMatchException();
+ }
+ else
+ {
+ clearLoginRecordCache(username);
+ }
+ }
+
+ public boolean matches(UUser user, String rawPassword)
+ {
+ return SecurityUtils.matchesPassword(rawPassword, user.getPassword());
+ }
+
+ public void clearLoginRecordCache(String loginName)
+ {
+ if (redisService.hasKey(getCacheKey(loginName)))
+ {
+ redisService.deleteObject(getCacheKey(loginName));
+ }
+ }
+}
diff --git a/wfc-auth/src/main/java/org/wfc/auth/service/URecordLogService.java b/wfc-auth/src/main/java/org/wfc/auth/service/URecordLogService.java
new file mode 100644
index 0000000..8c003a2
--- /dev/null
+++ b/wfc-auth/src/main/java/org/wfc/auth/service/URecordLogService.java
@@ -0,0 +1,48 @@
+package org.wfc.auth.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.wfc.common.core.constant.Constants;
+import org.wfc.common.core.constant.SecurityConstants;
+import org.wfc.common.core.utils.StringUtils;
+import org.wfc.common.core.utils.ip.IpUtils;
+import org.wfc.user.api.RemoteULogService;
+import org.wfc.user.api.domain.ULogininfor;
+
+/**
+ * 记录日志方法
+ *
+ * @author wfc
+ */
+@Component
+public class URecordLogService
+{
+ @Autowired
+ private RemoteULogService remoteLogService;
+
+ /**
+ * 记录登录信息
+ *
+ * @param username 用户名
+ * @param status 状态
+ * @param message 消息内容
+ * @return
+ */
+ public void recordLogininfor(String username, String status, String message)
+ {
+ ULogininfor logininfor = new ULogininfor();
+ logininfor.setUserName(username);
+ logininfor.setIpaddr(IpUtils.getIpAddr());
+ logininfor.setMsg(message);
+ // 日志状态
+ if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER))
+ {
+ logininfor.setStatus(Constants.LOGIN_SUCCESS_STATUS);
+ }
+ else if (Constants.LOGIN_FAIL.equals(status))
+ {
+ logininfor.setStatus(Constants.LOGIN_FAIL_STATUS);
+ }
+ remoteLogService.saveLogininfor(logininfor, SecurityConstants.INNER);
+ }
+}
diff --git a/wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/constant/ServiceNameConstants.java b/wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/constant/ServiceNameConstants.java
index fb6e8a7..ace963e 100644
--- a/wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/constant/ServiceNameConstants.java
+++ b/wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/constant/ServiceNameConstants.java
@@ -21,4 +21,10 @@ public class ServiceNameConstants
* 文件服务的serviceid
*/
public static final String FILE_SERVICE = "wfc-file";
+
+
+ /**
+ * 用户平台模块的 service_id
+ */
+ public static final String USER_SERVICE = "wfc-modules-user";
}
diff --git a/wfc-api/wfc-api-system/src/main/java/org/wfc/system/api/model/LoginUser.java b/wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/domain/LoginUser.java
similarity index 87%
rename from wfc-api/wfc-api-system/src/main/java/org/wfc/system/api/model/LoginUser.java
rename to wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/domain/LoginUser.java
index 651e7d0..7dc6cb6 100644
--- a/wfc-api/wfc-api-system/src/main/java/org/wfc/system/api/model/LoginUser.java
+++ b/wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/domain/LoginUser.java
@@ -1,15 +1,13 @@
-package org.wfc.system.api.model;
-
+package org.wfc.common.core.domain;
import java.io.Serializable;
import java.util.Set;
-import org.wfc.system.api.domain.SysUser;
/**
* 用户信息
*
* @author wfc
*/
-public class LoginUser implements Serializable
+public class LoginUser implements Serializable
{
private static final long serialVersionUID = 1L;
@@ -56,7 +54,7 @@ public class LoginUser implements Serializable
/**
* 用户信息
*/
- private SysUser sysUser;
+ private T user;
public String getToken()
{
@@ -138,13 +136,13 @@ public class LoginUser implements Serializable
this.roles = roles;
}
- public SysUser getSysUser()
+ public T getUser()
{
- return sysUser;
+ return user;
}
- public void setSysUser(SysUser sysUser)
+ public void setUser(T user)
{
- this.sysUser = sysUser;
+ this.user = user;
}
}
diff --git a/wfc-auth/src/main/java/org/wfc/auth/form/LoginBody.java b/wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/web/form/LoginBody.java
similarity index 95%
rename from wfc-auth/src/main/java/org/wfc/auth/form/LoginBody.java
rename to wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/web/form/LoginBody.java
index ce56b6a..6415787 100644
--- a/wfc-auth/src/main/java/org/wfc/auth/form/LoginBody.java
+++ b/wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/web/form/LoginBody.java
@@ -1,4 +1,4 @@
-package org.wfc.auth.form;
+package org.wfc.common.core.web.form;
/**
* 用户登录对象
diff --git a/wfc-auth/src/main/java/org/wfc/auth/form/RegisterBody.java b/wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/web/form/RegisterBody.java
similarity index 72%
rename from wfc-auth/src/main/java/org/wfc/auth/form/RegisterBody.java
rename to wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/web/form/RegisterBody.java
index 7aba435..cfc0a2e 100644
--- a/wfc-auth/src/main/java/org/wfc/auth/form/RegisterBody.java
+++ b/wfc-common/wfc-common-core/src/main/java/org/wfc/common/core/web/form/RegisterBody.java
@@ -1,4 +1,4 @@
-package org.wfc.auth.form;
+package org.wfc.common.core.web.form;
/**
* 用户注册对象
diff --git a/wfc-common/wfc-common-datascope/src/main/java/org/wfc/common/datascope/aspect/DataScopeAspect.java b/wfc-common/wfc-common-datascope/src/main/java/org/wfc/common/datascope/aspect/DataScopeAspect.java
index 8ffdde8..17bc1c8 100644
--- a/wfc-common/wfc-common-datascope/src/main/java/org/wfc/common/datascope/aspect/DataScopeAspect.java
+++ b/wfc-common/wfc-common-datascope/src/main/java/org/wfc/common/datascope/aspect/DataScopeAspect.java
@@ -8,6 +8,7 @@ import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
import org.wfc.common.core.constant.UserConstants;
import org.wfc.common.core.context.SecurityContextHolder;
+import org.wfc.common.core.domain.LoginUser;
import org.wfc.common.core.text.Convert;
import org.wfc.common.core.utils.StringUtils;
import org.wfc.common.core.web.domain.BaseEntity;
@@ -15,7 +16,6 @@ import org.wfc.common.datascope.annotation.DataScope;
import org.wfc.common.security.utils.SecurityUtils;
import org.wfc.system.api.domain.SysRole;
import org.wfc.system.api.domain.SysUser;
-import org.wfc.system.api.model.LoginUser;
/**
* 数据过滤处理
@@ -66,10 +66,10 @@ public class DataScopeAspect
protected void handleDataScope(final JoinPoint joinPoint, DataScope controllerDataScope)
{
// 获取当前的用户
- LoginUser loginUser = SecurityUtils.getLoginUser();
+ LoginUser loginUser = SecurityUtils.getLoginUser();
if (StringUtils.isNotNull(loginUser))
{
- SysUser currentUser = loginUser.getSysUser();
+ SysUser currentUser = loginUser.getUser();
// 如果是超级管理员,则不过滤数据
if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin())
{
diff --git a/wfc-common/wfc-common-security/pom.xml b/wfc-common/wfc-common-security/pom.xml
index 8b60657..84b0d3c 100644
--- a/wfc-common/wfc-common-security/pom.xml
+++ b/wfc-common/wfc-common-security/pom.xml
@@ -28,12 +28,17 @@
wfc-api-system
+
+
+ org.wfc
+ wfc-api-user
+
+
org.wfc
wfc-common-redis
-
diff --git a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/auth/AuthLogic.java b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/auth/AuthLogic.java
index 6dd2c8d..34e5208 100644
--- a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/auth/AuthLogic.java
+++ b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/auth/AuthLogic.java
@@ -16,7 +16,7 @@ import org.wfc.common.security.annotation.RequiresPermissions;
import org.wfc.common.security.annotation.RequiresRoles;
import org.wfc.common.security.service.TokenService;
import org.wfc.common.security.utils.SecurityUtils;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
/**
* Token 权限验证,逻辑实现类
@@ -98,7 +98,7 @@ public class AuthLogic
*
* @param loginUser 当前用户信息
*/
- public void verifyLoginUserExpire(LoginUser loginUser)
+ public void verifyLoginUserExpire(LoginUser loginUser)
{
tokenService.verifyToken(loginUser);
}
diff --git a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/auth/AuthUtil.java b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/auth/AuthUtil.java
index 215dce5..ea7c983 100644
--- a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/auth/AuthUtil.java
+++ b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/auth/AuthUtil.java
@@ -2,7 +2,7 @@ package org.wfc.common.security.auth;
import org.wfc.common.security.annotation.RequiresPermissions;
import org.wfc.common.security.annotation.RequiresRoles;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
/**
* Token 权限验证工具类
diff --git a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/interceptor/HeaderInterceptor.java b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/interceptor/HeaderInterceptor.java
index 3e99c52..9d636be 100644
--- a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/interceptor/HeaderInterceptor.java
+++ b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/interceptor/HeaderInterceptor.java
@@ -10,7 +10,7 @@ import org.wfc.common.core.utils.ServletUtils;
import org.wfc.common.core.utils.StringUtils;
import org.wfc.common.security.auth.AuthUtil;
import org.wfc.common.security.utils.SecurityUtils;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
/**
* 自定义请求头拦截器,将Header数据封装到线程变量中方便获取
diff --git a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/service/TokenService.java b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/service/TokenService.java
index f71f1df..0cab5e7 100644
--- a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/service/TokenService.java
+++ b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/service/TokenService.java
@@ -17,7 +17,9 @@ import org.wfc.common.core.utils.ip.IpUtils;
import org.wfc.common.core.utils.uuid.IdUtils;
import org.wfc.common.redis.service.RedisService;
import org.wfc.common.security.utils.SecurityUtils;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
+import org.wfc.system.api.domain.SysUser;
+import org.wfc.user.api.domain.UUser;
/**
* token验证处理
@@ -45,11 +47,21 @@ public class TokenService
/**
* 创建令牌
*/
- public Map createToken(LoginUser loginUser)
+ public Map createToken(LoginUser loginUser)
{
String token = IdUtils.fastUUID();
- Long userId = loginUser.getSysUser().getUserId();
- String userName = loginUser.getSysUser().getUserName();
+ Long userId = 0L;
+ String userName = "";
+ T user = loginUser.getUser();
+ if (user instanceof SysUser) {
+ SysUser sysUser = (SysUser) user;
+ userId = sysUser.getUserId();
+ userName = sysUser.getUserName();
+ }else if (user instanceof UUser) {
+ UUser uUser = (UUser) user;
+ userId = uUser.getUserId();
+ userName = uUser.getUserName();
+ }
loginUser.setToken(token);
loginUser.setUserid(userId);
loginUser.setUsername(userName);
@@ -74,7 +86,7 @@ public class TokenService
*
* @return 用户信息
*/
- public LoginUser getLoginUser()
+ public LoginUser getLoginUser()
{
return getLoginUser(ServletUtils.getRequest());
}
@@ -84,7 +96,7 @@ public class TokenService
*
* @return 用户信息
*/
- public LoginUser getLoginUser(HttpServletRequest request)
+ public LoginUser getLoginUser(HttpServletRequest request)
{
// 获取请求携带的令牌
String token = SecurityUtils.getToken(request);
@@ -96,9 +108,9 @@ public class TokenService
*
* @return 用户信息
*/
- public LoginUser getLoginUser(String token)
+ public LoginUser getLoginUser(String token)
{
- LoginUser user = null;
+ LoginUser user = null;
try
{
if (StringUtils.isNotEmpty(token))
@@ -118,7 +130,7 @@ public class TokenService
/**
* 设置用户身份信息
*/
- public void setLoginUser(LoginUser loginUser)
+ public void setLoginUser(LoginUser loginUser)
{
if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken()))
{
@@ -141,9 +153,9 @@ public class TokenService
/**
* 验证令牌有效期,相差不足120分钟,自动刷新缓存
*
- * @param loginUser
+ * @param loginUser 登录用户
*/
- public void verifyToken(LoginUser loginUser)
+ public void verifyToken(LoginUser loginUser)
{
long expireTime = loginUser.getExpireTime();
long currentTime = System.currentTimeMillis();
@@ -158,7 +170,7 @@ public class TokenService
*
* @param loginUser 登录信息
*/
- public void refreshToken(LoginUser loginUser)
+ public void refreshToken(LoginUser loginUser)
{
loginUser.setLoginTime(System.currentTimeMillis());
loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
diff --git a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/utils/DictUtils.java b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/utils/DictUtils.java
index 023c3a7..3c62994 100644
--- a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/utils/DictUtils.java
+++ b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/utils/DictUtils.java
@@ -22,7 +22,7 @@ public class DictUtils
* @param key 参数键
* @param dictDatas 字典数据列表
*/
- public static void setDictCache(String key, List dictDatas)
+ public static void setDictCache(String key, List dictDatas)
{
SpringUtils.getBean(RedisService.class).setCacheObject(getCacheKey(key), dictDatas);
}
@@ -33,12 +33,12 @@ public class DictUtils
* @param key 参数键
* @return dictDatas 字典数据列表
*/
- public static List getDictCache(String key)
+ public static List getDictCache(String key, Class clazz)
{
JSONArray arrayCache = SpringUtils.getBean(RedisService.class).getCacheObject(getCacheKey(key));
if (StringUtils.isNotNull(arrayCache))
{
- return arrayCache.toList(SysDictData.class);
+ return arrayCache.toList(clazz);
}
return null;
}
diff --git a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/utils/SecurityUtils.java b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/utils/SecurityUtils.java
index f438e07..4eb3030 100644
--- a/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/utils/SecurityUtils.java
+++ b/wfc-common/wfc-common-security/src/main/java/org/wfc/common/security/utils/SecurityUtils.java
@@ -7,7 +7,7 @@ import org.wfc.common.core.constant.TokenConstants;
import org.wfc.common.core.context.SecurityContextHolder;
import org.wfc.common.core.utils.ServletUtils;
import org.wfc.common.core.utils.StringUtils;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
/**
* 权限获取工具类
@@ -43,7 +43,7 @@ public class SecurityUtils
/**
* 获取登录用户信息
*/
- public static LoginUser getLoginUser()
+ public static LoginUser getLoginUser()
{
return SecurityContextHolder.get(SecurityConstants.LOGIN_USER, LoginUser.class);
}
diff --git a/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysProfileController.java b/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysProfileController.java
index 2888f96..5b27b3c 100644
--- a/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysProfileController.java
+++ b/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysProfileController.java
@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
+import org.wfc.common.core.domain.LoginUser;
import org.wfc.common.core.domain.R;
import org.wfc.common.core.utils.StringUtils;
import org.wfc.common.core.utils.file.FileTypeUtils;
@@ -23,7 +24,6 @@ import org.wfc.common.security.utils.SecurityUtils;
import org.wfc.system.api.RemoteFileService;
import org.wfc.system.api.domain.SysFile;
import org.wfc.system.api.domain.SysUser;
-import org.wfc.system.api.model.LoginUser;
import org.wfc.system.service.ISysUserService;
/**
@@ -65,8 +65,8 @@ public class SysProfileController extends BaseController
@PutMapping
public AjaxResult updateProfile(@RequestBody SysUser user)
{
- LoginUser loginUser = SecurityUtils.getLoginUser();
- SysUser currentUser = loginUser.getSysUser();
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ SysUser currentUser = loginUser.getUser();
currentUser.setNickName(user.getNickName());
currentUser.setEmail(user.getEmail());
currentUser.setPhonenumber(user.getPhonenumber());
@@ -110,8 +110,10 @@ public class SysProfileController extends BaseController
if (userService.resetUserPwd(username, newPassword) > 0)
{
// 更新缓存用户密码
- LoginUser loginUser = SecurityUtils.getLoginUser();
- loginUser.getSysUser().setPassword(newPassword);
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ SysUser sysUser = loginUser.getUser();
+ sysUser.setPassword(newPassword);
+ loginUser.setUser(sysUser);
tokenService.setLoginUser(loginUser);
return success();
}
@@ -127,7 +129,7 @@ public class SysProfileController extends BaseController
{
if (!file.isEmpty())
{
- LoginUser loginUser = SecurityUtils.getLoginUser();
+ LoginUser loginUser = SecurityUtils.getLoginUser();
String extension = FileTypeUtils.getExtension(file);
if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION))
{
@@ -144,7 +146,9 @@ public class SysProfileController extends BaseController
AjaxResult ajax = AjaxResult.success();
ajax.put("imgUrl", url);
// 更新缓存用户头像
- loginUser.getSysUser().setAvatar(url);
+ SysUser sysUser = loginUser.getUser();
+ sysUser.setAvatar(url);
+ loginUser.setUser(sysUser);
tokenService.setLoginUser(loginUser);
return ajax;
}
diff --git a/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysUserController.java b/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysUserController.java
index 414ff85..3af516d 100644
--- a/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysUserController.java
+++ b/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysUserController.java
@@ -29,7 +29,7 @@ import org.wfc.common.security.utils.SecurityUtils;
import org.wfc.system.api.domain.SysDept;
import org.wfc.system.api.domain.SysRole;
import org.wfc.system.api.domain.SysUser;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
import org.wfc.system.service.ISysConfigService;
import org.wfc.system.service.ISysDeptService;
import org.wfc.system.service.ISysPermissionService;
@@ -133,7 +133,7 @@ public class SysUserController extends BaseController
*/
@InnerAuth
@GetMapping("/info/{username}")
- public R info(@PathVariable("username") String username)
+ public R> info(@PathVariable("username") String username)
{
SysUser sysUser = userService.selectUserByUserName(username);
if (StringUtils.isNull(sysUser))
@@ -144,8 +144,8 @@ public class SysUserController extends BaseController
Set roles = permissionService.getRolePermission(sysUser);
// 权限集合
Set permissions = permissionService.getMenuPermission(sysUser);
- LoginUser sysUserVo = new LoginUser();
- sysUserVo.setSysUser(sysUser);
+ LoginUser sysUserVo = new LoginUser();
+ sysUserVo.setUser(sysUser);
sysUserVo.setRoles(roles);
sysUserVo.setPermissions(permissions);
return R.ok(sysUserVo);
@@ -188,8 +188,8 @@ public class SysUserController extends BaseController
@GetMapping("getInfo")
public AjaxResult getInfo()
{
- LoginUser loginUser = SecurityUtils.getLoginUser();
- SysUser user = loginUser.getSysUser();
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ SysUser user = loginUser.getUser();
// 角色集合
Set roles = permissionService.getRolePermission(user);
// 权限集合
diff --git a/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysUserOnlineController.java b/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysUserOnlineController.java
index e0912f6..45293c9 100644
--- a/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysUserOnlineController.java
+++ b/wfc-modules/wfc-system/src/main/java/org/wfc/system/controller/SysUserOnlineController.java
@@ -19,7 +19,7 @@ import org.wfc.common.log.annotation.Log;
import org.wfc.common.log.enums.BusinessType;
import org.wfc.common.redis.service.RedisService;
import org.wfc.common.security.annotation.RequiresPermissions;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
import org.wfc.system.domain.SysUserOnline;
import org.wfc.system.service.ISysUserOnlineService;
diff --git a/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/ISysUserOnlineService.java b/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/ISysUserOnlineService.java
index a8b8780..f32b208 100644
--- a/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/ISysUserOnlineService.java
+++ b/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/ISysUserOnlineService.java
@@ -1,6 +1,6 @@
package org.wfc.system.service;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
import org.wfc.system.domain.SysUserOnline;
/**
diff --git a/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysDictTypeServiceImpl.java b/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysDictTypeServiceImpl.java
index 50fb50f..d40c64a 100644
--- a/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysDictTypeServiceImpl.java
+++ b/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysDictTypeServiceImpl.java
@@ -73,7 +73,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService
@Override
public List selectDictDataByType(String dictType)
{
- List dictDatas = DictUtils.getDictCache(dictType);
+ List dictDatas = DictUtils.getDictCache(dictType, SysDictData.class);
if (StringUtils.isNotEmpty(dictDatas))
{
return dictDatas;
diff --git a/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysUserOnlineServiceImpl.java b/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysUserOnlineServiceImpl.java
index 8b4bdde..30fe0a2 100644
--- a/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysUserOnlineServiceImpl.java
+++ b/wfc-modules/wfc-system/src/main/java/org/wfc/system/service/impl/SysUserOnlineServiceImpl.java
@@ -2,7 +2,7 @@ package org.wfc.system.service.impl;
import org.springframework.stereotype.Service;
import org.wfc.common.core.utils.StringUtils;
-import org.wfc.system.api.model.LoginUser;
+import org.wfc.common.core.domain.LoginUser;
import org.wfc.system.domain.SysUserOnline;
import org.wfc.system.service.ISysUserOnlineService;