添加应用支持应用分组

pull/46/head
Friday 2023-09-09 07:03:13 +00:00 committed by smallbun
parent 31b658372a
commit 7310f9fa5d
19 changed files with 67 additions and 80 deletions

View File

@ -17,6 +17,8 @@
*/
package cn.topiam.employee.application;
import cn.topiam.employee.common.entity.app.AppGroupAssociationEntity;
import cn.topiam.employee.common.repository.app.AppGroupAssociationRepository;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.util.AlternativeJdkIdGenerator;
import org.springframework.util.IdGenerator;
@ -33,6 +35,9 @@ import cn.topiam.employee.common.repository.app.AppRepository;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
/**
* AbstractApplicationService
*
@ -55,7 +60,7 @@ public abstract class AbstractApplicationService implements ApplicationService {
}
@Override
public AppEntity createApp(String name, String icon, String remark, Long groupId,
public AppEntity createApp(String name, String icon, String remark, Long[] groupId,
InitLoginType initLoginType, AuthorizationType authorizationType) {
AppEntity appEntity = new AppEntity();
appEntity.setName(name);
@ -70,28 +75,44 @@ public abstract class AbstractApplicationService implements ApplicationService {
appEntity.setInitLoginType(initLoginType);
appEntity.setAuthorizationType(authorizationType);
appEntity.setRemark(remark);
return appRepository.save(appEntity);
appRepository.save(appEntity);
List<AppGroupAssociationEntity> list = new ArrayList<>();
for (Long id : groupId) {
AppGroupAssociationEntity appGroupAssociationEntity = new AppGroupAssociationEntity();
appGroupAssociationEntity.setGroupId(id);
appGroupAssociationEntity.setAppId(appEntity.getId());
list.add(appGroupAssociationEntity);
}
appGroupAssociationRepository.saveAll(list);
return appEntity;
}
/**
* AppAccountRepository
*/
protected final AppAccountRepository appAccountRepository;
protected final AppAccountRepository appAccountRepository;
/**
* AppGroupAssociationRepository
*/
protected final AppGroupAssociationRepository appGroupAssociationRepository;
/**
* ApplicationRepository
*/
protected final AppRepository appRepository;
protected final AppRepository appRepository;
/**
* IdGenerator
*/
protected final IdGenerator idGenerator;
protected final IdGenerator idGenerator;
protected AbstractApplicationService(AppAccountRepository appAccountRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppRepository appRepository) {
this.appAccountRepository = appAccountRepository;
this.appRepository = appRepository;
this.appGroupAssociationRepository = appGroupAssociationRepository;
this.idGenerator = new AlternativeJdkIdGenerator();
}
}

View File

@ -22,6 +22,7 @@ import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
import cn.topiam.employee.common.repository.app.*;
import org.bouncycastle.asn1.x500.X500Name;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -32,10 +33,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import cn.topiam.employee.common.entity.app.AppCertEntity;
import cn.topiam.employee.common.enums.app.AppCertUsingType;
import cn.topiam.employee.common.repository.app.AppAccessPolicyRepository;
import cn.topiam.employee.common.repository.app.AppAccountRepository;
import cn.topiam.employee.common.repository.app.AppCertRepository;
import cn.topiam.employee.common.repository.app.AppRepository;
import cn.topiam.employee.support.exception.TopIamException;
import cn.topiam.employee.support.util.CertUtils;
import cn.topiam.employee.support.util.RsaUtils;
@ -128,8 +125,9 @@ public abstract class AbstractCertificateApplicationService extends AbstractAppl
protected AbstractCertificateApplicationService(AppCertRepository appCertRepository,
AppAccountRepository appAccountRepository,
AppAccessPolicyRepository appAccessPolicyRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppRepository appRepository) {
super(appAccountRepository, appRepository);
super(appAccountRepository, appGroupAssociationRepository, appRepository);
this.appCertRepository = appCertRepository;
this.appAccessPolicyRepository = appAccessPolicyRepository;
this.idGenerator = new AlternativeJdkIdGenerator();

View File

@ -96,7 +96,7 @@ public interface ApplicationService {
* @return {@link Long} ID
*/
@Transactional(rollbackFor = Exception.class)
String create(String name, String icon, String remark, Long groupId);
String create(String name, String icon, String remark, Long[] groupId);
/**
*
@ -142,6 +142,6 @@ public interface ApplicationService {
* @param authorizationType {@link AuthorizationType}
* @return {@link AppEntity}
*/
AppEntity createApp(String name, String icon, String remark, Long groupId,
AppEntity createApp(String name, String icon, String remark, Long[] groupId,
InitLoginType initLoginType, AuthorizationType authorizationType);
}

View File

@ -26,6 +26,7 @@ import cn.topiam.employee.common.entity.app.AppFormConfigEntity;
import cn.topiam.employee.common.entity.app.po.AppFormConfigPO;
import cn.topiam.employee.common.repository.app.AppAccountRepository;
import cn.topiam.employee.common.repository.app.AppFormConfigRepository;
import cn.topiam.employee.common.repository.app.AppGroupAssociationRepository;
import cn.topiam.employee.common.repository.app.AppRepository;
/**
@ -83,8 +84,9 @@ public abstract class AbstractFormApplicationService extends AbstractApplication
protected AbstractFormApplicationService(AppRepository appRepository,
AppAccountRepository appAccountRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppFormConfigRepository appFormConfigRepository) {
super(appAccountRepository, appRepository);
super(appAccountRepository, appGroupAssociationRepository, appRepository);
this.appFormConfigRepository = appFormConfigRepository;
}
}

View File

@ -21,6 +21,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import cn.topiam.employee.common.repository.app.AppGroupAssociationRepository;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.databind.ObjectMapper;
@ -199,7 +200,7 @@ public class FormStandardApplicationServiceImpl extends AbstractFormApplicationS
* @param groupId {@link Long} id
*/
@Override
public String create(String name, String icon, String remark, Long groupId) {
public String create(String name, String icon, String remark, Long[] groupId) {
//1、创建应用
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.PORTAL_OR_APP,
AuthorizationType.AUTHORIZATION);
@ -216,8 +217,10 @@ public class FormStandardApplicationServiceImpl extends AbstractFormApplicationS
protected FormStandardApplicationServiceImpl(AppAccountRepository appAccountRepository,
AppFormConfigRepository appFormConfigRepository,
AppRepository appRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppFormConfigConverter appFormConfigConverter) {
super(appRepository, appAccountRepository, appFormConfigRepository);
super(appRepository, appAccountRepository, appGroupAssociationRepository,
appFormConfigRepository);
this.appFormConfigConverter = appFormConfigConverter;
}

View File

@ -102,8 +102,10 @@ public abstract class AbstractJwtCertificateApplicationService extends
AppCertRepository appCertRepository,
AppRepository appRepository,
AppAccountRepository appAccountRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppAccessPolicyRepository appAccessPolicyRepository) {
super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository);
super(appCertRepository, appAccountRepository, appAccessPolicyRepository,
appGroupAssociationRepository, appRepository);
this.appCertRepository = appCertRepository;
this.appRepository = appRepository;
this.appJwtConfigRepository = appJwtConfigRepository;

View File

@ -204,7 +204,7 @@ public class JwtStandardCertificateApplicationServiceImpl extends
* @param groupId {@link Long} id
*/
@Override
public String create(String name, String icon, String remark, Long groupId) {
public String create(String name, String icon, String remark, Long[] groupId) {
//1、创建应用
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.PORTAL_OR_APP,
AuthorizationType.AUTHORIZATION);
@ -229,9 +229,10 @@ public class JwtStandardCertificateApplicationServiceImpl extends
AppCertRepository appCertRepository,
AppRepository appRepository,
AppAccountRepository appAccountRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppAccessPolicyRepository appAccessPolicyRepository) {
super(appJwtConfigRepository, appCertRepository, appRepository, appAccountRepository,
appAccessPolicyRepository);
appGroupAssociationRepository, appAccessPolicyRepository);
this.appJwtConfigConverter = appJwtConfigConverter;
}
}

View File

@ -137,8 +137,10 @@ public abstract class AbstractOidcCertificateApplicationService extends
AppAccountRepository appAccountRepository,
AppAccessPolicyRepository appAccessPolicyRepository,
AppRepository appRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppOidcConfigRepository appOidcConfigRepository) {
super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository);
super(appCertRepository, appAccountRepository, appAccessPolicyRepository,
appGroupAssociationRepository, appRepository);
this.appCertRepository = appCertRepository;
this.appRepository = appRepository;
this.appOidcConfigRepository = appOidcConfigRepository;

View File

@ -78,7 +78,7 @@ public class OidcStandardCertificateApplicationServiceImpl extends
* @param groupId {@link Long} id
*/
@Override
public String create(String name, String icon, String remark, Long groupId) {
public String create(String name, String icon, String remark, Long[] groupId) {
//1、创建应用
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.APP,
AuthorizationType.AUTHORIZATION);
@ -275,9 +275,10 @@ public class OidcStandardCertificateApplicationServiceImpl extends
AppAccessPolicyRepository appAccessPolicyRepository,
AppRepository appRepository,
AppOidcConfigRepository appOidcConfigRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppOidcStandardConfigConverter appOidcStandardConfigConverter) {
super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository,
appOidcConfigRepository);
appGroupAssociationRepository, appOidcConfigRepository);
this.appOidcStandardConfigConverter = appOidcStandardConfigConverter;
}
}

View File

@ -182,13 +182,6 @@ public class AppEventType {
public static Type DELETE_APP_GROUP = new Type("eiam:event:app_group:delete",
"删除应用分组", APP_GROUP_RESOURCE, List.of(UserType.ADMIN));
/**
*
*/
public static Type ADD_APP_GROUP_ASSOCIATION = new Type(
"eiam:event:add_app_group_association", "添加应用分组关联", APP_GROUP_RESOURCE,
List.of(UserType.ADMIN));
/**
*
*/

View File

@ -504,10 +504,6 @@ public enum EventType {
*
*/
DELETE_APP_GROUP(AppEventType.DELETE_APP_GROUP),
/**
*
*/
ADD_APP_GROUP_ASSOCIATION(AppEventType.ADD_APP_GROUP_ASSOCIATION),
/**
*
*/

View File

@ -176,25 +176,6 @@ public class AppGroupController {
return ApiRestResult.<Boolean> builder().result(result).build();
}
/**
*
*
* @param appIds {@link String}
* @return {@link Boolean}
*/
@Lock
@Preview
@Validated
@Operation(summary = "添加应用组关联")
@Audit(type = EventType.ADD_APP_GROUP_ASSOCIATION)
@PostMapping(value = "/add_association/{id}")
@PreAuthorize(value = "authenticated and @sae.hasAuthority(T(cn.topiam.employee.support.security.userdetails.UserType).ADMIN)")
public ApiRestResult<Boolean> addAssociation(@PathVariable(value = "id") String id,
@Parameter(description = "应用ID") String[] appIds) {
return ApiRestResult.<Boolean> builder().result(appGroupService.addAssociation(id, appIds))
.build();
}
/**
*
*

View File

@ -73,7 +73,7 @@ public interface AppGroupConverter {
* @param appGroupPo {@link AppGroupPO}
* @return {@link AppGroupListResult}
*/
AppGroupListResult entityConvertToAppGroupListResult(AppGroupPO appGroupPo);
AppGroupListResult entityConvertToAppGroupListResult(AppGroupPO appGroupPo);
/**
*
@ -81,7 +81,7 @@ public interface AppGroupConverter {
* @param entity {@link AppGroupEntity}
* @return {@link AppGroupGetResult}
*/
AppGroupGetResult entityConvertToAppGroupResult(AppGroupEntity entity);
AppGroupGetResult entityConvertToAppGroupResult(AppGroupEntity entity);
/**
* entity

View File

@ -51,12 +51,6 @@ public class AppGroupGetResult implements Serializable {
@Parameter(description = "分组编码")
private String code;
/**
*
*/
@Parameter(description = "分组是否启用")
private Boolean enabled;
/**
*
*/

View File

@ -39,25 +39,19 @@ public class AppGroupListResult implements Serializable {
* ID
*/
@Parameter(description = "ID")
private String id;
private String id;
/**
*
*/
@Parameter(description = "分组名称")
private String name;
private String name;
/**
*
*/
@Parameter(description = "分组编码")
private String code;
/**
*
*/
@Parameter(description = "是否启用")
private Boolean enabled;
private String code;
/**
*
@ -69,6 +63,6 @@ public class AppGroupListResult implements Serializable {
*
*/
@Parameter(description = "备注")
private String remark;
private String remark;
}

View File

@ -64,6 +64,6 @@ public class AppCreateParam implements Serializable {
/**
* id
*/
@Schema(description = "应用分组id")
private Long groupId;
@Schema(description = "应用分组ID")
private Long[] groupId;
}

View File

@ -21,6 +21,7 @@ import java.io.Serializable;
import lombok.Data;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
@ -53,5 +54,4 @@ public class AppGroupCreateParam implements Serializable {
*/
@Schema(description = "备注")
private String remark;
}

View File

@ -39,23 +39,23 @@ public class AppGroupUpdateParam implements Serializable {
*/
@Schema(description = "分组id")
@NotNull(message = "ID不能为空")
private Long id;
private Long id;
/**
*
*/
@Schema(description = "分组名称")
private String name;
private String name;
/**
*
*/
@Schema(description = "分组编码")
private String code;
private String code;
/**
*
*/
@Schema(description = "备注")
private String remark;
private String remark;
}

View File

@ -78,8 +78,8 @@ public class AppGroupServiceImpl implements AppGroupService {
@Override
public Page<AppGroupListResult> getAppGroupList(PageModel pageModel, AppGroupQuery query) {
//查询映射
org.springframework.data.domain.Page<AppGroupPO> list = appGroupRepository
.getAppGroupList(query, PageRequest.of(pageModel.getCurrent(), pageModel.getPageSize()));
org.springframework.data.domain.Page<AppGroupPO> list = appGroupRepository.getAppGroupList(
query, PageRequest.of(pageModel.getCurrent(), pageModel.getPageSize()));
return appGroupConverter.entityConvertToAppGroupListResult(list);
}
@ -92,7 +92,6 @@ public class AppGroupServiceImpl implements AppGroupService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean createAppGroup(AppGroupCreateParam param) {
// TODO 创建后没有数据权限
AppGroupEntity entity = appGroupConverter.appGroupCreateParamConvertToEntity(param);
appGroupRepository.save(entity);
AuditContext.setTarget(
@ -230,7 +229,7 @@ public class AppGroupServiceImpl implements AppGroupService {
*
*
* @param appIds {@link String}
* @param id {@link String}
* @param id {@link String}
* @return {@link Boolean}
*/
@Override