作者 朱兆平

add: 新增对接统一认证资源同步接口

@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 </parent> 11 </parent>
12 <groupId>com.tianbo</groupId> 12 <groupId>com.tianbo</groupId>
13 <artifactId>cloud-user-center</artifactId> 13 <artifactId>cloud-user-center</artifactId>
14 - <version>5.0Beta-DataPermission</version> 14 + <version>5.1Beta-DataPermission</version>
15 <name>usercenter</name> 15 <name>usercenter</name>
16 <description>usercenter for springcloud</description> 16 <description>usercenter for springcloud</description>
17 17
@@ -29,6 +29,7 @@ import org.springframework.web.client.RestTemplate; @@ -29,6 +29,7 @@ import org.springframework.web.client.RestTemplate;
29 29
30 import javax.annotation.Resource; 30 import javax.annotation.Resource;
31 import javax.imageio.ImageIO; 31 import javax.imageio.ImageIO;
  32 +import javax.servlet.http.HttpServletRequest;
32 33
33 import java.awt.image.BufferedImage; 34 import java.awt.image.BufferedImage;
34 import java.io.ByteArrayOutputStream; 35 import java.io.ByteArrayOutputStream;
@@ -167,11 +168,13 @@ public class AnonymousController { @@ -167,11 +168,13 @@ public class AnonymousController {
167 */ 168 */
168 ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class); 169 ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
169 String responseBody = responseEntity.getBody(); 170 String responseBody = responseEntity.getBody();
  171 + log.info("[SSO-RESPONSE]-[{}]",responseBody);
170 172
171 try { 173 try {
172 JSONObject jsonObject = JSONObject.parseObject(responseBody); 174 JSONObject jsonObject = JSONObject.parseObject(responseBody);
173 USERS user = parseSSOObject(jsonObject); 175 USERS user = parseSSOObject(jsonObject);
174 if (StringUtils.isNotEmpty(user.getUsername())){ 176 if (StringUtils.isNotEmpty(user.getUsername())){
  177 + log.info("[SSO-USER]-获取到sso用户名-[{}]",user.getUsername());
175 USERS loginUser = userService.loadByUsername(user.getUsername()); 178 USERS loginUser = userService.loadByUsername(user.getUsername());
176 if (loginUser!=null && loginUser.getUserId()>-1){ 179 if (loginUser!=null && loginUser.getUserId()>-1){
177 log.info("[SSO-AUTH-TICKET]-从认证中心获取到用户[{}]信息,开始设置系统登录认证token",user.getUsername()); 180 log.info("[SSO-AUTH-TICKET]-从认证中心获取到用户[{}]信息,开始设置系统登录认证token",user.getUsername());
@@ -186,11 +189,11 @@ public class AnonymousController { @@ -186,11 +189,11 @@ public class AnonymousController {
186 user.setUserStatus(loginUser.getUserStatus()); 189 user.setUserStatus(loginUser.getUserStatus());
187 user.setState(loginUser.getState()); 190 user.setState(loginUser.getState());
188 }else { 191 }else {
189 - assert loginUser != null;  
190 - user.setPassword(loginUser.getPassword()); 192 + log.info("[SSO-INSERT]-用户不存在,新增SSO用户");
  193 + user.setPassword("initSSO");
191 user.setUserStatus(2); 194 user.setUserStatus(2);
192 user.setState(true); 195 user.setState(true);
193 - userService.insertSelective(user); 196 + Integer userId = userService.insertSelective(user);
194 } 197 }
195 //设置用户的TOKEN的有效时间,时间配置在配置文件中设置 198 //设置用户的TOKEN的有效时间,时间配置在配置文件中设置
196 int expirationSeconds = 3600*24*7; 199 int expirationSeconds = 3600*24*7;
@@ -206,11 +209,13 @@ public class AnonymousController { @@ -206,11 +209,13 @@ public class AnonymousController {
206 } catch (JSONException e) { 209 } catch (JSONException e) {
207 e.printStackTrace(); 210 e.printStackTrace();
208 log.error("[SSO-AUTH-TICKET-ERR]-单点登录票据解析异常",e); 211 log.error("[SSO-AUTH-TICKET-ERR]-单点登录票据解析异常",e);
  212 + log.info("[SSO-AUTH-TICKET-ERR]-单点登录票据解析异常",e);
209 return new ResultJson("400","单点登录票据解析异常",e.getMessage()); 213 return new ResultJson("400","单点登录票据解析异常",e.getMessage());
210 } 214 }
211 }catch (Exception e){ 215 }catch (Exception e){
212 e.printStackTrace(); 216 e.printStackTrace();
213 log.error("[SSO-AUTH-TICKET-ERR]-单点登录票据认证异常",e); 217 log.error("[SSO-AUTH-TICKET-ERR]-单点登录票据认证异常",e);
  218 + log.info("[SSO-AUTH-TICKET-ERR]-单点登录票据认证异常",e);
214 } 219 }
215 return new ResultJson("401","单点登录票据认证失败"); 220 return new ResultJson("401","单点登录票据认证失败");
216 } 221 }
@@ -237,26 +242,32 @@ public class AnonymousController { @@ -237,26 +242,32 @@ public class AnonymousController {
237 String loginName = attributes.getString(LOGIN_NAME); 242 String loginName = attributes.getString(LOGIN_NAME);
238 String userId = attributes.getString(USER_ID); 243 String userId = attributes.getString(USER_ID);
239 String realName = attributes.getString("USER_NAME"); 244 String realName = attributes.getString("USER_NAME");
240 - String password = attributes.getString("PWD");  
241 - log.info("[SSO-AUTH-TICKET-INFO]-用户:{}/{}",loginName,realName);  
242 - 245 +// String password = attributes.getString("PWD");
243 user.setUsername(loginName); 246 user.setUsername(loginName);
244 - user.setPassword(password); 247 +// user.setPassword(password);
  248 + log.info("[SSO-AUTH-TICKET-INFO]-用户:{}/{}/{}",loginName,realName);
245 // user.setUserId(userId); 249 // user.setUserId(userId);
246 } 250 }
247 } 251 }
248 return user; 252 return user;
249 } 253 }
250 254
  255 + @PostMapping(value = "/ssoUserSynchronization")
  256 + @ResponseBody
  257 + public ResultMessage ssoUserSynchronization(@RequestBody String jsonString, @RequestHeader Map<String,String> headers, HttpServletRequest request) throws Exception{
  258 + log.info("[SSO-USER-SYNCHRONIZATION]-userJson:[{}],headers:[{}]",jsonString,headers);
  259 + return new ResultMessage(200,"资源同步测试成功");
  260 + }
  261 +
251 /** 262 /**
252 * 资源同步 263 * 资源同步
253 * @param map 264 * @param map
254 * @return 265 * @return
255 - * @throws Exception  
256 */ 266 */
257 @PostMapping(value = "/userSynchronization") 267 @PostMapping(value = "/userSynchronization")
258 @ResponseBody 268 @ResponseBody
259 public ResultMessage userSynchronization(@RequestBody Map<String, Object> map){ 269 public ResultMessage userSynchronization(@RequestBody Map<String, Object> map){
  270 + log.info("[SSO-资源同步]-参数打印:\n{}",map.toString());
260 //获取action的值,判断是push数据还是删除数据 271 //获取action的值,判断是push数据还是删除数据
261 String action = map.get("action").toString(); 272 String action = map.get("action").toString();
262 if ("user".equals(map.get("resType").toString())){ 273 if ("user".equals(map.get("resType").toString())){
@@ -277,15 +288,22 @@ public class AnonymousController { @@ -277,15 +288,22 @@ public class AnonymousController {
277 users.setCompanyId(73); 288 users.setCompanyId(73);
278 users.setUpdatetime(new Date()); 289 users.setUpdatetime(new Date());
279 if (StringUtils.isEmpty(users.getUsername())){ 290 if (StringUtils.isEmpty(users.getUsername())){
280 - return new ResultMessage("402","缺少lognin_name字段信息"); 291 + log.info("[资源同步]-缺少lognin_name字段信息");
  292 + return new ResultMessage(400,"缺少lognin_name字段信息");
281 } 293 }
282 if ("push".equals(action)) { 294 if ("push".equals(action)) {
283 if (loginUser != null){ 295 if (loginUser != null){
284 log.info("通过账号为条件更新"); 296 log.info("通过账号为条件更新");
  297 + if ("-1000".equals(userData.getJOB_STATUS())){
  298 + users.setState(false);
  299 + }else {
  300 + users.setState(true);
  301 + }
285 i = userService.updateByUsernameSelective(users); 302 i = userService.updateByUsernameSelective(users);
286 }else { 303 }else {
287 if ( StringUtils.isEmpty(users.getPassword())){ 304 if ( StringUtils.isEmpty(users.getPassword())){
288 - return new ResultMessage("402","缺少pwd字段信息"); 305 + log.info("[资源同步]-缺少pwd字段信息");
  306 + return new ResultMessage(400,"缺少pwd字段信息");
289 } 307 }
290 users.setCreattime(new Date()); 308 users.setCreattime(new Date());
291 log.info("账号统一认证用户信息不存在可以 [新增]"); 309 log.info("账号统一认证用户信息不存在可以 [新增]");
@@ -297,13 +315,13 @@ public class AnonymousController { @@ -297,13 +315,13 @@ public class AnonymousController {
297 i= userId; 315 i= userId;
298 } 316 }
299 }else if ("recycle".equals(action)){ 317 }else if ("recycle".equals(action)){
300 - userService.deleteByUsername(users.getUsername()); 318 + log.info("[资源同步]-接收到用户撤销指令,开始删除用户:{},userid:{}",users.getUsername(),userData.getUSER_ID());
  319 + i= userService.deleteByUsername(users.getUsername());
301 } 320 }
302 -  
303 } 321 }
304 322
305 - return i > 0 ? new ResultMessage("200","资源同步成功"):new ResultMessage("202", "资源同步失败"); 323 + return i > 0 ? new ResultMessage(200,"资源同步成功"):new ResultMessage(200, "资源同步失败");
306 } 324 }
307 - return new ResultMessage("201","不是用户信息"); 325 + return new ResultMessage(200,"不是用户信息");
308 } 326 }
309 } 327 }
@@ -12,11 +12,11 @@ public class ResultMessage implements Serializable { @@ -12,11 +12,11 @@ public class ResultMessage implements Serializable {
12 12
13 private static final long serialVersionUID = 1L; 13 private static final long serialVersionUID = 1L;
14 14
15 - private String resultCode; 15 + private Integer resultCode;
16 16
17 private String resultMessage; 17 private String resultMessage;
18 18
19 - public ResultMessage(String resultCode, String resultMessage) { 19 + public ResultMessage(Integer resultCode, String resultMessage) {
20 this.resultCode = resultCode; 20 this.resultCode = resultCode;
21 this.resultMessage = resultMessage; 21 this.resultMessage = resultMessage;
22 } 22 }
@@ -3,8 +3,10 @@ package com.tianbo.warehouse; @@ -3,8 +3,10 @@ package com.tianbo.warehouse;
3 import com.github.pagehelper.PageInfo; 3 import com.github.pagehelper.PageInfo;
4 import com.tianbo.warehouse.WarehouseApplication; 4 import com.tianbo.warehouse.WarehouseApplication;
5 import com.tianbo.warehouse.model.ROLE; 5 import com.tianbo.warehouse.model.ROLE;
  6 +import com.tianbo.warehouse.model.USERS;
6 import com.tianbo.warehouse.security.CustomUserDetailService; 7 import com.tianbo.warehouse.security.CustomUserDetailService;
7 import com.tianbo.warehouse.service.RoleService; 8 import com.tianbo.warehouse.service.RoleService;
  9 +import com.tianbo.warehouse.service.UserService;
8 import lombok.extern.slf4j.Slf4j; 10 import lombok.extern.slf4j.Slf4j;
9 import org.junit.Test; 11 import org.junit.Test;
10 import org.junit.runner.RunWith; 12 import org.junit.runner.RunWith;
@@ -31,6 +33,9 @@ public class UserTest { @@ -31,6 +33,9 @@ public class UserTest {
31 @Autowired 33 @Autowired
32 RoleService roleService; 34 RoleService roleService;
33 35
  36 + @Autowired
  37 + UserService userService;
  38 +
34 @Test 39 @Test
35 public void contextLoads() { 40 public void contextLoads() {
36 41
@@ -38,4 +43,18 @@ public class UserTest { @@ -38,4 +43,18 @@ public class UserTest {
38 PageInfo<ROLE> all = roleService.findAll(1, 20, "瑞泰", null); 43 PageInfo<ROLE> all = roleService.findAll(1, 20, "瑞泰", null);
39 log.info("ok"); 44 log.info("ok");
40 } 45 }
  46 +
  47 + @Test
  48 + public void useraddTest(){
  49 + USERS user = new USERS();
  50 + user.setUsername("testfor");
  51 + user.setUserface("");
  52 + user.setRealname("测试");
  53 + user.setCompanyId(73);
  54 + user.setCompanyName("wu");
  55 + user.setPassword("ba6dc89141394dc505d5a00747c20d5a7f7a4d9de57405242dc06aed39b0c865");
  56 + user.setUserStatus(2);
  57 + user.setState(true);
  58 + userService.insertSelective(user);
  59 + }
41 } 60 }