Commit 6bc3bbd70679ec4e690839af3bdff07e5aee36a6

Authored by 云中非
1 parent 4adec0c9

refactor:小程序登录JWT信息完善

@@ -14,6 +14,7 @@ import org.thingsboard.server.common.data.id.UserId; @@ -14,6 +14,7 @@ import org.thingsboard.server.common.data.id.UserId;
14 import org.thingsboard.server.common.data.security.UserCredentials; 14 import org.thingsboard.server.common.data.security.UserCredentials;
15 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; 15 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
16 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; 16 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
  17 +import org.thingsboard.server.common.data.yunteng.dto.UserDTO;
17 import org.thingsboard.server.common.data.yunteng.dto.YtThirdUserDTO; 18 import org.thingsboard.server.common.data.yunteng.dto.YtThirdUserDTO;
18 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; 19 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum;
19 import org.thingsboard.server.common.data.yunteng.enums.ThirdPlatformEnum; 20 import org.thingsboard.server.common.data.yunteng.enums.ThirdPlatformEnum;
@@ -64,8 +65,8 @@ public class YtThirdPlatformController extends BaseController { @@ -64,8 +65,8 @@ public class YtThirdPlatformController extends BaseController {
64 @ApiOperation("绑定") 65 @ApiOperation("绑定")
65 public JwtTokenPair saveOrUpdateAlarmProfile( 66 public JwtTokenPair saveOrUpdateAlarmProfile(
66 @Validated @RequestBody YtThirdUserDTO dto) throws ThingsboardException { 67 @Validated @RequestBody YtThirdUserDTO dto) throws ThingsboardException {
67 - String tbUserId = thirdService.saveOrUpdate(dto);  
68 - return buildJwtToken(tbUserId); 68 + UserDTO userDto = thirdService.saveOrUpdate(dto);
  69 + return buildJwtToken(userDto);
69 } 70 }
70 71
71 @DeleteMapping 72 @DeleteMapping
@@ -80,22 +81,24 @@ public class YtThirdPlatformController extends BaseController { @@ -80,22 +81,24 @@ public class YtThirdPlatformController extends BaseController {
80 @ApiOperation("第三方登录") 81 @ApiOperation("第三方登录")
81 public JwtTokenPair login(@PathVariable("thirdId") String thirdId) 82 public JwtTokenPair login(@PathVariable("thirdId") String thirdId)
82 throws ThingsboardException { 83 throws ThingsboardException {
83 - String tbUserId = thirdService.login(thirdId);  
84 - return buildJwtToken(tbUserId); 84 + UserDTO userDto = thirdService.login(thirdId);
  85 + return buildJwtToken(userDto);
85 } 86 }
86 87
87 @NotNull 88 @NotNull
88 - private JwtTokenPair buildJwtToken(String tbUserId) { 89 + private JwtTokenPair buildJwtToken(UserDTO userDto) {
89 String accessToken = ""; 90 String accessToken = "";
90 String refreshToken = ""; 91 String refreshToken = "";
91 - if (StringUtils.isNotEmpty(tbUserId)) {  
92 - UserId userId = new UserId(UUID.fromString(tbUserId)); 92 + if (userDto != null && StringUtils.isNotEmpty(userDto.getTbUser())) {
  93 + UserId userId = new UserId(UUID.fromString(userDto.getTbUser()));
93 User user = userService.findUserById(null, userId); 94 User user = userService.findUserById(null, userId);
94 UserCredentials credentials = userService.findUserCredentialsByUserId(user.getTenantId(), userId); 95 UserCredentials credentials = userService.findUserCredentialsByUserId(user.getTenantId(), userId);
95 String email = user.getEmail(); 96 String email = user.getEmail();
96 int emailIndex = email.indexOf("@"); 97 int emailIndex = email.indexOf("@");
97 UserPrincipal principal = new UserPrincipal(UserPrincipal.Type.USER_NAME, emailIndex > 0 ? email.substring(0, emailIndex) : email); 98 UserPrincipal principal = new UserPrincipal(UserPrincipal.Type.USER_NAME, emailIndex > 0 ? email.substring(0, emailIndex) : email);
98 SecurityUser securityUser = new SecurityUser(user, credentials.isEnabled(), principal); 99 SecurityUser securityUser = new SecurityUser(user, credentials.isEnabled(), principal);
  100 + securityUser.setCurrentUserId(userDto.getId());
  101 + securityUser.setPlatformUserName(userDto.getUsername());
99 accessToken = tokenFactory.createAccessJwtToken(securityUser).getToken(); 102 accessToken = tokenFactory.createAccessJwtToken(securityUser).getToken();
100 refreshToken = refreshTokenRepository.requestRefreshToken(securityUser).getToken(); 103 refreshToken = refreshTokenRepository.requestRefreshToken(securityUser).getToken();
101 104
@@ -6,26 +6,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage; @@ -6,26 +6,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
6 import com.fasterxml.jackson.databind.JsonNode; 6 import com.fasterxml.jackson.databind.JsonNode;
7 import lombok.RequiredArgsConstructor; 7 import lombok.RequiredArgsConstructor;
8 import lombok.extern.slf4j.Slf4j; 8 import lombok.extern.slf4j.Slf4j;
9 -import org.springframework.beans.factory.annotation.Autowired;  
10 import org.springframework.security.authentication.BadCredentialsException; 9 import org.springframework.security.authentication.BadCredentialsException;
11 -import org.springframework.security.authentication.InsufficientAuthenticationException;  
12 -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;  
13 import org.springframework.security.core.userdetails.UsernameNotFoundException; 10 import org.springframework.security.core.userdetails.UsernameNotFoundException;
14 import org.springframework.security.crypto.password.PasswordEncoder; 11 import org.springframework.security.crypto.password.PasswordEncoder;
15 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
16 import org.springframework.transaction.annotation.Transactional; 13 import org.springframework.transaction.annotation.Transactional;
17 import org.thingsboard.server.common.data.StringUtils; 14 import org.thingsboard.server.common.data.StringUtils;
18 -import org.thingsboard.server.common.data.audit.ActionType;  
19 -import org.thingsboard.server.common.data.id.EntityId;  
20 -import org.thingsboard.server.common.data.id.TenantId;  
21 -import org.thingsboard.server.common.data.id.UserId;  
22 -import org.thingsboard.server.common.data.security.Authority;  
23 import org.thingsboard.server.common.data.yunteng.core.cache.CacheUtils; 15 import org.thingsboard.server.common.data.yunteng.core.cache.CacheUtils;
24 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException; 16 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
25 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; 17 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
26 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; 18 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
  19 +import org.thingsboard.server.common.data.yunteng.dto.UserDTO;
27 import org.thingsboard.server.common.data.yunteng.dto.UserDetailsDTO; 20 import org.thingsboard.server.common.data.yunteng.dto.UserDetailsDTO;
28 -import org.thingsboard.server.common.data.yunteng.dto.YtOpinionDTO;  
29 import org.thingsboard.server.common.data.yunteng.dto.YtThirdUserDTO; 21 import org.thingsboard.server.common.data.yunteng.dto.YtThirdUserDTO;
30 import org.thingsboard.server.common.data.yunteng.dto.request.CodeTTL; 22 import org.thingsboard.server.common.data.yunteng.dto.request.CodeTTL;
31 import org.thingsboard.server.common.data.yunteng.enums.MessageTypeEnum; 23 import org.thingsboard.server.common.data.yunteng.enums.MessageTypeEnum;
@@ -33,17 +25,14 @@ import org.thingsboard.server.common.data.yunteng.enums.MsgTemplatePurposeEnum; @@ -33,17 +25,14 @@ import org.thingsboard.server.common.data.yunteng.enums.MsgTemplatePurposeEnum;
33 import org.thingsboard.server.common.data.yunteng.enums.ThirdPlatformEnum; 25 import org.thingsboard.server.common.data.yunteng.enums.ThirdPlatformEnum;
34 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData; 26 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData;
35 import org.thingsboard.server.dao.yunteng.entities.User; 27 import org.thingsboard.server.dao.yunteng.entities.User;
36 -import org.thingsboard.server.dao.yunteng.entities.YtOpinionEntity;  
37 import org.thingsboard.server.dao.yunteng.entities.YtThirdUserEntity; 28 import org.thingsboard.server.dao.yunteng.entities.YtThirdUserEntity;
38 import org.thingsboard.server.dao.yunteng.mapper.UserMapper; 29 import org.thingsboard.server.dao.yunteng.mapper.UserMapper;
39 -import org.thingsboard.server.dao.yunteng.mapper.YtOpinionMapper;  
40 import org.thingsboard.server.dao.yunteng.mapper.YtThirdPlatformMapper; 30 import org.thingsboard.server.dao.yunteng.mapper.YtThirdPlatformMapper;
41 -import org.thingsboard.server.dao.yunteng.service.*; 31 +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
  32 +import org.thingsboard.server.dao.yunteng.service.YtThirdPlatformService;
42 33
43 -import java.util.List;  
44 import java.util.Objects; 34 import java.util.Objects;
45 import java.util.Optional; 35 import java.util.Optional;
46 -import java.util.UUID;  
47 36
48 import static org.thingsboard.server.common.data.yunteng.constant.FastIotConstants.CacheConfigKey.MOBILE_LOGIN_SMS_CODE; 37 import static org.thingsboard.server.common.data.yunteng.constant.FastIotConstants.CacheConfigKey.MOBILE_LOGIN_SMS_CODE;
49 import static org.thingsboard.server.common.data.yunteng.constant.FastIotConstants.DEFAULT_DELIMITER; 38 import static org.thingsboard.server.common.data.yunteng.constant.FastIotConstants.DEFAULT_DELIMITER;
@@ -71,7 +60,7 @@ public class YtThirdPlatformServiceImpl extends AbstractBaseService<YtThirdPlatf @@ -71,7 +60,7 @@ public class YtThirdPlatformServiceImpl extends AbstractBaseService<YtThirdPlatf
71 60
72 @Override 61 @Override
73 @Transactional(rollbackFor = Exception.class) 62 @Transactional(rollbackFor = Exception.class)
74 - public String saveOrUpdate(YtThirdUserDTO dto) { 63 + public UserDTO saveOrUpdate(YtThirdUserDTO dto) {
75 User user = null; 64 User user = null;
76 switch (dto.getLoginMethod()) { 65 switch (dto.getLoginMethod()) {
77 case PHONE: 66 case PHONE:
@@ -99,7 +88,7 @@ public class YtThirdPlatformServiceImpl extends AbstractBaseService<YtThirdPlatf @@ -99,7 +88,7 @@ public class YtThirdPlatformServiceImpl extends AbstractBaseService<YtThirdPlatf
99 dto.setId(oldVideo.getId()); 88 dto.setId(oldVideo.getId());
100 baseMapper.updateById(dto.getEntity(YtThirdUserEntity.class)); 89 baseMapper.updateById(dto.getEntity(YtThirdUserEntity.class));
101 } 90 }
102 - return user.getTbUser(); 91 + return user.getDTO(UserDTO.class);
103 } 92 }
104 93
105 /** 94 /**
@@ -177,8 +166,9 @@ public class YtThirdPlatformServiceImpl extends AbstractBaseService<YtThirdPlatf @@ -177,8 +166,9 @@ public class YtThirdPlatformServiceImpl extends AbstractBaseService<YtThirdPlatf
177 } 166 }
178 167
179 @Override 168 @Override
180 - public String login(String thirdUserId) {  
181 - return baseMapper.login(thirdUserId); 169 + public UserDTO login(String thirdUserId) {
  170 + return baseMapper.login(thirdUserId)
  171 + .getDTO(UserDTO.class);
182 } 172 }
183 173
184 @Override 174 @Override
1 package org.thingsboard.server.dao.yunteng.mapper; 1 package org.thingsboard.server.dao.yunteng.mapper;
2 2
3 import com.baomidou.mybatisplus.core.mapper.BaseMapper; 3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 -import com.baomidou.mybatisplus.core.metadata.IPage;  
5 import org.apache.ibatis.annotations.Mapper; 4 import org.apache.ibatis.annotations.Mapper;
6 import org.apache.ibatis.annotations.Param; 5 import org.apache.ibatis.annotations.Param;
7 -import org.thingsboard.server.common.data.yunteng.dto.YtVideoDTO; 6 +import org.thingsboard.server.dao.yunteng.entities.User;
8 import org.thingsboard.server.dao.yunteng.entities.YtThirdUserEntity; 7 import org.thingsboard.server.dao.yunteng.entities.YtThirdUserEntity;
9 8
10 -import java.util.List;  
11 -  
12 /** 9 /**
13 * @author Administrator 10 * @author Administrator
14 */ 11 */
@@ -20,5 +17,5 @@ public interface YtThirdPlatformMapper extends BaseMapper<YtThirdUserEntity> { @@ -20,5 +17,5 @@ public interface YtThirdPlatformMapper extends BaseMapper<YtThirdUserEntity> {
20 * @param thirdId 17 * @param thirdId
21 * @return 18 * @return
22 */ 19 */
23 - String login(@Param("thirdId") String thirdId); 20 + User login(@Param("thirdId") String thirdId);
24 } 21 }
@@ -3,34 +3,36 @@ package org.thingsboard.server.dao.yunteng.service; @@ -3,34 +3,36 @@ package org.thingsboard.server.dao.yunteng.service;
3 import com.baomidou.mybatisplus.core.metadata.IPage; 3 import com.baomidou.mybatisplus.core.metadata.IPage;
4 import com.fasterxml.jackson.databind.JsonNode; 4 import com.fasterxml.jackson.databind.JsonNode;
5 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; 5 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
6 -import org.thingsboard.server.common.data.yunteng.dto.YtOpinionDTO; 6 +import org.thingsboard.server.common.data.yunteng.dto.UserDTO;
7 import org.thingsboard.server.common.data.yunteng.dto.YtThirdUserDTO; 7 import org.thingsboard.server.common.data.yunteng.dto.YtThirdUserDTO;
8 import org.thingsboard.server.common.data.yunteng.enums.ThirdPlatformEnum; 8 import org.thingsboard.server.common.data.yunteng.enums.ThirdPlatformEnum;
9 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData; 9 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData;
10 -import org.thingsboard.server.dao.yunteng.entities.YtOpinionEntity; 10 +import org.thingsboard.server.dao.yunteng.entities.User;
11 import org.thingsboard.server.dao.yunteng.entities.YtThirdUserEntity; 11 import org.thingsboard.server.dao.yunteng.entities.YtThirdUserEntity;
12 12
13 /** 13 /**
14 * 第三方平台用户管理相关接口 14 * 第三方平台用户管理相关接口
15 * 例如:微信小程序、钉钉等。 15 * 例如:微信小程序、钉钉等。
  16 + *
16 * @author Administrator 17 * @author Administrator
17 */ 18 */
18 public interface YtThirdPlatformService extends BaseService<YtThirdUserEntity> { 19 public interface YtThirdPlatformService extends BaseService<YtThirdUserEntity> {
19 20
20 /** 21 /**
21 - * @param pageInfrom 分页配置信息  
22 - * @param name 第三方平台用户昵称 22 + * @param pageInfrom 分页配置信息
  23 + * @param name 第三方平台用户昵称
23 * @return 24 * @return
24 */ 25 */
25 - YtPageData<YtThirdUserDTO> pageDatas(IPage<YtThirdUserEntity> pageInfrom, ThirdPlatformEnum platformName,String name); 26 + YtPageData<YtThirdUserDTO> pageDatas(IPage<YtThirdUserEntity> pageInfrom, ThirdPlatformEnum platformName, String name);
26 27
27 28
28 -  
29 - /** 第三方平台用户与系统用户绑定 29 + /**
  30 + * 第三方平台用户与系统用户绑定
  31 + *
30 * @param dto 32 * @param dto
31 * @return 33 * @return
32 */ 34 */
33 - String saveOrUpdate(YtThirdUserDTO dto); 35 + UserDTO saveOrUpdate(YtThirdUserDTO dto);
34 36
35 /** 37 /**
36 * @param deleteDTO 38 * @param deleteDTO
@@ -40,16 +42,16 @@ public interface YtThirdPlatformService extends BaseService<YtThirdUserEntity> { @@ -40,16 +42,16 @@ public interface YtThirdPlatformService extends BaseService<YtThirdUserEntity> {
40 42
41 /** 43 /**
42 * 第三方登录 44 * 第三方登录
  45 + *
43 * @param thirdUserId 46 * @param thirdUserId
44 * @return 47 * @return
45 */ 48 */
46 - String login(String thirdUserId);  
47 -  
48 - 49 + UserDTO login(String thirdUserId);
49 50
50 51
51 /** 52 /**
52 * 访问令牌 53 * 访问令牌
  54 + *
53 * @param appKey 55 * @param appKey
54 * @param appSecret 56 * @param appSecret
55 * @return 57 * @return
@@ -58,10 +60,11 @@ public interface YtThirdPlatformService extends BaseService<YtThirdUserEntity> { @@ -58,10 +60,11 @@ public interface YtThirdPlatformService extends BaseService<YtThirdUserEntity> {
58 60
59 /** 61 /**
60 * 推送第三方程序消息 62 * 推送第三方程序消息
  63 + *
61 * @param receiver 64 * @param receiver
62 * @param message 65 * @param message
63 * @return 66 * @return
64 */ 67 */
65 - JsonNode message(String receiver,JsonNode message); 68 + JsonNode message(String receiver, JsonNode message);
66 69
67 } 70 }
@@ -3,8 +3,8 @@ @@ -3,8 +3,8 @@
3 3
4 <mapper namespace="org.thingsboard.server.dao.yunteng.mapper.YtThirdPlatformMapper"> 4 <mapper namespace="org.thingsboard.server.dao.yunteng.mapper.YtThirdPlatformMapper">
5 5
6 - <select id="login" resultType="string">  
7 - SELECT sus.tb_user 6 + <select id="login" resultType="org.thingsboard.server.dao.yunteng.entities.User">
  7 + SELECT sus.*
8 FROM iotfs_third_user base 8 FROM iotfs_third_user base
9 LEFT JOIN sys_user sus ON base.app_user_id = sus.id 9 LEFT JOIN sys_user sus ON base.app_user_id = sus.id
10 <where> 10 <where>