DcucLoginController.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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. securityUser.setId(userInfo.getId());
  64. List<SecurityRight> authmenu = getAuthmenu(securityUser, userInfo);
  65. securityUser.setSecurityRightList(authmenu);
  66. //ADMIN管理员
  67. String rootOrgid = userInfo.getOrgId();
  68. if (iUserInfoFacade.isRootUser(securityUser.getId()) && StringUtils.isEmpty(rootOrgid)) {
  69. rootOrgid = iOrgInfoFacade.getRootOrgId();
  70. }
  71. securityUser.setSecurityOrg(rootOrgid);
  72. logger.info("securityUser:{}", JsonUtils.toJSONString(securityUser));
  73. return securityUser;
  74. } catch (Exception var3) {
  75. logger.error("获取用户信息异常", var3);
  76. throw new SecurityException("获取用户信息异常", var3);
  77. }
  78. }
  79. //获取菜单
  80. private List<SecurityRight> getAuthmenu(SecurityUser securityUser, UserInfo userInfo) {
  81. List<SecurityRight> rights = new ArrayList<SecurityRight>();
  82. //用户中心菜单
  83. //ADMIN
  84. if (iUserInfoFacade.getRootUser().equals(securityUser.getName())) {
  85. rights = iMenuMtAuthFacade.getAllMenus("SysMenuInfo");
  86. } else if (dcucAuthWebConfig.isAuthAccess()) {
  87. logger.info("进入权限授权模块控制菜单权限");
  88. //使用权限授权模块控制菜单权限
  89. List<String> rightIds = iRoleFacade.getAuthByUserIdAndAppCode(securityUser.getId(), dcucAuthWebConfig.getAppCode());
  90. rights = iMenuMtAuthFacade.getMenuByIds(rightIds, "SysMenuInfo");
  91. } else {
  92. logger.info("进入管理员管理配置菜单权限");
  93. //使用管理员管理配置菜单权限
  94. rights = iMenuMtAuthFacade.menuForIndex(securityUser.getId(), "00000000000000000000000000000000");
  95. rights = menuFilter(userInfo, rights);
  96. }
  97. String[] codes = new String[rights.size()];
  98. for (int i = 0; i < rights.size(); i++) {
  99. String code = rights.get(i).getCode();
  100. codes[i] = code;
  101. }
  102. securityUser.setSecurityRights(codes);
  103. return rights;
  104. }
  105. private List<SecurityRight> menuFilter(UserInfo userInfo, List<SecurityRight> securityRightList) {
  106. List<SecurityRight> tempSearchList = new ArrayList<SecurityRight>();
  107. for (SecurityRight securityRight : securityRightList) {
  108. String code = securityRight.getCode();
  109. if ((!UserTypeEnum.POLICE.getValue().equals(userInfo.getUserType()) && !iUserInfoFacade.getRootUser().equals(userInfo.getName()))
  110. && ("YHGLPT_ZHCX".equals(code) || "YHGLPT_ZHCX_RYCX".equals(code) || "YHGLPT_ZHCX_JGCX".equals(code))) {
  111. continue;
  112. }
  113. tempSearchList.add(securityRight);
  114. }
  115. securityRightList = tempSearchList;
  116. return securityRightList;
  117. }
  118. }