Sfoglia il codice sorgente

feat:增加用户企业信息和登录同步

liusw 6 anni fa
parent
commit
cf75af2821

+ 12 - 0
sso-manage-console/src/main/java/com/uas/sso/sso/backend/config/SyncThreadPool.java

@@ -16,6 +16,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
+
+import com.uas.sso.sync.service.SyncUserService;
+import com.uas.sso.sync.service.SyncUserspaceService;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -41,6 +44,12 @@ public class SyncThreadPool {
 
     private final AppDao appDao;
 
+    @Autowired
+    private SyncUserService syncUserService;
+
+    @Autowired
+    private SyncUserspaceService syncUserspaceService;
+
     @Autowired
     public SyncThreadPool(ExecutorService executorService, SyncLogDao syncLogDao, UserDao userDao, AppDao appDao) {
         this.executorService = executorService;
@@ -56,6 +65,7 @@ public class SyncThreadPool {
         if (BackInfoType.BACK_USER_INFO.equals(type)) {
             isBackUser = true;
             urls = getBackUrl(appList, BACK_USER_URL);
+            syncUserService.sendUserToSso(data.getLong("userUU"));
         }
 
         if (BackInfoType.BACK_RELATION_INFO.equals(type)) {
@@ -74,6 +84,7 @@ public class SyncThreadPool {
             if (!CollectionUtils.isEmpty(map)) {
                 data.putAll(map);
             }
+            syncUserspaceService.sendUserspaceToSso(data.getLong("spaceUU"));
         }
 
         final boolean flag = isBackUser;
@@ -81,6 +92,7 @@ public class SyncThreadPool {
             syncToIm(data, message);
 
         }
+
         for (String backUrl : urls) {
             executorService.execute(new Runnable() {
                 @Override

+ 6 - 0
sso-server/src/main/java/com/uas/sso/controller/PersonalRegisterController.java

@@ -17,6 +17,7 @@ import com.uas.sso.logging.RegisterBufferedLogger;
 import com.uas.sso.service.AppService;
 import com.uas.sso.service.PersonalAccountService;
 import com.uas.sso.service.UserService;
+import com.uas.sso.sync.service.SyncSsoService;
 import com.uas.sso.util.CaptchaUtil;
 import com.uas.sso.util.IpUtils;
 import com.uas.sso.util.MessageUtils;
@@ -60,6 +61,9 @@ public class PersonalRegisterController extends BaseController {
     @Autowired
     private AppService appService;
 
+    @Autowired
+    private SyncSsoService syncSsoService;
+
     private RegisterBufferedLogger registerLogger = LoggerManager.getLogger(RegisterBufferedLogger.class);
 
     private final static Logger LOGGER = LoggerFactory.getLogger(PersonalRegisterController.class);
@@ -147,6 +151,8 @@ public class PersonalRegisterController extends BaseController {
         st.setData(JSON.toJSONString(userAccount));
         SSOHelper.setSSOCookie(request, response, st, true);
 
+        syncSsoService.sendUserLoginStateToSso(0L, user.getUserUU(), response, null);
+
         ModelMap data = new ModelMap();
         data.addAttribute("data", userAccount)
                 .addAttribute("loginUrls", loginUrls)

+ 5 - 0
sso-server/src/main/java/com/uas/sso/controller/UserspaceRegisterController.java

@@ -17,6 +17,7 @@ import com.uas.sso.service.AppService;
 import com.uas.sso.service.UserAccountService;
 import com.uas.sso.service.UserService;
 import com.uas.sso.service.UserspaceService;
+import com.uas.sso.sync.service.SyncSsoService;
 import com.uas.sso.util.CaptchaUtil;
 import com.uas.sso.util.IpUtils;
 import com.uas.sso.util.PasswordLevelUtils;
@@ -61,6 +62,9 @@ public class UserspaceRegisterController extends BaseController {
     @Autowired
     private AppService appService;
 
+    @Autowired
+    private SyncSsoService syncSsoService;
+
     private RegisterBufferedLogger registerLogger = LoggerManager.getLogger(RegisterBufferedLogger.class);
 
     private final static Logger LOGGER = LoggerFactory.getLogger(UserspaceRegisterController.class);
@@ -216,6 +220,7 @@ public class UserspaceRegisterController extends BaseController {
         SSOToken st = new SSOToken(request, userAccount.getMobile());
         st.setData(JSON.toJSONString(userAccount));
         SSOHelper.setSSOCookie(request, response, st, true);
+        syncSsoService.sendUserLoginStateToSso(userspace.getSpaceUU(), userspace.getAdminUU(), response, null);
         LOGGER.info("用户({})注册并登录成功,时间:{}", admin.getUserUU(), System.currentTimeMillis());
         return success(data);
     }

+ 5 - 0
sso-server/src/main/java/com/uas/sso/service/impl/LoginServiceImpl.java

@@ -16,6 +16,7 @@ import com.uas.sso.foreign.entity.ForeignInfo;
 import com.uas.sso.foreign.factory.ForeignFactory;
 import com.uas.sso.foreign.service.ForeignService;
 import com.uas.sso.service.*;
+import com.uas.sso.sync.service.SyncSsoService;
 import com.uas.sso.util.PasswordLevelUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -66,6 +67,9 @@ public class LoginServiceImpl implements LoginService {
 
     @Autowired
     protected UserRecordDao userRecordDao;
+
+    @Autowired
+    private SyncSsoService syncSsoService;
     /**
      * 密码输错3次
      */
@@ -321,6 +325,7 @@ public class LoginServiceImpl implements LoginService {
         SSOToken st = new SSOToken(request, userAccount.getMobile());
         st.setData(JSON.toJSONString(userAccount));
         SSOHelper.setSSOCookie(request, response, st, true);
+        syncSsoService.sendUserLoginStateToSso(spaceUU, userUU, response, loginParam.getMaxage());
         LOGGER.info("用户({})登录成功,时间:{}", userUU, userRecord.getLastLoginTime());
         return loginByUser(userAccount, loginParam);
     }

+ 1 - 0
sso-server/src/main/java/com/uas/sso/service/impl/UserServiceImpl.java

@@ -1020,6 +1020,7 @@ public class UserServiceImpl implements UserService {
         formData.put("password", user.getPassword());
         formData.put("hasQuestion", hasQuestion);
         syncUserInfo(formData, msg, apps);
+        syncUserService.sendUserToSso(user.getUserUU());
         return user;
     }
 

+ 5 - 0
sso-server/src/main/java/com/uas/sso/service/impl/UserspaceServiceImpl.java

@@ -12,6 +12,7 @@ import com.uas.sso.logging.LoggerManager;
 import com.uas.sso.logging.SyncBufferedLogger;
 import com.uas.sso.service.*;
 import com.uas.sso.support.SyncFail;
+import com.uas.sso.sync.service.SyncUserspaceService;
 import com.uas.sso.util.ChineseUtils;
 import com.uas.sso.util.CountUtils;
 import com.uas.sso.util.StringUtil;
@@ -59,6 +60,9 @@ public class UserspaceServiceImpl implements UserspaceService {
 
     SyncBufferedLogger syncLogger = LoggerManager.getLogger(SyncBufferedLogger.class);
 
+    @Autowired
+    private SyncUserspaceService syncUserspaceService;
+
     /**
      * 企业初始uu号
      */
@@ -169,6 +173,7 @@ public class UserspaceServiceImpl implements UserspaceService {
             apps.remove(noSyncApp);
         }
         syncUserSpaceInfo(formData, msg, apps);
+        syncUserspaceService.sendUserspaceToSso(userSpaceView.getSpaceUU());
     }
 
     private void syncUserSpaceInfo(final Map<String, Object> formData, final String msg, List<App> apps) {

+ 2 - 2
sso-server/src/main/java/com/uas/sso/sync/service/SsoService.java → sso-server/src/main/java/com/uas/sso/sync/service/SyncSsoService.java

@@ -9,7 +9,7 @@ import javax.servlet.http.HttpServletResponse;
  * @author liusw
  * @date 2019-01-18 11:25
  */
-public interface SsoService {
+public interface SyncSsoService {
 
     /**
      * 根据uu号到账号服务获取用户信息
@@ -30,5 +30,5 @@ public interface SsoService {
      * @param spaceUU
      * @param userUU
      */
-    void sendUserLoginStateToSso(Long spaceUU, Long userUU, HttpServletResponse response);
+    void sendUserLoginStateToSso(Long spaceUU, Long userUU, HttpServletResponse response, Integer maxAges);
 }

+ 13 - 4
sso-server/src/main/java/com/uas/sso/sync/service/impl/SsoServiceImpl.java → sso-server/src/main/java/com/uas/sso/sync/service/impl/SyncSsoServiceImpl.java

@@ -2,15 +2,18 @@ package com.uas.sso.sync.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.uas.sso.SSOConfig;
+import com.uas.sso.SSOConfiguration;
 import com.uas.sso.common.util.HttpUtil;
 import com.uas.sso.sync.entity.*;
-import com.uas.sso.sync.service.SsoService;
+import com.uas.sso.sync.service.SyncSsoService;
 import com.usoft.mq.utils.RabbitSendService;
 import com.usoft.security.utils.OpenApiSignUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletResponse;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
@@ -23,7 +26,7 @@ import java.util.UUID;
  * @date 2019-01-18 15:26
  */
 @Service
-public class SsoServiceImpl implements SsoService {
+public class SyncSsoServiceImpl implements SyncSsoService {
 
     @Value("${sync.stc.secret.key}")
     private String stcSecretKey;
@@ -71,7 +74,7 @@ public class SsoServiceImpl implements SsoService {
     }
 
     @Override
-    public void sendUserLoginStateToSso(Long spaceUU, Long userUU, HttpServletResponse response) {
+    public void sendUserLoginStateToSso(Long spaceUU, Long userUU, HttpServletResponse response, Integer maxAge) {
         if (spaceUU == null || userUU == null) {
             throw new RuntimeException("用户信息不能为空");
         }
@@ -80,12 +83,18 @@ public class SsoServiceImpl implements SsoService {
         accountCenterLoginState.setEnuu(userUU.intValue());
         String token = UUID.randomUUID().toString();
         accountCenterLoginState.setToken(token);
+
+        // 设置cookies
+        Cookie tokenCookie = new Cookie("token", token);
+        tokenCookie.setPath("/");
+        tokenCookie.setDomain(SSOConfig.getInstance().getCookieDomain());
+        tokenCookie.setMaxAge(maxAge);
+        response.addCookie(tokenCookie);
         try {
             rabbitSendService.sendMessage("CTS", userUU + "", AppIdConstant.ACCOUNT_SERVICE, MqBizTypeConstant.CTS_LOGIN, userUU + "", JSON.toJSONString(accountCenterLoginState));
         } catch (Exception e) {
             e.printStackTrace();
         }
-
     }
 
     /**

+ 3 - 5
sso-server/src/main/java/com/uas/sso/sync/service/impl/SyncUserServiceImpl.java

@@ -2,11 +2,10 @@ package com.uas.sso.sync.service.impl;
 
 import com.alibaba.dubbo.common.utils.CollectionUtils;
 import com.uas.sso.entity.PageInfo;
-import com.uas.sso.service.impl.LoginServiceImpl;
 import com.uas.sso.sync.dao.SyncUserDao;
 import com.uas.sso.sync.dao.SyncUserQuestionDao;
 import com.uas.sso.sync.entity.*;
-import com.uas.sso.sync.service.SsoService;
+import com.uas.sso.sync.service.SyncSsoService;
 import com.uas.sso.sync.service.SyncUserService;
 import com.usoft.mq.utils.RabbitSendService;
 import org.slf4j.Logger;
@@ -19,7 +18,6 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
@@ -44,7 +42,7 @@ public class SyncUserServiceImpl implements SyncUserService {
     private SyncUserQuestionDao syncUserQuestionDao;
 
     @Autowired
-    private SsoService ssoService;
+    private SyncSsoService syncSsoService;
 
     @Autowired
     private RabbitSendService rabbitSendService;
@@ -81,7 +79,7 @@ public class SyncUserServiceImpl implements SyncUserService {
             throw new RuntimeException("用户uu不能为空");
         }
         // 到账号服务查询用户信息
-        SsoServiceUser ssoServiceUser = ssoService.getSsoServiceUser(userUU.intValue());
+        SsoServiceUser ssoServiceUser = syncSsoService.getSsoServiceUser(userUU.intValue());
         if (ssoServiceUser != null) {
             syncUser(ssoServiceUser, isUpdate);
         }

+ 3 - 4
sso-server/src/main/java/com/uas/sso/sync/service/impl/SyncUserspaceServiceImpl.java

@@ -4,8 +4,7 @@ import com.uas.sso.entity.PageInfo;
 import com.uas.sso.sync.dao.SyncUserDao;
 import com.uas.sso.sync.dao.SyncUserspaceDao;
 import com.uas.sso.sync.entity.*;
-import com.uas.sso.sync.service.SsoService;
-import com.uas.sso.sync.service.SyncUserService;
+import com.uas.sso.sync.service.SyncSsoService;
 import com.uas.sso.sync.service.SyncUserspaceService;
 import com.uas.sso.util.CollectionUtils;
 import com.usoft.mq.utils.RabbitSendService;
@@ -39,7 +38,7 @@ public class SyncUserspaceServiceImpl implements SyncUserspaceService {
     private SyncUserspaceDao syncUserspaceDao;
 
     @Autowired
-    private SsoService ssoService;
+    private SyncSsoService syncSsoService;
 
     @Autowired
     private SyncUserDao syncUserDao;
@@ -80,7 +79,7 @@ public class SyncUserspaceServiceImpl implements SyncUserspaceService {
             throw new RuntimeException("企业UU号不能为空");
         }
         // 到账号服务查询企业信息
-        SsoServiceUserspace ssoServiceUserspace = ssoService.getSsoServiceUserspace(spaceUU.intValue());
+        SsoServiceUserspace ssoServiceUserspace = syncSsoService.getSsoServiceUserspace(spaceUU.intValue());
         if (ssoServiceUserspace != null) {
             syncUserspace(ssoServiceUserspace, isUpdate);
         }