package com.dragoninfo.dcuc.authweb.restcontroller.login; import cn.hutool.core.util.StrUtil; import com.dragoninfo.dcuc.auth.auth.facade.IRoleFacade; import com.dragoninfo.dcuc.authweb.config.DcucAuthWebConfig; import com.dragoninfo.dcuc.org.facade.IOrgInfoFacade; import com.dragoninfo.dcuc.user.admin.facade.IManageInfoFacade; import com.dragoninfo.dcuc.user.admin.facade.IMenuMtAuthFacade; import com.dragoninfo.dcuc.user.user.entity.UserInfo; import com.dragoninfo.dcuc.user.user.enumresources.UserTypeEnum; import com.dragoninfo.dcuc.user.user.facade.IUserFacade; import com.dragoninfo.dcuc.user.user.facade.IUserInfoFacade; import com.dragonsoft.duceap.base.entity.security.SecurityRight; import com.dragonsoft.duceap.base.entity.security.SecurityUser; import com.dragonsoft.duceap.base.utils.UserContextUtils; import com.dragonsoft.duceap.commons.util.json.JsonUtils; import com.dragonsoft.duceap.commons.util.string.StringUtils; import com.dragonsoft.duceap.web.SecurityProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController @RequestMapping(value = "/user") public class DcucLoginController { @Autowired private IMenuMtAuthFacade iMenuMtAuthFacade; @Autowired private IUserInfoFacade iUserInfoFacade; @Autowired private IManageInfoFacade iManageInfoFacade; @Autowired private IRoleFacade iRoleFacade; @Autowired private IOrgInfoFacade iOrgInfoFacade; @Autowired private DcucAuthWebConfig dcucAuthWebConfig; @Autowired private IUserFacade userFacade; @Autowired private SecurityProperties securityProperties; public static final Logger logger = LoggerFactory.getLogger(DcucLoginController.class); public DcucLoginController() { } @GetMapping(value = "/info") public SecurityUser info(@RequestHeader(value = "userToken", required = false) String userToken, @RequestHeader(value = "appToken", required = false) String appToken) { logger.info("UserToken:{},appToken:{}", userToken, appToken); UserInfo userInfo; try { SecurityUser securityUser = (SecurityUser) UserContextUtils.getCurrentUser(); if ("dids".equals(securityProperties.getType())) { userInfo = userFacade.detailBySfzh(securityUser.getIdcard()); securityUser.setName(userInfo.getName()); securityUser.setUserName(userInfo.getName()); } else { userInfo = iUserInfoFacade.userDetail(securityUser.getId()); } String userId = securityUser.getId(); if (StrUtil.isBlank(userId)) { securityUser.setId(userInfo.getId()); } List authmenu = getAuthmenu(securityUser, userInfo); securityUser.setSecurityRightList(authmenu); //ADMIN管理员 String rootOrgid = userInfo.getOrgId(); if (iUserInfoFacade.isRootUser(securityUser.getId()) && StringUtils.isEmpty(rootOrgid)) { rootOrgid = iOrgInfoFacade.getRootOrgId(); } securityUser.setSecurityOrg(rootOrgid); logger.info("securityUser:{}", JsonUtils.toJSONString(securityUser)); return securityUser; } catch (Exception var3) { logger.error("获取用户信息异常", var3); throw new SecurityException("获取用户信息异常", var3); } } //获取菜单 private List getAuthmenu(SecurityUser securityUser, UserInfo userInfo) { List rights = new ArrayList(); //用户中心菜单 //ADMIN if (iUserInfoFacade.getRootUser().equals(securityUser.getName())) { rights = iMenuMtAuthFacade.getAllMenus("SysMenuInfo"); } else if (dcucAuthWebConfig.isAuthAccess()) { logger.info("进入权限授权模块控制菜单权限"); //使用权限授权模块控制菜单权限 List rightIds = iRoleFacade.getAuthByUserIdAndAppCode(securityUser.getId(), dcucAuthWebConfig.getAppCode()); rights = iMenuMtAuthFacade.getMenuByIds(rightIds, "SysMenuInfo"); } else { logger.info("进入管理员管理配置菜单权限"); //使用管理员管理配置菜单权限 rights = iMenuMtAuthFacade.menuForIndex(securityUser.getId(), "00000000000000000000000000000000"); rights = menuFilter(userInfo, rights); } String[] codes = new String[rights.size()]; for (int i = 0; i < rights.size(); i++) { String code = rights.get(i).getCode(); codes[i] = code; } securityUser.setSecurityRights(codes); return rights; } private List menuFilter(UserInfo userInfo, List securityRightList) { List tempSearchList = new ArrayList(); for (SecurityRight securityRight : securityRightList) { String code = securityRight.getCode(); if ((!UserTypeEnum.POLICE.getValue().equals(userInfo.getUserType()) && !iUserInfoFacade.getRootUser().equals(userInfo.getName())) && ("YHGLPT_ZHCX".equals(code) || "YHGLPT_ZHCX_RYCX".equals(code) || "YHGLPT_ZHCX_JGCX".equals(code))) { continue; } tempSearchList.add(securityRight); } securityRightList = tempSearchList; return securityRightList; } }