From 986b146c88bb298d2d42baca8a01af72a239d9ae Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sat, 30 Nov 2019 21:56:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A0=E5=85=A5=E6=98=B5?= =?UTF-8?q?=E7=A7=B0=E4=B8=8E=E6=80=A7=E5=88=AB=E5=AD=97=E6=AE=B5=EF=BC=8C?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E5=8F=AF=E4=BF=AE=E6=94=B9=E5=9F=BA=E6=9C=AC=E8=B5=84=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/security/config/SecurityProperties.java | 5 +---- .../modules/security/rest/AuthController.java | 3 +-- .../modules/security/security/TokenProvider.java | 9 ++------- .../modules/security/security/vo/AuthUser.java | 2 -- .../modules/security/security/vo/JwtUser.java | 5 ++++- .../modules/security/security/vo/OnlineUser.java | 2 ++ .../modules/security/service/OnlineUserService.java | 2 +- .../security/service/UserDetailsServiceImpl.java | 2 ++ .../me/zhengjie/modules/system/domain/User.java | 7 +++++++ .../modules/system/rest/UserController.java | 12 ++++++++++++ .../modules/system/service/UserService.java | 6 ++++++ .../modules/system/service/dto/UserDto.java | 4 ++++ .../system/service/dto/UserQueryCriteria.java | 2 +- .../system/service/impl/UserServiceImpl.java | 13 +++++++++++++ .../src/main/resources/config/application-dev.yml | 6 ++---- .../src/main/resources/config/application-prod.yml | 8 +++----- sql/eladmin.sql | 3 --- 17 files changed, 61 insertions(+), 30 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java index d8688e74..65aaca18 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java @@ -24,12 +24,9 @@ public class SecurityProperties { /** 必须使用最少88位的Base64对该令牌进行编码 */ private String base64Secret; - /** 令牌过期时间 此处单位/秒 */ + /** 令牌过期时间 此处单位/毫秒 */ private Long tokenValidityInSeconds; - /** 记住我模式下的令牌过期时间 此处单位/毫秒 */ - private Long tokenValidityInSecondsForRememberMe; - /** 在线用户 key,根据 key 查询 redis 中在线用户的数据 */ private String onlineKey; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java index edea9296..c2fe7d6c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java @@ -80,9 +80,8 @@ public class AuthController { Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); SecurityContextHolder.getContext().setAuthentication(authentication); - boolean rememberMe = (authUser.getRememberMe() == null) ? false : authUser.getRememberMe(); // 生成令牌 - String token = tokenProvider.createToken(authentication, rememberMe); + String token = tokenProvider.createToken(authentication); final JwtUser jwtUser = (JwtUser) authentication.getPrincipal(); // 保存在线信息 onlineUserService.save(jwtUser, token, request); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java index 30e2059d..fb19eb96 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java @@ -41,18 +41,13 @@ public class TokenProvider implements InitializingBean { this.key = Keys.hmacShaKeyFor(keyBytes); } - public String createToken(Authentication authentication, boolean rememberMe) { + public String createToken(Authentication authentication) { String authorities = authentication.getAuthorities().stream() .map(GrantedAuthority::getAuthority) .collect(Collectors.joining(",")); long now = (new Date()).getTime(); - Date validity; - if (rememberMe) { - validity = new Date(now + properties.getTokenValidityInSecondsForRememberMe()); - } else { - validity = new Date(now + properties.getTokenValidityInSeconds()); - } + Date validity = new Date(now + properties.getTokenValidityInSeconds()); return Jwts.builder() .setSubject(authentication.getName()) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/AuthUser.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/AuthUser.java index 4c273fb7..01eac18c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/AuthUser.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/AuthUser.java @@ -19,8 +19,6 @@ public class AuthUser { @NotBlank private String password; - private Boolean rememberMe; - private String code; private String uuid = ""; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/JwtUser.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/JwtUser.java index 48c27567..e73369c7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/JwtUser.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/JwtUser.java @@ -18,11 +18,14 @@ import java.util.stream.Collectors; @AllArgsConstructor public class JwtUser implements UserDetails { - @JsonIgnore private final Long id; private final String username; + private final String nickName; + + private final String sex; + @JsonIgnore private final String password; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/OnlineUser.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/OnlineUser.java index e1097890..b84c94f3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/OnlineUser.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/vo/OnlineUser.java @@ -16,6 +16,8 @@ public class OnlineUser { private String userName; + private String nickName; + private String job; private String browser; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java index 4c318410..8957e41a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/OnlineUserService.java @@ -39,7 +39,7 @@ public class OnlineUserService { String address = StringUtils.getCityInfo(ip); OnlineUser onlineUser = null; try { - onlineUser = new OnlineUser(jwtUser.getUsername(), job, browser , ip, address, EncryptUtils.desEncrypt(token), new Date()); + onlineUser = new OnlineUser(jwtUser.getUsername(), jwtUser.getNickName(), job, browser , ip, address, EncryptUtils.desEncrypt(token), new Date()); } catch (Exception e) { e.printStackTrace(); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java index 7bbf5013..5d7df12a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java @@ -46,6 +46,8 @@ public class UserDetailsServiceImpl implements UserDetailsService { return new JwtUser( user.getId(), user.getUsername(), + user.getNickName(), + user.getSex(), user.getPassword(), user.getAvatar(), user.getEmail(), diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java index 678a3740..f5976b21 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java @@ -32,6 +32,13 @@ public class User implements Serializable { @Column(unique = true) private String username; + /** 用户昵称 */ + @NotBlank + private String nickName; + + /** 性别 */ + private String sex; + @OneToOne @JoinColumn(name = "avatar_id") private UserAvatar userAvatar; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index bc3bb65c..d42d82b3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -119,6 +119,18 @@ public class UserController { return new ResponseEntity(HttpStatus.NO_CONTENT); } + @Log("修改用户:个人中心") + @ApiOperation("修改用户:个人中心") + @PutMapping(value = "center") + public ResponseEntity center(@Validated(User.Update.class) @RequestBody User resources){ + UserDto userDto = userService.findByName(SecurityUtils.getUsername()); + if(!resources.getId().equals(userDto.getId())){ + throw new BadRequestException("不能修改他人资料"); + } + userService.updateCenter(resources); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + @Log("删除用户") @ApiOperation("删除用户") @DeleteMapping(value = "/{id}") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java index ee4ed0ff..7a19964b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java @@ -90,4 +90,10 @@ public interface UserService { * @throws IOException / */ void download(List queryAll, HttpServletResponse response) throws IOException; + + /** + * 用户自助修改资料 + * @param resources / + */ + void updateCenter(User resources); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java index 456a02ad..536b574a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java @@ -20,6 +20,10 @@ public class UserDto implements Serializable { private String username; + private String nickName; + + private String sex; + private String avatar; private String email; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java index 47a4cff1..ed2fe3b3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java @@ -20,7 +20,7 @@ public class UserQueryCriteria implements Serializable { @Query(propName = "id", type = Query.Type.IN, joinName = "dept") private Set deptIds; - @Query(blurry = "email,username") + @Query(blurry = "email,username,nickName") private String blurry; @Query diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 88b85a00..931dffd9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -127,6 +127,19 @@ public class UserServiceImpl implements UserService { user.setDept(resources.getDept()); user.setJob(resources.getJob()); user.setPhone(resources.getPhone()); + user.setNickName(resources.getNickName()); + user.setSex(resources.getSex()); + userRepository.save(user); + } + + @Override + @CacheEvict(allEntries = true) + @Transactional(rollbackFor = Exception.class) + public void updateCenter(User resources) { + User user = userRepository.findById(resources.getId()).orElseGet(User::new); + user.setNickName(resources.getNickName()); + user.setPhone(resources.getPhone()); + user.setSex(resources.getSex()); userRepository.save(user); } diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index b19f3017..353ed531 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -44,14 +44,12 @@ spring: #jwt jwt: header: Authorization - # 令牌前缀,主要最后留个空格 + # 令牌前缀 token-start-with: Bearer # 必须使用最少88位的Base64对该令牌进行编码 base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= - # 令牌过期时间 此处单位/秒 ,默认4小时 + # 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html token-validity-in-seconds: 14400000 - # 记住我模式下的令牌过期时间 此处单位/毫秒 ,默认1天 - token-validity-in-seconds-for-remember-me: 86400000 # 在线用户key online-key: online-token # 验证码 diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index 386e3528..f9017058 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -46,14 +46,12 @@ spring: #jwt jwt: header: Authorization - # 令牌前缀,主要最后留个空格 + # 令牌前缀 token-start-with: Bearer # 必须使用最少88位的Base64对该令牌进行编码 base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= - # 令牌过期时间 此处单位/秒 ,默认4小时 - token-validity-in-seconds: 14400000 - # 记住我模式下的令牌过期时间 此处单位/毫秒 ,默认1天 - token-validity-in-seconds-for-remember-me: 86400000 + # 令牌过期时间 此处单位/毫秒 ,默认2小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html + token-validity-in-seconds: 7200000 # 在线用户key online-key: online-token # 验证码 diff --git a/sql/eladmin.sql b/sql/eladmin.sql index 781ddd0d..81637337 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -257,7 +257,6 @@ INSERT INTO `menu` VALUES (3, b'0', '角色管理', 'system/role/index', 1, 3, ' INSERT INTO `menu` VALUES (5, b'0', '菜单管理', 'system/menu/index', 1, 5, 'menu', 'menu', b'0', b'0', 'Menu', '2018-12-18 15:17:28', 'menu:list', 1); INSERT INTO `menu` VALUES (6, b'0', '系统监控', NULL, 0, 10, 'monitor', 'monitor', b'0', b'0', NULL, '2018-12-18 15:17:48', NULL, 0); INSERT INTO `menu` VALUES (7, b'0', '操作日志', 'monitor/log/index', 6, 11, 'log', 'logs', b'0', b'0', 'Log', '2018-12-18 15:18:26', NULL, 1); -INSERT INTO `menu` VALUES (8, b'0', '系统缓存', 'monitor/redis/index', 6, 15, 'redis', 'redis', b'0', b'0', 'Redis', '2018-12-18 15:19:01', 'redis:list', 1); INSERT INTO `menu` VALUES (9, b'0', 'SQL监控', 'monitor/sql/index', 6, 18, 'sqlMonitor', 'druid', b'0', b'0', 'Sql', '2018-12-18 15:19:34', NULL, 1); INSERT INTO `menu` VALUES (10, b'0', '组件管理', NULL, 0, 50, 'zujian', 'components', b'0', b'0', NULL, '2018-12-19 13:38:16', NULL, 0); INSERT INTO `menu` VALUES (11, b'0', '图标库', 'components/icons/index', 10, 51, 'icon', 'icon', b'0', b'0', 'Icons', '2018-12-19 13:38:49', NULL, 1); @@ -603,7 +602,6 @@ INSERT INTO `roles_menus` VALUES (3, 1); INSERT INTO `roles_menus` VALUES (5, 1); INSERT INTO `roles_menus` VALUES (6, 1); INSERT INTO `roles_menus` VALUES (7, 1); -INSERT INTO `roles_menus` VALUES (8, 1); INSERT INTO `roles_menus` VALUES (9, 1); INSERT INTO `roles_menus` VALUES (10, 1); INSERT INTO `roles_menus` VALUES (11, 1); @@ -670,7 +668,6 @@ INSERT INTO `roles_menus` VALUES (2, 2); INSERT INTO `roles_menus` VALUES (3, 2); INSERT INTO `roles_menus` VALUES (5, 2); INSERT INTO `roles_menus` VALUES (6, 2); -INSERT INTO `roles_menus` VALUES (8, 2); INSERT INTO `roles_menus` VALUES (9, 2); INSERT INTO `roles_menus` VALUES (10, 2); INSERT INTO `roles_menus` VALUES (11, 2);