DcucLoginController.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package com.dragoninfo.dcuc.authweb.restcontroller.login;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.dragoninfo.dcuc.auth.auth.facade.IRoleFacade;
  4. import com.dragoninfo.dcuc.authweb.config.DcucAuthWebConfig;
  5. import com.dragoninfo.dcuc.org.facade.IOrgInfoFacade;
  6. import com.dragoninfo.dcuc.user.admin.facade.IManageInfoFacade;
  7. import com.dragoninfo.dcuc.user.admin.facade.IMenuMtAuthFacade;
  8. import com.dragoninfo.dcuc.user.user.entity.UserInfo;
  9. import com.dragoninfo.dcuc.user.user.enumresources.UserTypeEnum;
  10. import com.dragoninfo.dcuc.user.user.facade.IUserFacade;
  11. import com.dragoninfo.dcuc.user.user.facade.IUserInfoFacade;
  12. import com.dragonsoft.duceap.base.entity.security.SecurityRight;
  13. import com.dragonsoft.duceap.base.entity.security.SecurityUser;
  14. import com.dragonsoft.duceap.base.utils.UserContextUtils;
  15. import com.dragonsoft.duceap.commons.util.json.JsonUtils;
  16. import com.dragonsoft.duceap.commons.util.string.StringUtils;
  17. import com.dragonsoft.duceap.web.SecurityProperties;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.web.bind.annotation.GetMapping;
  22. import org.springframework.web.bind.annotation.RequestHeader;
  23. import org.springframework.web.bind.annotation.RequestMapping;
  24. import org.springframework.web.bind.annotation.RestController;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. @RestController
  28. @RequestMapping(value = "/user")
  29. public class DcucLoginController {
  30. @Autowired
  31. private IMenuMtAuthFacade iMenuMtAuthFacade;
  32. @Autowired
  33. private IUserInfoFacade iUserInfoFacade;
  34. @Autowired
  35. private IManageInfoFacade iManageInfoFacade;
  36. @Autowired
  37. private IRoleFacade iRoleFacade;
  38. @Autowired
  39. private IOrgInfoFacade iOrgInfoFacade;
  40. @Autowired
  41. private DcucAuthWebConfig dcucAuthWebConfig;
  42. @Autowired
  43. private IUserFacade userFacade;
  44. @Autowired
  45. private SecurityProperties securityProperties;
  46. public static final Logger logger = LoggerFactory.getLogger(DcucLoginController.class);
  47. public DcucLoginController() {
  48. }
  49. @GetMapping(value = "/info")
  50. public SecurityUser info(@RequestHeader(value = "userToken", required = false) String userToken,
  51. @RequestHeader(value = "appToken", required = false) String appToken) {
  52. logger.info("UserToken:{},appToken:{}", userToken, appToken);
  53. UserInfo userInfo;
  54. try {
  55. SecurityUser securityUser = (SecurityUser) UserContextUtils.getCurrentUser();
  56. if ("dids".equals(securityProperties.getType())) {
  57. userInfo = userFacade.detailBySfzh(securityUser.getIdcard());
  58. securityUser.setName(userInfo.getName());
  59. securityUser.setUserName(userInfo.getName());
  60. } else {
  61. userInfo = iUserInfoFacade.userDetail(securityUser.getId());
  62. }
  63. String userId = securityUser.getId();
  64. if (StrUtil.isBlank(userId)) {
  65. securityUser.setId(userInfo.getId());
  66. }
  67. List<SecurityRight> authmenu = getAuthmenu(securityUser, userInfo);
  68. securityUser.setSecurityRightList(authmenu);
  69. //ADMIN管理员
  70. String rootOrgid = userInfo.getOrgId();
  71. if (iUserInfoFacade.isRootUser(securityUser.getId()) && StringUtils.isEmpty(rootOrgid)) {
  72. rootOrgid = iOrgInfoFacade.getRootOrgId();
  73. }
  74. securityUser.setSecurityOrg(rootOrgid);
  75. logger.info("securityUser:{}", JsonUtils.toJSONString(securityUser));
  76. return securityUser;
  77. } catch (Exception var3) {
  78. logger.error("获取用户信息异常", var3);
  79. throw new SecurityException("获取用户信息异常", var3);
  80. }
  81. }
  82. //获取菜单
  83. private List<SecurityRight> getAuthmenu(SecurityUser securityUser, UserInfo userInfo) {
  84. List<SecurityRight> rights = new ArrayList<SecurityRight>();
  85. //用户中心菜单
  86. //ADMIN
  87. if (iUserInfoFacade.getRootUser().equals(securityUser.getName())) {
  88. rights = iMenuMtAuthFacade.getAllMenus("SysMenuInfo");
  89. } else if (dcucAuthWebConfig.isAuthAccess()) {
  90. logger.info("进入权限授权模块控制菜单权限");
  91. //使用权限授权模块控制菜单权限
  92. List<String> rightIds = iRoleFacade.getAuthByUserIdAndAppCode(securityUser.getId(), dcucAuthWebConfig.getAppCode());
  93. rights = iMenuMtAuthFacade.getMenuByIds(rightIds, "SysMenuInfo");
  94. } else {
  95. logger.info("进入管理员管理配置菜单权限");
  96. //使用管理员管理配置菜单权限
  97. rights = iMenuMtAuthFacade.menuForIndex(securityUser.getId(), "00000000000000000000000000000000");
  98. rights = menuFilter(userInfo, rights);
  99. }
  100. String[] codes = new String[rights.size()];
  101. for (int i = 0; i < rights.size(); i++) {
  102. String code = rights.get(i).getCode();
  103. codes[i] = code;
  104. }
  105. securityUser.setSecurityRights(codes);
  106. return rights;
  107. }
  108. private List<SecurityRight> menuFilter(UserInfo userInfo, List<SecurityRight> securityRightList) {
  109. List<SecurityRight> tempSearchList = new ArrayList<SecurityRight>();
  110. for (SecurityRight securityRight : securityRightList) {
  111. String code = securityRight.getCode();
  112. if ((!UserTypeEnum.POLICE.getValue().equals(userInfo.getUserType()) && !iUserInfoFacade.getRootUser().equals(userInfo.getName()))
  113. && ("YHGLPT_ZHCX".equals(code) || "YHGLPT_ZHCX_RYCX".equals(code) || "YHGLPT_ZHCX_JGCX".equals(code))) {
  114. continue;
  115. }
  116. tempSearchList.add(securityRight);
  117. }
  118. securityRightList = tempSearchList;
  119. return securityRightList;
  120. }
  121. }