From b9e5baaf4d7676f61aeaec2f7058358d35d1d093 Mon Sep 17 00:00:00 2001 From: lbw Date: Fri, 3 Dec 2021 14:39:14 +0800 Subject: [PATCH] =?UTF-8?q?:memo:=20close=20#3410=20common-test=20?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95=E6=A8=A1=E5=9D=97=20?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=8F=8A=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit :recycle: close #3394 【用户信息】扩展用户基本信息增加部分扩展字段 :recycle: close #3394 【用户信息】扩展用户基本信息增加部分扩展字段 :recycle: close #3394 【用户信息】扩展用户基本信息增加部分扩展字段 --- db/2pigxx.sql | 5 +- .../core/constant/SecurityConstants.java | 15 ++++ .../PigxUserAuthenticationConverter.java | 19 ++++- .../common/security/service/PigxUser.java | 28 +++++++- .../service/PigxUserDetailsServiceImpl.java | 5 +- .../com/pig4cloud/pigx/test/kit/OAuthKit.java | 4 +- .../pigx/admin/api/entity/SysUser.java | 18 +++++ .../pigx/admin/api/vo/UserExcelVO.java | 21 ++++++ .../pig4cloud/pigx/admin/api/vo/UserVO.java | 18 +++++ .../service/impl/SysUserServiceImpl.java | 6 ++ .../src/main/resources/file/user.xlsx | Bin 8803 -> 8868 bytes .../main/resources/mapper/SysUserMapper.xml | 66 +++++++++++------- 12 files changed, 169 insertions(+), 36 deletions(-) diff --git a/db/2pigxx.sql b/db/2pigxx.sql index 997fac1b7..b1a8b70b8 100644 --- a/db/2pigxx.sql +++ b/db/2pigxx.sql @@ -764,6 +764,9 @@ CREATE TABLE `sys_user` ( `gitee_login` varchar(100) DEFAULT NULL COMMENT '码云 标识', `osc_id` varchar(100) DEFAULT NULL COMMENT '开源中国 标识', `tenant_id` int(11) NOT NULL DEFAULT '0' COMMENT '所属租户', + `nickname` varchar(255) DEFAULT NULL COMMENT '拓展字段:昵称', + `name` varchar(64) DEFAULT NULL COMMENT '拓展字段:姓名', + `email` varchar(255) DEFAULT NULL COMMENT '拓展字段:邮箱', PRIMARY KEY (`user_id`) USING BTREE, KEY `user_wx_openid` (`wx_openid`) USING BTREE, KEY `user_qq_openid` (`qq_openid`) USING BTREE, @@ -774,7 +777,7 @@ CREATE TABLE `sys_user` ( -- Records of sys_user -- ---------------------------- BEGIN; -INSERT INTO `sys_user` VALUES (1, 'admin', '$2a$10$IVzj1Wd.ZQdOIWdb1htQjexU94uoNeuk1crlQ9ExVupPi0Iy1uv.C', '', '17034642888', '/admin/sys-file/lengleng/c5a85e0770cd4fe78bc14b63b3bd05ae.jpg', 1, '2018-04-20 07:15:18', '2019-11-02 22:12:11', '0', '0', 'o_0FT0uyg_H1vVy2H0JpSwlVGhWQ', 'oBxPy5E-v82xWGsfzZVzkD3wEX64', NULL, 'log4j', '2303656', 1); +INSERT INTO `sys_user` VALUES (1, 'admin', '$2a$10$IVzj1Wd.ZQdOIWdb1htQjexU94uoNeuk1crlQ9ExVupPi0Iy1uv.C', '', '17034642888', '/admin/sys-file/lengleng/c5a85e0770cd4fe78bc14b63b3bd05ae.jpg', 1, '2018-04-20 07:15:18', '2019-11-02 22:12:11', '0', '0', 'o_0FT0uyg_H1vVy2H0JpSwlVGhWQ', 'oBxPy5E-v82xWGsfzZVzkD3wEX64', NULL, 'log4j', '2303656', 1,NULL,NULL,NULL); COMMIT; -- ---------------------------- diff --git a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/SecurityConstants.java b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/SecurityConstants.java index fe01e2683..05bff8d71 100644 --- a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/SecurityConstants.java +++ b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/SecurityConstants.java @@ -200,6 +200,21 @@ public interface SecurityConstants { */ String DETAILS_AVATAR = "avatar"; + /** + * 昵称 + */ + String NICKNAME = "nickname"; + + /** + * 姓名 + */ + String NAME = "name"; + + /** + * 邮箱 + */ + String EMAIL = "email"; + /** * 用户部门字段 */ diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxUserAuthenticationConverter.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxUserAuthenticationConverter.java index 4bbbb7018..4a7a9e9e7 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxUserAuthenticationConverter.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxUserAuthenticationConverter.java @@ -45,6 +45,14 @@ import java.util.Optional; * @date 2019-03-07 *

* 根据checktoken 的结果转化用户信息 + *

+ * 问题分析: 认证服务器check-token 返回的全部信息 资源服务器在根据返回信息组装用户信息的时候,只是用了username 如果设置了 + * userDetailsService 的实现则去调用 loadUserByUsername 再去查询一次用户信息 + *

+ * 造成问题现象 如果设置了userDetailsService 即可在spring security 上下文获取用户的全部信息,不设置则只能得到用户名。 + * 增加了一次查询逻辑,对性能产生不必要的影响 + *

+ * 解决问题 扩展UserAuthenticationConverter 的解析过程,把认证服务器返回的信息全部组装到spring security的上下文对象中 */ @Slf4j public class PigxUserAuthenticationConverter implements UserAuthenticationConverter { @@ -54,6 +62,7 @@ public class PigxUserAuthenticationConverter implements UserAuthenticationConver /** * Extract information about the user to be used in an access token (i.e. for resource * servers). + * * @param authentication an authentication representing a user * @return a map of key values representing the unique information about the user */ @@ -70,6 +79,7 @@ public class PigxUserAuthenticationConverter implements UserAuthenticationConver /** * Inverse of {@link #convertUserAuthentication(Authentication)}. Extracts an * Authentication from a map. + * * @param responseMap a map of user information * @return an Authentication representing the user or null if there is none */ @@ -79,14 +89,17 @@ public class PigxUserAuthenticationConverter implements UserAuthenticationConver Collection authorities = getAuthorities(responseMap); Map map = MapUtil.get(responseMap, SecurityConstants.DETAILS_USER, Map.class); validateTenantId(map); + String name = MapUtil.getStr(map, SecurityConstants.NAME); + String email = MapUtil.getStr(map, SecurityConstants.EMAIL); + String nickname = MapUtil.getStr(map, SecurityConstants.NICKNAME); String username = MapUtil.getStr(map, SecurityConstants.DETAILS_USERNAME); Integer id = MapUtil.getInt(map, SecurityConstants.DETAILS_USER_ID); Integer deptId = MapUtil.getInt(map, SecurityConstants.DETAILS_DEPT_ID); Integer tenantId = MapUtil.getInt(map, SecurityConstants.DETAILS_TENANT_ID); String phone = MapUtil.getStr(map, SecurityConstants.DETAILS_PHONE); String avatar = MapUtil.getStr(map, SecurityConstants.DETAILS_AVATAR); - PigxUser user = new PigxUser(id, deptId, phone, avatar, tenantId, username, N_A, true, true, true, true, - authorities); + PigxUser user = new PigxUser(nickname, name, email, id, deptId, phone, avatar, tenantId, username, N_A, + true, true, true, true, authorities); return new UsernamePasswordAuthenticationToken(user, N_A, authorities); } return null; @@ -111,7 +124,7 @@ public class PigxUserAuthenticationConverter implements UserAuthenticationConver log.warn("请求头中的租户ID({})和用户的租户ID({})不一致", headerValue, userValue); // TODO: 不要提示租户ID不对,可能被穷举 throw new PigxAuth2Exception(PigxSecurityMessageSourceUtil.getAccessor().getMessage( - "AbstractUserDetailsAuthenticationProvider.badTenantId", new Object[] { headerValue }, + "AbstractUserDetailsAuthenticationProvider.badTenantId", new Object[]{headerValue}, "Bad tenant ID")); } } diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUser.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUser.java index 50928bd0b..be852ad08 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUser.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUser.java @@ -65,13 +65,33 @@ public class PigxUser extends User { @Getter private Integer tenantId; + /** + * 拓展字段:昵称 + */ + @Getter + private String nickname; + + /** + * 拓展字段:姓名 + */ + @Getter + private String name; + + /** + * 拓展字段:邮箱 + */ + @Getter + private String email; + /** * Construct the User with the details required by * {@link DaoAuthenticationProvider}. * @param id 用户ID * @param deptId 部门ID * @param tenantId 租户ID - * @param username the username presented to the + * @param nickname 昵称 + * @param name 姓名 + * @param email 邮箱 the username presented to the * DaoAuthenticationProvider * @param password the password that should be presented to the * DaoAuthenticationProvider @@ -86,7 +106,8 @@ public class PigxUser extends User { * a parameter or as an element in the GrantedAuthority collection */ @JsonCreator - public PigxUser(@JsonProperty("id") Integer id, @JsonProperty("deptId") Integer deptId, + public PigxUser(@JsonProperty("nickname") String nickname, @JsonProperty("name") String name, + @JsonProperty("email") String email, @JsonProperty("id") Integer id, @JsonProperty("deptId") Integer deptId, @JsonProperty("phone") String phone, @JsonProperty("avatar") String avatar, @JsonProperty("tenantId") Integer tenantId, @JsonProperty("username") String username, @JsonProperty("password") String password, @JsonProperty("enabled") boolean enabled, @@ -100,6 +121,9 @@ public class PigxUser extends User { this.phone = phone; this.avatar = avatar; this.tenantId = tenantId; + this.nickname = nickname; + this.name = name; + this.email = email; } } diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUserDetailsServiceImpl.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUserDetailsServiceImpl.java index 44c417a91..fedcb2b79 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUserDetailsServiceImpl.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUserDetailsServiceImpl.java @@ -113,8 +113,9 @@ public class PigxUserDetailsServiceImpl implements PigxUserDetailsService { boolean enabled = StrUtil.equals(user.getLockFlag(), CommonConstants.STATUS_NORMAL); // 构造security用户 - return new PigxUser(user.getUserId(), user.getDeptId(), user.getPhone(), user.getAvatar(), user.getTenantId(), - user.getUsername(), SecurityConstants.BCRYPT + user.getPassword(), enabled, true, true, + return new PigxUser(user.getNickname(), user.getName(), user.getEmail(), user.getUserId(), user.getDeptId(), + user.getPhone(), user.getAvatar(), user.getTenantId(), user.getUsername(), + SecurityConstants.BCRYPT + user.getPassword(), enabled, true, true, !CommonConstants.STATUS_LOCK.equals(user.getLockFlag()), authorities); } diff --git a/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/kit/OAuthKit.java b/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/kit/OAuthKit.java index ada75a05a..e39879987 100644 --- a/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/kit/OAuthKit.java +++ b/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/kit/OAuthKit.java @@ -3,6 +3,7 @@ package com.pig4cloud.pigx.test.kit; import com.pig4cloud.pigx.common.core.util.SpringContextHolder; import org.springframework.http.HttpHeaders; import org.springframework.security.oauth2.client.OAuth2ClientContext; +import org.springframework.security.oauth2.common.OAuth2AccessToken; import org.springframework.test.web.servlet.request.RequestPostProcessor; /** @@ -21,7 +22,8 @@ public class OAuthKit { return mockRequest -> { OAuth2ClientContext clientContext = SpringContextHolder.getBean(OAuth2ClientContext.class); String token = clientContext.getAccessToken().getValue(); - mockRequest.addHeader(HttpHeaders.AUTHORIZATION, String.format("Bearer: %s", token)); + mockRequest.addHeader(HttpHeaders.AUTHORIZATION, + String.format("%s %s", OAuth2AccessToken.BEARER_TYPE, token)); return mockRequest; }; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUser.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUser.java index 6b1f32c17..7353649b5 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUser.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUser.java @@ -149,4 +149,22 @@ public class SysUser implements Serializable { @ApiModelProperty(value = "开源中国唯一标识") private String oscId; + /** + * 昵称 + */ + @ApiModelProperty(value = "昵称") + private String nickname; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + private String name; + + /** + * 邮箱 + */ + @ApiModelProperty(value = "邮箱") + private String email; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java index 11970fbe0..dcbe2421c 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java @@ -40,6 +40,27 @@ public class UserExcelVO implements Serializable { @ExcelProperty("手机号") private String phone; + /** + * 手机号 + */ + @NotBlank(message = "昵称不能为空") + @ExcelProperty("昵称") + private String nickname; + + /** + * 手机号 + */ + @NotBlank(message = "姓名不能为空") + @ExcelProperty("姓名") + private String name; + + /** + * 手机号 + */ + @NotBlank(message = "邮箱不能为空") + @ExcelProperty("邮箱") + private String email; + /** * 部门名称 */ diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserVO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserVO.java index 5215d3b51..771597691 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserVO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserVO.java @@ -137,4 +137,22 @@ public class UserVO implements Serializable { @ApiModelProperty(value = "拥有的角色列表") private List roleList; + /** + * 昵称 + */ + @ApiModelProperty(value = "昵称") + private String nickname; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + private String name; + + /** + * 邮箱 + */ + @ApiModelProperty(value = "邮箱") + private String email; + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java index cb3a59fb6..ba4403726 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java @@ -172,6 +172,9 @@ public class SysUserServiceImpl extends ServiceImpl impl sysUser.setPhone(userDto.getPhone()); sysUser.setUserId(userVO.getUserId()); sysUser.setAvatar(userDto.getAvatar()); + sysUser.setNickname(userDto.getNickname()); + sysUser.setName(userDto.getName()); + sysUser.setEmail(userDto.getEmail()); return R.ok(this.updateById(sysUser)); } @@ -307,6 +310,9 @@ public class SysUserServiceImpl extends ServiceImpl impl UserDTO userDTO = new UserDTO(); userDTO.setUsername(excel.getUsername()); userDTO.setPhone(excel.getPhone()); + userDTO.setNickname(excel.getNickname()); + userDTO.setName(excel.getName()); + userDTO.setEmail(excel.getEmail()); // 批量导入初始密码为手机号 userDTO.setPassword(userDTO.getPhone()); // 根据部门名称查询部门ID diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/file/user.xlsx b/pigx-upms/pigx-upms-biz/src/main/resources/file/user.xlsx index 6606103523a9277551c8a5e2464edffd3d87111c..40cf429c863accb112fea3ba594a9cdff8734744 100644 GIT binary patch delta 4906 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 QiAje@VI{>@W%}#-Kb{ZoumAu6 diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserMapper.xml b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserMapper.xml index 1820f8fe0..1b71bdce4 100644 --- a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserMapper.xml +++ b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserMapper.xml @@ -37,6 +37,9 @@ + + + @@ -93,7 +96,10 @@ - u.user_id, + u + . + user_id + , u.username, u.password, u.salt, @@ -114,29 +120,29 @@ r.update_time rupdate_time, d.name dept_name, d.dept_id - + + SELECT + + FROM + sys_user u + LEFT JOIN sys_user_role ur ON ur.user_id = u.user_id + LEFT JOIN sys_role r ON r.role_id = ur.role_id + LEFT JOIN sys_dept d ON d.dept_id = u.dept_id + WHERE + u.user_id = #{id} +