登录新增登录类型,根据类型过滤对应类型的角色信息返回
| | |
| | | private final BladeRedis bladeRedis; |
| | | private final JwtProperties jwtProperties; |
| | | |
| | | /** |
| | | * |
| | | * @param tenantId |
| | | * @param username |
| | | * @param password |
| | | * @param deptId |
| | | * @param roleId |
| | | * @param type 登录类型 2:pc 3: app |
| | | * @return |
| | | */ |
| | | @ApiLog("登录用户验证") |
| | | @PostMapping("/oauth/token") |
| | | @ApiOperation(value = "获取认证令牌", notes = "传入租户ID:tenantId,账号:account,密码:password") |
| | |
| | | @ApiParam(value = "账号", required = true) @RequestParam(required = false) String username, |
| | | @ApiParam(value = "密码", required = true) @RequestParam(required = false) String password, |
| | | @ApiIgnore @RequestHeader(name = TokenUtil.DEPT_HEADER_KEY, required = false) String deptId, |
| | | @ApiIgnore @RequestHeader(name = TokenUtil.ROLE_HEADER_KEY, required = false) String roleId) { |
| | | @ApiIgnore @RequestHeader(name = TokenUtil.ROLE_HEADER_KEY, required = false) String roleId, |
| | | @ApiParam(value = "登录类型", required = false) @RequestParam(required = false,defaultValue = "3") Integer loginType) { |
| | | |
| | | Kv authInfo = Kv.create(); |
| | | |
| | |
| | | .set("grantType", grantType) |
| | | .set("refreshToken", refreshToken) |
| | | .set("userType", userType) |
| | | .set("deptId", deptId).set("roleId", roleId); |
| | | .set("deptId", deptId) |
| | | .set("loginType",loginType) |
| | | .set("roleId", roleId); |
| | | |
| | | ITokenGranter granter = TokenGranterBuilder.getGranter(grantType); |
| | | UserInfo userInfo = granter.grant(tokenParameter); |
| | |
| | | String tenantId = tokenParameter.getArgs().getStr("tenantId"); |
| | | String username = tokenParameter.getArgs().getStr("username"); |
| | | String password = tokenParameter.getArgs().getStr("password"); |
| | | // 获取登录类型 2:pc 3:app |
| | | String type = tokenParameter.getArgs().getStr("loginType"); |
| | | |
| | | // 判断登录是否锁定 |
| | | int cnt = Func.toInt(bladeRedis.get(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username)), 0); |
| | |
| | | if (TokenUtil.judgeTenant(tenant)) { |
| | | throw new ServiceException(TokenUtil.USER_HAS_NO_TENANT_PERMISSION); |
| | | } |
| | | // 获取用户类型 |
| | | String userType = tokenParameter.getArgs().getStr("userType"); |
| | | // 根据不同用户类型调用对应的接口返回数据,用户可自行拓展 |
| | | if (userType.equals(UserEnum.WEB.getName())) { |
| | | userInfo = userService.userInfo(tenantId, username, DigestUtil.hex(password), UserEnum.WEB); |
| | | } else if (userType.equals(UserEnum.APP.getName())) { |
| | | userInfo = userService.userInfo(tenantId, username, DigestUtil.hex(password), UserEnum.APP); |
| | | } else { |
| | | userInfo = userService.userInfo(tenantId, username, DigestUtil.hex(password), UserEnum.OTHER); |
| | | } |
| | | userInfo = userService.userInfo(tenantId, username, DigestUtil.hex(password), Integer.parseInt(type)); |
| | | } |
| | | if (userInfo == null || userInfo.getUser() == null) { |
| | | // 增加错误锁定次数 |
| | |
| | | * @return |
| | | */ |
| | | List<Role> getRoleList(@Param("roleParam") RoleParam roleParam); |
| | | |
| | | /** |
| | | * 查询对应的角色id |
| | | * @param roleId |
| | | * @param type 登录类型 2:pc 3:app |
| | | * @return |
| | | */ |
| | | List<String> getRoleIdStrByRoleIdAndType(@Param("ids") String roleId,@Param("types") List<Integer> type); |
| | | } |
| | |
| | | </foreach> |
| | | </select> |
| | | |
| | | <!--查询对应的角色id--> |
| | | <select id="getRoleIdStrByRoleIdAndType" resultType="java.lang.String"> |
| | | SELECT id FROM BLADE_ROLE |
| | | WHERE id IN |
| | | <foreach collection="ids.split(',')" item="id" open="(" separator="," close=")"> |
| | | #{id} |
| | | </foreach> |
| | | <if test="types!=null and types.size()>0"> |
| | | and type in |
| | | <foreach collection="types" item="type" open="(" separator="," close=")"> |
| | | #{type} |
| | | </foreach> |
| | | </if> |
| | | </select> |
| | | |
| | | <!--角色查询--> |
| | | <select id="getRoleList" resultType="org.springblade.modules.system.entity.Role"> |
| | | SELECT br.* FROM blade_role br |
| | |
| | | * @return |
| | | */ |
| | | List<Role> getRoleList(RoleParam roleParam); |
| | | |
| | | /** |
| | | * 查询对应的角色id |
| | | * @param roleId |
| | | * @param type 登录类型 2:pc 3:app |
| | | * @return |
| | | */ |
| | | List<String> getRoleIdStrByRoleIdAndType(String roleId,Integer type); |
| | | } |
| | |
| | | * @param tenantId |
| | | * @param account |
| | | * @param password |
| | | * @param type 登录类型 2:pc 3:app |
| | | * @return |
| | | */ |
| | | UserInfo userInfo(String tenantId, String account, String password, Integer type); |
| | | |
| | | /** |
| | | * 用户信息 |
| | | * |
| | | * @param tenantId |
| | | * @param account |
| | | * @param password |
| | | * @param userEnum |
| | | * @return |
| | | */ |
| | |
| | | public static final List<Integer> list2 = Arrays.asList(1, 11, null); |
| | | |
| | | |
| | | /** |
| | | * |
| | | * @param roleId |
| | | * @param topMenuId |
| | | * @param labelType |
| | | * @param menuType |
| | | * @param roleName |
| | | * @param houseCode |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<MenuVO> routes(String roleId, Long topMenuId, Integer labelType, Integer menuType, String roleName,String houseCode) { |
| | | if (StringUtil.isBlank(roleId)) { |
| | |
| | | roleParam.setRoleId(AuthUtil.getUser().getRoleId()); |
| | | return baseMapper.getRoleList(roleParam); |
| | | } |
| | | |
| | | /** |
| | | * 查询对应的角色id |
| | | * @param roleId |
| | | * @param type 登录类型 2:pc 3:app |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<String> getRoleIdStrByRoleIdAndType(String roleId,Integer type) { |
| | | List<Integer> list = new ArrayList<>(); |
| | | if (type!=1){ |
| | | list.add(1); |
| | | // pc |
| | | if (type==2){ |
| | | list.add(2); |
| | | } |
| | | // app |
| | | if (type==3){ |
| | | list.add(3); |
| | | } |
| | | } |
| | | return baseMapper.getRoleIdStrByRoleIdAndType(roleId,list); |
| | | } |
| | | } |
| | |
| | | return buildUserInfo(user); |
| | | } |
| | | |
| | | /** |
| | | * 用户信息 |
| | | * |
| | | * @param tenantId |
| | | * @param account |
| | | * @param password |
| | | * @param type 登录类型 2:pc 3:app |
| | | * @return |
| | | */ |
| | | @Override |
| | | public UserInfo userInfo(String tenantId, String account, String password, Integer type) { |
| | | User user = baseMapper.getUser(tenantId, account, password); |
| | | return buildUserInfo(user, type); |
| | | } |
| | | |
| | | /** |
| | | * 用户信息 |
| | | * |
| | | * @param tenantId |
| | | * @param account |
| | | * @param password |
| | | * @param userEnum |
| | | * @return |
| | | */ |
| | | @Override |
| | | public UserInfo userInfo(String tenantId, String account, String password, UserEnum userEnum) { |
| | | User user = baseMapper.getUser(tenantId, account, password); |
| | |
| | | return userInfo; |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * @param user |
| | | * @param type 登录类型 2:pc 3:app |
| | | * @return |
| | | */ |
| | | private UserInfo buildUserInfo(User user, Integer type) { |
| | | if (ObjectUtil.isEmpty(user)) { |
| | | return null; |
| | | } |
| | | UserInfo userInfo = new UserInfo(); |
| | | userInfo.setUser(user); |
| | | if (Func.isNotEmpty(user)) { |
| | | // 判断登录类型设置对应的角色id |
| | | user.setRoleId(Strings.join(roleService.getRoleIdStrByRoleIdAndType(user.getRoleId(),type), ',')); |
| | | // 设置角色别名 |
| | | List<String> roleAlias = roleService.getRoleAliases(user.getRoleId()); |
| | | userInfo.setRoles(roleAlias); |
| | | } |
| | | // 根据每个用户平台,建立对应的detail表,通过查询将结果集写入到detail字段 |
| | | Kv detail = Kv.create().set("type", null); |
| | | UserOther userOther = new UserOther(); |
| | | UserOther query = userOther.selectOne(Wrappers.<UserOther>lambdaQuery().eq(UserOther::getUserId, user.getId())); |
| | | if (ObjectUtil.isNotEmpty(query)) { |
| | | detail.set("ext", query.getUserExt()); |
| | | } |
| | | userInfo.setDetail(detail); |
| | | return userInfo; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public UserInfo userInfo(UserOauth userOauth) { |