mirror of https://gitee.com/topiam/eiam
添加应用功能优化
parent
e976af0188
commit
7a5bd096dd
|
@ -17,6 +17,8 @@
|
||||||
*/
|
*/
|
||||||
package cn.topiam.employee.application;
|
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.apache.commons.lang3.RandomStringUtils;
|
||||||
import org.springframework.util.AlternativeJdkIdGenerator;
|
import org.springframework.util.AlternativeJdkIdGenerator;
|
||||||
import org.springframework.util.IdGenerator;
|
import org.springframework.util.IdGenerator;
|
||||||
|
@ -33,6 +35,9 @@ import cn.topiam.employee.common.repository.app.AppRepository;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AbstractApplicationService
|
* AbstractApplicationService
|
||||||
*
|
*
|
||||||
|
@ -55,7 +60,7 @@ public abstract class AbstractApplicationService implements ApplicationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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) {
|
InitLoginType initLoginType, AuthorizationType authorizationType) {
|
||||||
AppEntity appEntity = new AppEntity();
|
AppEntity appEntity = new AppEntity();
|
||||||
appEntity.setName(name);
|
appEntity.setName(name);
|
||||||
|
@ -70,28 +75,44 @@ public abstract class AbstractApplicationService implements ApplicationService {
|
||||||
appEntity.setInitLoginType(initLoginType);
|
appEntity.setInitLoginType(initLoginType);
|
||||||
appEntity.setAuthorizationType(authorizationType);
|
appEntity.setAuthorizationType(authorizationType);
|
||||||
appEntity.setRemark(remark);
|
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
|
* AppAccountRepository
|
||||||
*/
|
*/
|
||||||
protected final AppAccountRepository appAccountRepository;
|
protected final AppAccountRepository appAccountRepository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AppGroupAssociationRepository
|
||||||
|
*/
|
||||||
|
protected final AppGroupAssociationRepository appGroupAssociationRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ApplicationRepository
|
* ApplicationRepository
|
||||||
*/
|
*/
|
||||||
protected final AppRepository appRepository;
|
protected final AppRepository appRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IdGenerator
|
* IdGenerator
|
||||||
*/
|
*/
|
||||||
protected final IdGenerator idGenerator;
|
protected final IdGenerator idGenerator;
|
||||||
|
|
||||||
protected AbstractApplicationService(AppAccountRepository appAccountRepository,
|
protected AbstractApplicationService(AppAccountRepository appAccountRepository,
|
||||||
|
AppGroupAssociationRepository appGroupAssociationRepository,
|
||||||
AppRepository appRepository) {
|
AppRepository appRepository) {
|
||||||
this.appAccountRepository = appAccountRepository;
|
this.appAccountRepository = appAccountRepository;
|
||||||
this.appRepository = appRepository;
|
this.appRepository = appRepository;
|
||||||
|
this.appGroupAssociationRepository = appGroupAssociationRepository;
|
||||||
this.idGenerator = new AlternativeJdkIdGenerator();
|
this.idGenerator = new AlternativeJdkIdGenerator();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import cn.topiam.employee.common.repository.app.*;
|
||||||
import org.bouncycastle.asn1.x500.X500Name;
|
import org.bouncycastle.asn1.x500.X500Name;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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.entity.app.AppCertEntity;
|
||||||
import cn.topiam.employee.common.enums.app.AppCertUsingType;
|
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.exception.TopIamException;
|
||||||
import cn.topiam.employee.support.util.CertUtils;
|
import cn.topiam.employee.support.util.CertUtils;
|
||||||
import cn.topiam.employee.support.util.RsaUtils;
|
import cn.topiam.employee.support.util.RsaUtils;
|
||||||
|
@ -128,8 +125,9 @@ public abstract class AbstractCertificateApplicationService extends AbstractAppl
|
||||||
protected AbstractCertificateApplicationService(AppCertRepository appCertRepository,
|
protected AbstractCertificateApplicationService(AppCertRepository appCertRepository,
|
||||||
AppAccountRepository appAccountRepository,
|
AppAccountRepository appAccountRepository,
|
||||||
AppAccessPolicyRepository appAccessPolicyRepository,
|
AppAccessPolicyRepository appAccessPolicyRepository,
|
||||||
|
AppGroupAssociationRepository appGroupAssociationRepository,
|
||||||
AppRepository appRepository) {
|
AppRepository appRepository) {
|
||||||
super(appAccountRepository, appRepository);
|
super(appAccountRepository, appGroupAssociationRepository, appRepository);
|
||||||
this.appCertRepository = appCertRepository;
|
this.appCertRepository = appCertRepository;
|
||||||
this.appAccessPolicyRepository = appAccessPolicyRepository;
|
this.appAccessPolicyRepository = appAccessPolicyRepository;
|
||||||
this.idGenerator = new AlternativeJdkIdGenerator();
|
this.idGenerator = new AlternativeJdkIdGenerator();
|
||||||
|
|
|
@ -96,7 +96,7 @@ public interface ApplicationService {
|
||||||
* @return {@link Long} 应用ID
|
* @return {@link Long} 应用ID
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@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}
|
* @param authorizationType {@link AuthorizationType}
|
||||||
* @return {@link AppEntity}
|
* @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);
|
InitLoginType initLoginType, AuthorizationType authorizationType);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.entity.app.po.AppFormConfigPO;
|
||||||
import cn.topiam.employee.common.repository.app.AppAccountRepository;
|
import cn.topiam.employee.common.repository.app.AppAccountRepository;
|
||||||
import cn.topiam.employee.common.repository.app.AppFormConfigRepository;
|
import cn.topiam.employee.common.repository.app.AppFormConfigRepository;
|
||||||
|
import cn.topiam.employee.common.repository.app.AppGroupAssociationRepository;
|
||||||
import cn.topiam.employee.common.repository.app.AppRepository;
|
import cn.topiam.employee.common.repository.app.AppRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -83,8 +84,9 @@ public abstract class AbstractFormApplicationService extends AbstractApplication
|
||||||
|
|
||||||
protected AbstractFormApplicationService(AppRepository appRepository,
|
protected AbstractFormApplicationService(AppRepository appRepository,
|
||||||
AppAccountRepository appAccountRepository,
|
AppAccountRepository appAccountRepository,
|
||||||
|
AppGroupAssociationRepository appGroupAssociationRepository,
|
||||||
AppFormConfigRepository appFormConfigRepository) {
|
AppFormConfigRepository appFormConfigRepository) {
|
||||||
super(appAccountRepository, appRepository);
|
super(appAccountRepository, appGroupAssociationRepository, appRepository);
|
||||||
this.appFormConfigRepository = appFormConfigRepository;
|
this.appFormConfigRepository = appFormConfigRepository;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import cn.topiam.employee.common.repository.app.AppGroupAssociationRepository;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
@ -199,7 +200,7 @@ public class FormStandardApplicationServiceImpl extends AbstractFormApplicationS
|
||||||
* @param groupId {@link Long} 分组id
|
* @param groupId {@link Long} 分组id
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String create(String name, String icon, String remark, Long groupId) {
|
public String create(String name, String icon, String remark, Long[] groupId) {
|
||||||
//1、创建应用
|
//1、创建应用
|
||||||
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.PORTAL_OR_APP,
|
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.PORTAL_OR_APP,
|
||||||
AuthorizationType.AUTHORIZATION);
|
AuthorizationType.AUTHORIZATION);
|
||||||
|
@ -216,8 +217,10 @@ public class FormStandardApplicationServiceImpl extends AbstractFormApplicationS
|
||||||
protected FormStandardApplicationServiceImpl(AppAccountRepository appAccountRepository,
|
protected FormStandardApplicationServiceImpl(AppAccountRepository appAccountRepository,
|
||||||
AppFormConfigRepository appFormConfigRepository,
|
AppFormConfigRepository appFormConfigRepository,
|
||||||
AppRepository appRepository,
|
AppRepository appRepository,
|
||||||
|
AppGroupAssociationRepository appGroupAssociationRepository,
|
||||||
AppFormConfigConverter appFormConfigConverter) {
|
AppFormConfigConverter appFormConfigConverter) {
|
||||||
super(appRepository, appAccountRepository, appFormConfigRepository);
|
super(appRepository, appAccountRepository, appGroupAssociationRepository,
|
||||||
|
appFormConfigRepository);
|
||||||
this.appFormConfigConverter = appFormConfigConverter;
|
this.appFormConfigConverter = appFormConfigConverter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -102,8 +102,10 @@ public abstract class AbstractJwtCertificateApplicationService extends
|
||||||
AppCertRepository appCertRepository,
|
AppCertRepository appCertRepository,
|
||||||
AppRepository appRepository,
|
AppRepository appRepository,
|
||||||
AppAccountRepository appAccountRepository,
|
AppAccountRepository appAccountRepository,
|
||||||
|
AppGroupAssociationRepository appGroupAssociationRepository,
|
||||||
AppAccessPolicyRepository appAccessPolicyRepository) {
|
AppAccessPolicyRepository appAccessPolicyRepository) {
|
||||||
super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository);
|
super(appCertRepository, appAccountRepository, appAccessPolicyRepository,
|
||||||
|
appGroupAssociationRepository, appRepository);
|
||||||
this.appCertRepository = appCertRepository;
|
this.appCertRepository = appCertRepository;
|
||||||
this.appRepository = appRepository;
|
this.appRepository = appRepository;
|
||||||
this.appJwtConfigRepository = appJwtConfigRepository;
|
this.appJwtConfigRepository = appJwtConfigRepository;
|
||||||
|
|
|
@ -204,7 +204,7 @@ public class JwtStandardCertificateApplicationServiceImpl extends
|
||||||
* @param groupId {@link Long} 分组id
|
* @param groupId {@link Long} 分组id
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String create(String name, String icon, String remark, Long groupId) {
|
public String create(String name, String icon, String remark, Long[] groupId) {
|
||||||
//1、创建应用
|
//1、创建应用
|
||||||
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.PORTAL_OR_APP,
|
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.PORTAL_OR_APP,
|
||||||
AuthorizationType.AUTHORIZATION);
|
AuthorizationType.AUTHORIZATION);
|
||||||
|
@ -229,9 +229,10 @@ public class JwtStandardCertificateApplicationServiceImpl extends
|
||||||
AppCertRepository appCertRepository,
|
AppCertRepository appCertRepository,
|
||||||
AppRepository appRepository,
|
AppRepository appRepository,
|
||||||
AppAccountRepository appAccountRepository,
|
AppAccountRepository appAccountRepository,
|
||||||
|
AppGroupAssociationRepository appGroupAssociationRepository,
|
||||||
AppAccessPolicyRepository appAccessPolicyRepository) {
|
AppAccessPolicyRepository appAccessPolicyRepository) {
|
||||||
super(appJwtConfigRepository, appCertRepository, appRepository, appAccountRepository,
|
super(appJwtConfigRepository, appCertRepository, appRepository, appAccountRepository,
|
||||||
appAccessPolicyRepository);
|
appGroupAssociationRepository, appAccessPolicyRepository);
|
||||||
this.appJwtConfigConverter = appJwtConfigConverter;
|
this.appJwtConfigConverter = appJwtConfigConverter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,8 +137,10 @@ public abstract class AbstractOidcCertificateApplicationService extends
|
||||||
AppAccountRepository appAccountRepository,
|
AppAccountRepository appAccountRepository,
|
||||||
AppAccessPolicyRepository appAccessPolicyRepository,
|
AppAccessPolicyRepository appAccessPolicyRepository,
|
||||||
AppRepository appRepository,
|
AppRepository appRepository,
|
||||||
|
AppGroupAssociationRepository appGroupAssociationRepository,
|
||||||
AppOidcConfigRepository appOidcConfigRepository) {
|
AppOidcConfigRepository appOidcConfigRepository) {
|
||||||
super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository);
|
super(appCertRepository, appAccountRepository, appAccessPolicyRepository,
|
||||||
|
appGroupAssociationRepository, appRepository);
|
||||||
this.appCertRepository = appCertRepository;
|
this.appCertRepository = appCertRepository;
|
||||||
this.appRepository = appRepository;
|
this.appRepository = appRepository;
|
||||||
this.appOidcConfigRepository = appOidcConfigRepository;
|
this.appOidcConfigRepository = appOidcConfigRepository;
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class OidcStandardCertificateApplicationServiceImpl extends
|
||||||
* @param groupId {@link Long} 分组id
|
* @param groupId {@link Long} 分组id
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String create(String name, String icon, String remark, Long groupId) {
|
public String create(String name, String icon, String remark, Long[] groupId) {
|
||||||
//1、创建应用
|
//1、创建应用
|
||||||
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.APP,
|
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.APP,
|
||||||
AuthorizationType.AUTHORIZATION);
|
AuthorizationType.AUTHORIZATION);
|
||||||
|
@ -275,9 +275,10 @@ public class OidcStandardCertificateApplicationServiceImpl extends
|
||||||
AppAccessPolicyRepository appAccessPolicyRepository,
|
AppAccessPolicyRepository appAccessPolicyRepository,
|
||||||
AppRepository appRepository,
|
AppRepository appRepository,
|
||||||
AppOidcConfigRepository appOidcConfigRepository,
|
AppOidcConfigRepository appOidcConfigRepository,
|
||||||
|
AppGroupAssociationRepository appGroupAssociationRepository,
|
||||||
AppOidcStandardConfigConverter appOidcStandardConfigConverter) {
|
AppOidcStandardConfigConverter appOidcStandardConfigConverter) {
|
||||||
super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository,
|
super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository,
|
||||||
appOidcConfigRepository);
|
appGroupAssociationRepository, appOidcConfigRepository);
|
||||||
this.appOidcStandardConfigConverter = appOidcStandardConfigConverter;
|
this.appOidcStandardConfigConverter = appOidcStandardConfigConverter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,6 @@ public class AppCreateParam implements Serializable {
|
||||||
/**
|
/**
|
||||||
* 应用分组id
|
* 应用分组id
|
||||||
*/
|
*/
|
||||||
@Schema(description = "应用分组id")
|
@Schema(description = "应用分组ID")
|
||||||
private Long groupId;
|
private Long[] groupId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,11 +54,4 @@ public class AppGroupCreateParam implements Serializable {
|
||||||
*/
|
*/
|
||||||
@Schema(description = "备注")
|
@Schema(description = "备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
/**
|
|
||||||
* 应用分组ID
|
|
||||||
*/
|
|
||||||
@Parameter(description = "应用分组ID")
|
|
||||||
private String[] groupId;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,14 +94,6 @@ public class AppGroupServiceImpl implements AppGroupService {
|
||||||
public Boolean createAppGroup(AppGroupCreateParam param) {
|
public Boolean createAppGroup(AppGroupCreateParam param) {
|
||||||
AppGroupEntity entity = appGroupConverter.appGroupCreateParamConvertToEntity(param);
|
AppGroupEntity entity = appGroupConverter.appGroupCreateParamConvertToEntity(param);
|
||||||
appGroupRepository.save(entity);
|
appGroupRepository.save(entity);
|
||||||
List<AppGroupAssociationEntity> list = new ArrayList<>();
|
|
||||||
for (String groupId : param.getGroupId()) {
|
|
||||||
AppGroupAssociationEntity appGroupAssociationEntity = new AppGroupAssociationEntity();
|
|
||||||
appGroupAssociationEntity.setGroupId(Long.valueOf(groupId));
|
|
||||||
appGroupAssociationEntity.setAppId(entity.getId());
|
|
||||||
list.add(appGroupAssociationEntity);
|
|
||||||
}
|
|
||||||
appGroupAssociationRepository.saveAll(list);
|
|
||||||
AuditContext.setTarget(
|
AuditContext.setTarget(
|
||||||
Target.builder().id(String.valueOf(entity.getId())).type(TargetType.APP_GROUP).build());
|
Target.builder().id(String.valueOf(entity.getId())).type(TargetType.APP_GROUP).build());
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue