Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.tencent.bk.sdk.iam.service.impl.ManagerServiceImpl Maven / Gradle / Ivy
/*
* TencentBlueKing is pleased to support the open source community by making
* 蓝鲸智云-权限中心Java SDK(iam-java-sdk) available.
* Copyright (C) 2017-2021 THL A29 Limited, a Tencent company. All rights reserved.
* Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://opensource.org/licenses/MIT
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package com.tencent.bk.sdk.iam.service.impl;
import com.fasterxml.jackson.core.type.TypeReference;
import com.tencent.bk.sdk.iam.config.IamConfiguration;
import com.tencent.bk.sdk.iam.constants.IamUri;
import com.tencent.bk.sdk.iam.dto.CreateRelationDTO;
import com.tencent.bk.sdk.iam.dto.PageInfoDTO;
import com.tencent.bk.sdk.iam.dto.PermissionUrlDTO;
import com.tencent.bk.sdk.iam.dto.V2PageInfoDTO;
import com.tencent.bk.sdk.iam.dto.manager.AuthorizationScopes;
import com.tencent.bk.sdk.iam.dto.manager.ManagerRoleGroup;
import com.tencent.bk.sdk.iam.dto.manager.ManagerRoleGroupInfo;
import com.tencent.bk.sdk.iam.dto.manager.dto.CreateManagerDTO;
import com.tencent.bk.sdk.iam.dto.manager.dto.ManagerMemberGroupDTO;
import com.tencent.bk.sdk.iam.dto.manager.dto.ManagerRoleGroupDTO;
import com.tencent.bk.sdk.iam.dto.manager.dto.ManagerRoleMemberDTO;
import com.tencent.bk.sdk.iam.dto.manager.vo.CreateVo;
import com.tencent.bk.sdk.iam.dto.manager.vo.ManagerGroupMemberVo;
import com.tencent.bk.sdk.iam.dto.manager.vo.ManagerRoleGroupVO;
import com.tencent.bk.sdk.iam.dto.response.ResponseDTO;
import com.tencent.bk.sdk.iam.exception.IamException;
import com.tencent.bk.sdk.iam.service.ManagerService;
import com.tencent.bk.sdk.iam.util.AuthRequestContext;
import com.tencent.bk.sdk.iam.util.JsonUtil;
import com.tencent.bk.sdk.iam.util.ResponseUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
@Slf4j
public class ManagerServiceImpl implements ManagerService {
private ApigwHttpClientServiceImpl apigwHttpClientService;
private IamConfiguration iamConfiguration;
public ManagerServiceImpl(ApigwHttpClientServiceImpl apigwHttpClientService, IamConfiguration iamConfiguration) {
this.apigwHttpClientService = apigwHttpClientService;
this.iamConfiguration = iamConfiguration;
}
@Override
public Integer createManager(CreateManagerDTO createManagerDTO) {
try {
AuthRequestContext.setRequestName("MANAGER_ROLE");
String responseStr = apigwHttpClientService.doHttpPost(IamUri.MANAGER_ROLE, createManagerDTO);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("create manager response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
return responseInfo.getData().getId();
}
} else {
log.warn("create manager got empty response!");
}
} catch (IamException iamException) {
log.error("create manager failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("create manager failed|{}", e);
throw new RuntimeException(e);
}
return null;
}
@Override
public ManagerRoleGroupVO getGradeManagerRoleGroup(Integer projectId, PageInfoDTO pageInfoDTO) {
try {
AuthRequestContext.setRequestName("MANAGER_GRADE_GROUP_GET");
String responseStr = apigwHttpClientService.doHttpGet(buildURLPage(String.format(IamUri.MANAGER_GRADE_GROUP_GET, projectId.toString()), pageInfoDTO));
if (StringUtils.isNotBlank(responseStr)) {
log.debug("get manager role response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
return responseInfo.getData();
}
} else {
log.warn("get manager role got empty response!");
}
} catch (IamException iamException) {
log.error("get manager role failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("get manager role failed|{}", e);
throw new RuntimeException(e);
}
return null;
}
@Override
public Integer batchCreateRoleGroup(Integer projectId, ManagerRoleGroupDTO managerRoleGroupDTO) {
try {
AuthRequestContext.setRequestName("MANAGER_GRADE_GROUP_CREATE");
String url = String.format(IamUri.MANAGER_GRADE_GROUP_CREATE, projectId);
String responseStr = apigwHttpClientService.doHttpPost(url, managerRoleGroupDTO);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("create manager role group response|{}", responseStr);
ResponseDTO> responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
return responseInfo.getData().get(0);
}
} else {
log.warn("create manager role group got empty response!");
}
} catch (IamException iamException) {
log.error("create manager role group failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("create manager role group failed|{}", e);
throw new RuntimeException(e);
}
return null;
}
@Override
public void updateRoleGroup(Integer roleId, ManagerRoleGroup managerRoleGroup) {
try {
AuthRequestContext.setRequestName("MANAGER_ROLE_GROUP_UPDATE");
String responseStr = apigwHttpClientService.doHttpPut(String.format(IamUri.MANAGER_ROLE_GROUP_UPDATE, roleId.toString()), managerRoleGroup);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("update manager role group response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
}
} else {
log.warn("update manager role group got empty response!");
}
} catch (IamException iamException) {
log.error("update manager role group failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("update manager role group failed|{}", e);
throw new RuntimeException(e);
}
}
@Override
public void deleteRoleGroup(Integer roleId) {
try {
AuthRequestContext.setRequestName("MANAGER_ROLE_GROUP_DELETE");
String responseStr = apigwHttpClientService.doHttpDelete(String.format(IamUri.MANAGER_ROLE_GROUP_DELETE, roleId.toString()));
if (StringUtils.isNotBlank(responseStr)) {
log.debug("delete manager role group response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
}
} else {
log.warn("delete manager role group got empty response!");
}
} catch (IamException iamException) {
log.error("delete manager role group failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("delete manager role group failed|{}", e);
throw new RuntimeException(e);
}
}
@Override
public List getGradeManagerRoleMember(Integer projectId, PageInfoDTO pageInfoDTO) {
AuthRequestContext.setRequestName("MANAGER_GRADE_MEMBER_GET");
String url = buildURLPage(String.format(IamUri.MANAGER_GRADE_MEMBER_GET, projectId.toString()), pageInfoDTO);
try {
String responseStr = apigwHttpClientService.doHttpGet(url);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("get manager role member response|{}", responseStr);
ResponseDTO> responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
return responseInfo.getData();
}
} else {
log.warn("get manager role member got empty response!");
}
} catch (IamException iamException) {
log.error("get manager role member failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("get manager role member failed|{}", e);
throw new RuntimeException(e);
}
return null;
}
@Override
public void batchCreateGradeManagerRoleMember(ManagerRoleMemberDTO members, Integer roleId) {
AuthRequestContext.setRequestName("MANAGER_GRADE_MEMBER_CREATE");
String url = String.format(IamUri.MANAGER_GRADE_MEMBER_CREATE, roleId);
try {
String responseStr = apigwHttpClientService.doHttpPost(url, members);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("create manager role member response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
}
} else {
log.warn("create manager role member got empty response!");
}
} catch (IamException iamException) {
log.error("create manager role member failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("create manager role member failed|{}", e);
throw new RuntimeException(e);
}
}
@Override
public void deleteGradeManagerRoleMember(String members, Integer projectId) {
AuthRequestContext.setRequestName("MANAGER_GRADE_MEMBER_DEL");
String url = String.format(IamUri.MANAGER_GRADE_MEMBER_DEL, projectId.toString(), members);
try {
String responseStr = apigwHttpClientService.doHttpDelete(url);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("delete manager role member response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
}
} else {
log.warn("delete manager role member got empty response!");
}
} catch (IamException iamException) {
log.error("delete manager role member failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("delete manager role member failed|{}", e);
throw new RuntimeException(e);
}
}
@Override
public ManagerGroupMemberVo getRoleGroupMember(Integer roleId, PageInfoDTO pageInfoDTO) {
AuthRequestContext.setRequestName("MANAGER_ROLE_GROUP_MEMBER_GET");
String url = buildURLPage(String.format(IamUri.MANAGER_ROLE_GROUP_MEMBER_GET, roleId.toString()), pageInfoDTO);
try {
String responseStr = apigwHttpClientService.doHttpGet(url);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("get role group member response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
return responseInfo.getData();
}
} else {
log.warn("get role group member got empty response!");
}
} catch (IamException iamException) {
log.error("get role group member failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("get role group member failed|{}", e);
throw new RuntimeException(e);
}
return null;
}
@Override
public void createRoleGroupMember(Integer roleId, ManagerMemberGroupDTO managerMemberGroupDTO) {
AuthRequestContext.setRequestName("MANAGER_ROLE_GROUP_MEMBER_CREATE");
String url = String.format(IamUri.MANAGER_ROLE_GROUP_MEMBER_CREATE, roleId);
try {
String responseStr = apigwHttpClientService.doHttpPost(url, managerMemberGroupDTO);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("create role group member response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
}
} else {
log.warn("create role group member got empty response!");
}
} catch (IamException iamException) {
log.error("create role group member failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("create role group member failed|{}", e);
throw new RuntimeException(e);
}
}
@Override
public void deleteRoleGroupMember(Integer roleId, String type, String members) {
AuthRequestContext.setRequestName("MANAGER_ROLE_GROUP_MEMBER_DEL");
String url = String.format(IamUri.MANAGER_ROLE_GROUP_MEMBER_DEL, roleId.toString(), type, members);
try {
String responseStr = apigwHttpClientService.doHttpDelete(url);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("delete role group member response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
}
} else {
log.warn("delete role group member got empty response!");
}
} catch (IamException iamException) {
log.error("delete role group member failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("delete role group member failed|{}", e);
throw new RuntimeException(e);
}
}
@Override
public List getUserRole(String userId, PageInfoDTO pageInfoDTO) {
AuthRequestContext.setRequestName("MANAGER_USER_ROLE");
String url = buildURLPage(IamUri.MANAGER_USER_ROLE, pageInfoDTO);
url = url + "&system=" + iamConfiguration.getSystemId() + "&user_id=" + userId;
try {
String responseStr = apigwHttpClientService.doHttpGet(url);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("get user role response|{}", responseStr);
ResponseDTO> responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
return responseInfo.getData();
}
} else {
log.warn("get user role got empty response!");
}
} catch (IamException iamException) {
log.error("get user role failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("get user role failed|{}", e);
throw new RuntimeException(e);
}
return null;
}
@Override
public Boolean createRolePermission(Integer roleId, AuthorizationScopes permission) {
AuthRequestContext.setRequestName("MANAGER_ROLE_PERMISSION");
String url = String.format(IamUri.MANAGER_ROLE_PERMISSION, roleId.toString());
try {
String responseStr = apigwHttpClientService.doHttpPost(url, permission);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("create role permission response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
}
} else {
log.warn("create role permission got empty response!");
}
} catch (IamException iamException) {
log.error("create role permission failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("create role permission failed|{}", e);
throw new RuntimeException(e);
}
return true;
}
@Override
public List getUserGroup(Integer projectId, String userId) {
AuthRequestContext.setRequestName("USER_MANAGER_LIST_GET");
String url = String.format(IamUri.USER_MANAGER_LIST_GET, projectId.toString(), userId);
try {
String responseStr = apigwHttpClientService.doHttpGet(url);
if (StringUtils.isNotBlank(responseStr)) {
log.debug("getUserGroup response|{}", responseStr);
ResponseDTO> responseInfo = JsonUtil.fromJson(responseStr,
new TypeReference>>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
return responseInfo.getData();
}
} else {
log.warn("getUserGroup response got empty response!");
}
} catch (IamException iamException) {
log.error("getUserGroup response failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("getUserGroup response failed|{}", e);
throw new RuntimeException(e);
}
return null;
}
@Override
public void createResourceRelation(CreateRelationDTO createRelationDTO) {
try {
AuthRequestContext.setRequestName("RESOURCE_CREATOR_ACTION");
String responseStr = apigwHttpClientService.doHttpPost(IamUri.RESOURCE_CREATOR_ACTION, createRelationDTO);
if (StringUtils.isNotBlank(responseStr)) {
log.info("CreateResourceRelation response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr, new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
return;
}
} else {
log.warn("create manager got empty response!");
}
} catch (IamException iamException) {
log.error("create manager failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("create manager failed|{}", e);
throw new RuntimeException(e);
}
return;
}
@Override
public String getPermissionUrl(PermissionUrlDTO permissionUrlDTO) {
try {
log.info("getPermissionUrl request|{}", permissionUrlDTO);
String responseStr = apigwHttpClientService.doHttpPost(IamUri.PERMISSION_URL, permissionUrlDTO);
if (StringUtils.isNotBlank(responseStr)) {
log.info("getPermissionUrl response|{}", responseStr);
ResponseDTO responseInfo = JsonUtil.fromJson(responseStr,
new TypeReference>() {
});
if (responseInfo != null) {
ResponseUtil.checkResponse(responseInfo);
String url = responseInfo.getData().toString();
String urlStr = url.substring(url.indexOf("=") + 1, url.length() - 1);
return urlStr;
}
} else {
log.warn("getPermissionUrl response got empty response!");
}
} catch (IamException iamException) {
log.error("getPermissionUrl failed|{}|{}", iamException.getErrorCode(), iamException.getErrorMsg());
throw iamException;
} catch (Exception e) {
log.error("getPermissionUrl failed|{}", e);
throw new RuntimeException(e);
}
return "";
}
private String buildURLPage(String iamURL, PageInfoDTO pageInfoDTO) {
StringBuffer url = new StringBuffer();
url.append(iamURL);
if (pageInfoDTO != null) {
url.append("?limit=");
url.append(pageInfoDTO.getLimit().toString());
url.append("&offset=");
url.append(pageInfoDTO.getOffset().toString());
}
return url.toString();
}
private String v2BuildURLPage(String iamURL, V2PageInfoDTO pageInfoDTO) {
StringBuffer url = new StringBuffer();
url.append(iamURL);
if (pageInfoDTO != null) {
url.append("?page_size=");
url.append(pageInfoDTO.getPageSize().toString());
url.append("&page=");
url.append(pageInfoDTO.getPage().toString());
}
return url.toString();
}
}