getPermissionRoleList(PageModel page,
- AppPermissionRoleListQuery query);
-
- /**
- * 创建角色
- *
- * @param param {@link AppPermissionRoleCreateParam}
- * @return {@link Boolean}
- */
- boolean createPermissionRole(AppPermissionRoleCreateParam param);
-
- /**
- * 更新角色
- *
- * @param param {@link PermissionRoleUpdateParam}
- * @return {@link Boolean}
- */
- boolean updatePermissionRole(PermissionRoleUpdateParam param);
-
- /**
- * 删除角色
- *
- * @param ids {@link String}
- * @return {@link Boolean}
- */
- boolean deletePermissionRole(String ids);
-
- /**
- * 角色详情
- *
- * @param id {@link Long}
- * @return {@link AppPermissionRoleResult}
- */
- AppPermissionRoleResult getPermissionRole(Long id);
-
- /**
- * 参数有效性验证
- *
- * @param type {@link CheckValidityType}
- * @param value {@link String}
- * @param appId {@link Long}
- * @param id {@link Long}
- * @return {@link Boolean}
- */
- Boolean permissionRoleParamCheck(CheckValidityType type, String value, Long appId, Long id);
-
- /**
- * 更新角色状态
- *
- * @param id {@link String}
- * @param status {@link Boolean}
- * @return {@link Boolean}
- */
- Boolean updatePermissionRoleStatus(String id, Boolean status);
-}
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/OrganizationService.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/OrganizationService.java
similarity index 85%
rename from eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/OrganizationService.java
rename to eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/OrganizationService.java
index 5cb7334b..f914f526 100644
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/OrganizationService.java
+++ b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/OrganizationService.java
@@ -15,14 +15,14 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-package cn.topiam.employee.openapi.service;
+package cn.topiam.employee.openapi.service.account;
import java.util.List;
-import cn.topiam.employee.openapi.pojo.request.account.save.account.OrganizationCreateParam;
-import cn.topiam.employee.openapi.pojo.request.account.update.account.OrganizationUpdateParam;
-import cn.topiam.employee.openapi.pojo.response.account.OrganizationChildResult;
-import cn.topiam.employee.openapi.pojo.response.account.OrganizationResult;
+import cn.topiam.employee.openapi.pojo.result.account.OrganizationChildResult;
+import cn.topiam.employee.openapi.pojo.result.account.OrganizationResult;
+import cn.topiam.employee.openapi.pojo.save.account.OrganizationCreateParam;
+import cn.topiam.employee.openapi.pojo.update.account.OrganizationUpdateParam;
/**
*
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/UserService.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/UserService.java
similarity index 87%
rename from eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/UserService.java
rename to eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/UserService.java
index 43480b92..86bb47fa 100644
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/UserService.java
+++ b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/UserService.java
@@ -15,16 +15,16 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-package cn.topiam.employee.openapi.service;
+package cn.topiam.employee.openapi.service.account;
import java.io.Serializable;
import cn.topiam.employee.common.entity.account.query.UserListQuery;
import cn.topiam.employee.common.enums.UserStatus;
-import cn.topiam.employee.openapi.pojo.request.account.save.account.UserCreateParam;
-import cn.topiam.employee.openapi.pojo.request.account.update.account.UserUpdateParam;
-import cn.topiam.employee.openapi.pojo.response.account.UserListResult;
-import cn.topiam.employee.openapi.pojo.response.account.UserResult;
+import cn.topiam.employee.openapi.pojo.result.account.UserListResult;
+import cn.topiam.employee.openapi.pojo.result.account.UserResult;
+import cn.topiam.employee.openapi.pojo.save.account.UserCreateParam;
+import cn.topiam.employee.openapi.pojo.update.account.UserUpdateParam;
import cn.topiam.employee.support.repository.page.domain.Page;
import cn.topiam.employee.support.repository.page.domain.PageModel;
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/OrganizationServiceImpl.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/impl/OrganizationServiceImpl.java
similarity index 95%
rename from eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/OrganizationServiceImpl.java
rename to eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/impl/OrganizationServiceImpl.java
index c84ede67..d1c55dc9 100644
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/OrganizationServiceImpl.java
+++ b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/impl/OrganizationServiceImpl.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-package cn.topiam.employee.openapi.service.impl;
+package cn.topiam.employee.openapi.service.account.impl;
import java.util.LinkedHashMap;
import java.util.List;
@@ -46,11 +46,11 @@ import cn.topiam.employee.core.mq.UserMessageTag;
import cn.topiam.employee.openapi.constants.OpenApiStatus;
import cn.topiam.employee.openapi.converter.account.OrganizationConverter;
import cn.topiam.employee.openapi.exception.OpenApiException;
-import cn.topiam.employee.openapi.pojo.request.account.save.account.OrganizationCreateParam;
-import cn.topiam.employee.openapi.pojo.request.account.update.account.OrganizationUpdateParam;
-import cn.topiam.employee.openapi.pojo.response.account.OrganizationChildResult;
-import cn.topiam.employee.openapi.pojo.response.account.OrganizationResult;
-import cn.topiam.employee.openapi.service.OrganizationService;
+import cn.topiam.employee.openapi.pojo.result.account.OrganizationChildResult;
+import cn.topiam.employee.openapi.pojo.result.account.OrganizationResult;
+import cn.topiam.employee.openapi.pojo.save.account.OrganizationCreateParam;
+import cn.topiam.employee.openapi.pojo.update.account.OrganizationUpdateParam;
+import cn.topiam.employee.openapi.service.account.OrganizationService;
import cn.topiam.employee.support.repository.domain.IdEntity;
import cn.topiam.employee.support.util.BeanUtils;
@@ -258,9 +258,7 @@ public class OrganizationServiceImpl implements OrganizationService {
public OrganizationResult getOrganizationById(String id) {
OrganizationEntity entity = organizationRepository.findById(id)
.orElseThrow(() -> new OpenApiException(OpenApiStatus.DEPARTMENT_NOT_EXIST));
- OrganizationResult organizationResult = organizationConverter
- .entityConvertToOrgDetailResult(entity);
- return organizationResult;
+ return organizationConverter.entityConvertToOrgDetailResult(entity);
}
/**
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/UserServiceImpl.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/impl/UserServiceImpl.java
similarity index 97%
rename from eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/UserServiceImpl.java
rename to eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/impl/UserServiceImpl.java
index 5677b161..6893df13 100644
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/UserServiceImpl.java
+++ b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/account/impl/UserServiceImpl.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-package cn.topiam.employee.openapi.service.impl;
+package cn.topiam.employee.openapi.service.account.impl;
import java.io.Serializable;
import java.time.LocalDate;
@@ -53,11 +53,11 @@ import cn.topiam.employee.core.mq.UserMessageTag;
import cn.topiam.employee.openapi.constants.OpenApiStatus;
import cn.topiam.employee.openapi.converter.account.UserConverter;
import cn.topiam.employee.openapi.exception.OpenApiException;
-import cn.topiam.employee.openapi.pojo.request.account.save.account.UserCreateParam;
-import cn.topiam.employee.openapi.pojo.request.account.update.account.UserUpdateParam;
-import cn.topiam.employee.openapi.pojo.response.account.UserListResult;
-import cn.topiam.employee.openapi.pojo.response.account.UserResult;
-import cn.topiam.employee.openapi.service.UserService;
+import cn.topiam.employee.openapi.pojo.result.account.UserListResult;
+import cn.topiam.employee.openapi.pojo.result.account.UserResult;
+import cn.topiam.employee.openapi.pojo.save.account.UserCreateParam;
+import cn.topiam.employee.openapi.pojo.update.account.UserUpdateParam;
+import cn.topiam.employee.openapi.service.account.UserService;
import cn.topiam.employee.support.repository.page.domain.Page;
import cn.topiam.employee.support.repository.page.domain.PageModel;
import cn.topiam.employee.support.security.password.PasswordPolicyManager;
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/AppAccountService.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/app/AppAccountService.java
similarity index 89%
rename from eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/AppAccountService.java
rename to eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/app/AppAccountService.java
index 2d3689d0..49c0220d 100644
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/AppAccountService.java
+++ b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/app/AppAccountService.java
@@ -15,11 +15,11 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-package cn.topiam.employee.openapi.service;
+package cn.topiam.employee.openapi.service.app;
import cn.topiam.employee.common.entity.app.query.AppAccountQuery;
-import cn.topiam.employee.openapi.pojo.request.app.save.AppAccountCreateParam;
-import cn.topiam.employee.openapi.pojo.response.app.AppAccountListResult;
+import cn.topiam.employee.openapi.pojo.result.app.AppAccountListResult;
+import cn.topiam.employee.openapi.pojo.save.app.AppAccountCreateParam;
import cn.topiam.employee.support.repository.page.domain.Page;
import cn.topiam.employee.support.repository.page.domain.PageModel;
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/AppAccountServiceImpl.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/app/impl/AppAccountServiceImpl.java
similarity index 94%
rename from eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/AppAccountServiceImpl.java
rename to eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/app/impl/AppAccountServiceImpl.java
index 92a15fea..de4e6ddd 100644
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/AppAccountServiceImpl.java
+++ b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/app/impl/AppAccountServiceImpl.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-package cn.topiam.employee.openapi.service.impl;
+package cn.topiam.employee.openapi.service.app.impl;
import java.util.Optional;
@@ -32,9 +32,9 @@ import cn.topiam.employee.common.entity.app.query.AppAccountQuery;
import cn.topiam.employee.common.exception.app.AppAccountExistException;
import cn.topiam.employee.common.repository.app.AppAccountRepository;
import cn.topiam.employee.openapi.converter.app.AppAccountConverter;
-import cn.topiam.employee.openapi.pojo.request.app.save.AppAccountCreateParam;
-import cn.topiam.employee.openapi.pojo.response.app.AppAccountListResult;
-import cn.topiam.employee.openapi.service.AppAccountService;
+import cn.topiam.employee.openapi.pojo.result.app.AppAccountListResult;
+import cn.topiam.employee.openapi.pojo.save.app.AppAccountCreateParam;
+import cn.topiam.employee.openapi.service.app.AppAccountService;
import cn.topiam.employee.support.exception.TopIamException;
import cn.topiam.employee.support.repository.page.domain.Page;
import cn.topiam.employee.support.repository.page.domain.PageModel;
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/request/package-info.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/app/package-info.java
similarity index 94%
rename from eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/request/package-info.java
rename to eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/app/package-info.java
index cccb2adf..8af32a44 100644
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/request/package-info.java
+++ b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/app/package-info.java
@@ -15,4 +15,4 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-package cn.topiam.employee.openapi.pojo.request;
\ No newline at end of file
+package cn.topiam.employee.openapi.service.app;
\ No newline at end of file
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionActionServiceImpl.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionActionServiceImpl.java
deleted file mode 100644
index c29483a2..00000000
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionActionServiceImpl.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * eiam-openapi - Employee Identity and Access Management
- * Copyright © 2022-Present Jinan Yuanchuang Network Technology Co., Ltd. (support@topiam.cn)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-package cn.topiam.employee.openapi.service.impl;
-
-import java.util.List;
-
-import org.springframework.stereotype.Service;
-
-import cn.topiam.employee.openapi.pojo.request.app.query.AppPermissionListQuery;
-import cn.topiam.employee.openapi.pojo.request.app.save.AppPermissionActionCreateParam;
-import cn.topiam.employee.openapi.pojo.request.app.update.ResourceActionUpdateParam;
-import cn.topiam.employee.openapi.pojo.response.app.AppPermissionActionGetResult;
-import cn.topiam.employee.openapi.pojo.response.app.AppPermissionActionListResult;
-import cn.topiam.employee.openapi.service.PermissionActionService;
-
-import lombok.RequiredArgsConstructor;
-
-/**
- *
- * 资源权限 服务类
- *
- *
- * @author TopIAM
- * Created by support@topiam.cn on 2020-08-10
- */
-@Service
-@RequiredArgsConstructor
-public class PermissionActionServiceImpl implements PermissionActionService {
-
- /**
- * 获取权限列表
- *
- * @param query {@link AppPermissionListQuery}
- * @return {@link AppPermissionActionListResult}
- */
- @Override
- public List getPermissionActionList(AppPermissionListQuery query) {
- return null;
- }
-
- /**
- * 获取权限详情
- *
- * @param id {@link String}
- * @return {@link AppPermissionActionGetResult}
- */
- @Override
- public AppPermissionActionGetResult getPermissionAction(String id) {
- return null;
- }
-
- /**
- * 删除权限
- *
- * @param id {@link String}
- * @return {@link Boolean}
- */
- @Override
- public Boolean deletePermissionAction(String id) {
- return null;
- }
-
- /**
- * 创建权限
- *
- * @param param {@link AppPermissionActionCreateParam}
- * @return {@link Boolean}
- */
- @Override
- public Boolean createPermissionAction(AppPermissionActionCreateParam param) {
- return null;
- }
-
- /**
- * 更新权限
- *
- * @param param {@link ResourceActionUpdateParam}
- * @return {@link Boolean}
- */
- @Override
- public Boolean updatePermissionAction(ResourceActionUpdateParam param) {
- return null;
- }
-}
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionPolicyServiceImpl.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionPolicyServiceImpl.java
deleted file mode 100644
index dc5f0725..00000000
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionPolicyServiceImpl.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * eiam-openapi - Employee Identity and Access Management
- * Copyright © 2022-Present Jinan Yuanchuang Network Technology Co., Ltd. (support@topiam.cn)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-package cn.topiam.employee.openapi.service.impl;
-
-import org.springframework.data.querydsl.QPageRequest;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import cn.topiam.employee.common.entity.app.query.AppPolicyQuery;
-import cn.topiam.employee.common.entity.permission.PermissionPolicyEntity;
-import cn.topiam.employee.common.entity.permission.po.PermissionPolicyPO;
-import cn.topiam.employee.common.exception.app.AppPolicyNotExistException;
-import cn.topiam.employee.common.repository.permission.PermissionPolicyRepository;
-import cn.topiam.employee.openapi.converter.permission.PermissionPolicyConverter;
-import cn.topiam.employee.openapi.pojo.request.app.query.OpenApiPolicyQuery;
-import cn.topiam.employee.openapi.pojo.request.app.save.AppPermissionPolicyCreateParam;
-import cn.topiam.employee.openapi.pojo.request.app.update.AppPermissionPolicyUpdateParam;
-import cn.topiam.employee.openapi.pojo.response.app.AppPermissionPolicyGetResult;
-import cn.topiam.employee.openapi.service.PermissionPolicyService;
-import cn.topiam.employee.support.repository.page.domain.Page;
-import cn.topiam.employee.support.repository.page.domain.PageModel;
-
-import lombok.RequiredArgsConstructor;
-
-/**
- *
- * 权限策略 服务实现类
- *
- *
- * @author TopIAM
- * Created by support@topiam.cn on 2020-08-10
- */
-@Service
-@RequiredArgsConstructor
-public class PermissionPolicyServiceImpl implements PermissionPolicyService {
-
- /**
- * 获取策略列表
- *
- * @param page {@link PageModel}
- * @param query {@link OpenApiPolicyQuery}
- * @return {@link PermissionPolicyPO}
- */
- @Override
- public Page getPermissionPolicyList(PageModel page,
- OpenApiPolicyQuery query) {
- AppPolicyQuery appPolicyQuery = new AppPolicyQuery();
- // TODO token获取所属应用
- // appPolicyQuery.setAppId(0L);
- appPolicyQuery.setEffect(query.getEffect());
- appPolicyQuery.setSubjectId(query.getSubjectId());
- appPolicyQuery.setObjectId(query.getObjectId());
- appPolicyQuery.setSubjectType(query.getSubjectType());
- appPolicyQuery.setObjectType(query.getObjectType());
- QPageRequest request = QPageRequest.of(page.getCurrent(), page.getPageSize());
- org.springframework.data.domain.Page data = permissionPolicyRepository
- .findPage(appPolicyQuery, request);
- return permissionPolicyConverter.entityConvertToPolicyListResult(data);
- }
-
- /**
- * 获取策略
- *
- * @param id {@link String}
- * @return {@link AppPermissionPolicyGetResult}
- */
- @Override
- public AppPermissionPolicyGetResult getPermissionPolicy(String id) {
- return null;
- }
-
- /**
- * 删除策略
- *
- * @param id {@link String}
- * @return {@link Boolean}
- */
- @Override
- public Boolean deletePermissionPolicy(String id) {
- Long policyId = Long.valueOf(id);
- permissionPolicyRepository.findById(policyId).orElseThrow(AppPolicyNotExistException::new);
- permissionPolicyRepository.deleteById(policyId);
- return true;
- }
-
- /**
- * 创建策略
- *
- * @param param {@link AppPermissionPolicyCreateParam}
- * @return {@link Boolean}
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean createPermissionPolicy(AppPermissionPolicyCreateParam param) {
- PermissionPolicyEntity resource = permissionPolicyConverter
- .policyCreateParamConvertToEntity(param);
- // 新增策略
- permissionPolicyRepository.save(resource);
- return true;
- }
-
- /**
- * 更新策略
- *
- * @param param {@link AppPermissionPolicyUpdateParam}
- * @return {@link Boolean}
- */
- @Override
- public Boolean updatePermissionPolicy(AppPermissionPolicyUpdateParam param) {
- PermissionPolicyEntity resource = permissionPolicyConverter
- .policyUpdateParamConvertToEntity(param);
- // 更新策略
- permissionPolicyRepository.save(resource);
- return null;
- }
-
- private final PermissionPolicyConverter permissionPolicyConverter;
-
- private final PermissionPolicyRepository permissionPolicyRepository;
-}
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionResourceServiceImpl.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionResourceServiceImpl.java
deleted file mode 100644
index fb08a53f..00000000
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionResourceServiceImpl.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * eiam-openapi - Employee Identity and Access Management
- * Copyright © 2022-Present Jinan Yuanchuang Network Technology Co., Ltd. (support@topiam.cn)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-package cn.topiam.employee.openapi.service.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.data.querydsl.QPageRequest;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.querydsl.core.types.Predicate;
-import com.querydsl.core.types.dsl.BooleanExpression;
-
-import cn.topiam.employee.common.entity.permission.PermissionActionEntity;
-import cn.topiam.employee.common.entity.permission.PermissionResourceEntity;
-import cn.topiam.employee.common.entity.permission.QPermissionResourceEntity;
-import cn.topiam.employee.common.enums.CheckValidityType;
-import cn.topiam.employee.common.exception.app.AppResourceNotExistException;
-import cn.topiam.employee.common.repository.permission.PermissionActionRepository;
-import cn.topiam.employee.common.repository.permission.PermissionPolicyRepository;
-import cn.topiam.employee.common.repository.permission.PermissionResourceRepository;
-import cn.topiam.employee.openapi.converter.permission.PermissionResourceConverter;
-import cn.topiam.employee.openapi.pojo.request.app.AppPermissionsActionParam;
-import cn.topiam.employee.openapi.pojo.request.app.query.AppResourceListQuery;
-import cn.topiam.employee.openapi.pojo.request.app.query.OpenApiPolicyQuery;
-import cn.topiam.employee.openapi.pojo.request.app.save.AppPermissionResourceCreateParam;
-import cn.topiam.employee.openapi.pojo.request.app.update.AppPermissionResourceUpdateParam;
-import cn.topiam.employee.openapi.pojo.response.app.AppPermissionResourceGetResult;
-import cn.topiam.employee.openapi.pojo.response.app.AppPermissionResourceListResult;
-import cn.topiam.employee.openapi.service.PermissionResourceService;
-import cn.topiam.employee.support.repository.page.domain.Page;
-import cn.topiam.employee.support.repository.page.domain.PageModel;
-
-import lombok.RequiredArgsConstructor;
-
-/**
- *
- * 资源权限 服务实现类
- *
- *
- * @author TopIAM
- * Created by support@topiam.cn on 2020-08-10
- */
-@Service
-@RequiredArgsConstructor
-public class PermissionResourceServiceImpl implements PermissionResourceService {
-
- /**
- * 获取资源列表
- *
- * @param page {@link PageModel}
- * @param query {@link OpenApiPolicyQuery}
- * @return {@link AppPermissionResourceListResult}
- */
- @Override
- public Page getPermissionResourceList(PageModel page,
- AppResourceListQuery query) {
- org.springframework.data.domain.Page data;
- Predicate predicate = permissionResourceConverter
- .resourcePaginationParamConvertToPredicate(query);
- QPageRequest request = QPageRequest.of(page.getCurrent(), page.getPageSize());
- data = appResourceRepository.findAll(predicate, request);
- return permissionResourceConverter.entityConvertToResourceListResult(data);
- }
-
- /**
- * 获取资源
- *
- * @param id {@link String}
- * @return {@link AppPermissionResourceGetResult}
- */
- @Override
- public AppPermissionResourceGetResult getPermissionResource(String id) {
- PermissionResourceEntity resource = appResourceRepository.findById(Long.valueOf(id))
- .orElseThrow(AppResourceNotExistException::new);
- return permissionResourceConverter.entityConvertToResourceGetResult(resource);
- }
-
- /**
- * 删除资源
- *
- * @param id {@link String}
- * @return {@link Boolean}
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean deletePermissionResource(String id) {
- Long resourceId = Long.valueOf(id);
- PermissionResourceEntity resource = appResourceRepository.findById(resourceId)
- .orElseThrow(AppResourceNotExistException::new);
- List actionList = permissionActionRepository
- .findAllByResource(resource);
- List objectIdList = new ArrayList<>(
- actionList.stream().map(PermissionActionEntity::getId).toList());
- objectIdList.add(resourceId);
- permissionPolicyRepository.deleteAllByObjectIdIn(objectIdList);
- appResourceRepository.deleteById(resourceId);
- return true;
- }
-
- /**
- * 创建资源
- *
- * @param param {@link AppPermissionResourceCreateParam}
- * @return {@link Boolean}
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean createPermissionResource(AppPermissionResourceCreateParam param) {
- PermissionResourceEntity resource = permissionResourceConverter
- .resourceCreateParamConvertToEntity(param);
- buildActions(param.getActions(), resource);
- // 新增资源
- appResourceRepository.save(resource);
- return true;
- }
-
- /**
- * 更新资源
- *
- * @param param {@link AppPermissionResourceUpdateParam}
- * @return {@link Boolean}
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean updatePermissionResource(AppPermissionResourceUpdateParam param) {
- PermissionResourceEntity resource = permissionResourceConverter
- .resourceUpdateParamConvertToEntity(param);
- buildActions(param.getActions(), resource);
- // 查询资源下所有权限
- List actionList = permissionActionRepository
- .findAllByResource(resource);
- // 取出未删除的权限id
- Set reservedSet = resource.getActions().stream().map(PermissionActionEntity::getId)
- .collect(Collectors.toSet());
- // 过滤要删除的权限id
- List removeActions = actionList.stream()
- .filter(item -> reservedSet.contains(item.getId())).map(PermissionActionEntity::getId)
- .toList();
- permissionPolicyRepository.deleteAllByObjectIdIn(removeActions);
- // 更新资源
- appResourceRepository.save(resource);
- return true;
- }
-
- /**
- * 参数有效性验证
- *
- * @param type {@link CheckValidityType}
- * @param value {@link String}
- * @param appId {@link Long}
- * @param id {@link Long}
- * @return {@link Boolean}
- */
- @SuppressWarnings("DuplicatedCode")
- @Override
- public Boolean permissionResourceParamCheck(CheckValidityType type, String value, Long appId,
- Long id) {
- QPermissionResourceEntity role = QPermissionResourceEntity.permissionResourceEntity;
- PermissionResourceEntity entity = new PermissionResourceEntity();
- boolean result = false;
- // ID存在说明是修改操作,查询一下当前数据
- if (Objects.nonNull(id)) {
- entity = appResourceRepository.findById(id)
- .orElseThrow(AppResourceNotExistException::new);
- }
- //资源名称
- if (CheckValidityType.NAME.equals(type)) {
- if (StringUtils.equals(entity.getName(), value)) {
- return true;
- }
- BooleanExpression eq = role.name.eq(value);
- eq.and(role.appId.eq(appId));
- result = !appResourceRepository.exists(eq);
- }
- //资源编码
- if (CheckValidityType.CODE.equals(type)) {
- if (StringUtils.equals(entity.getCode(), value)) {
- return true;
- }
- BooleanExpression eq = role.code.eq(value);
- eq.and(role.appId.eq(appId));
- result = !appResourceRepository.exists(eq);
- }
- return result;
- }
-
- /**
- * 批量处理actions
- *
- * @param permissions {@link List}
- * @param resource {@link PermissionResourceEntity >}
- */
- private void buildActions(List permissions,
- PermissionResourceEntity resource) {
- // 权限
- List list = new ArrayList<>();
- for (AppPermissionsActionParam p : permissions) {
- PermissionActionEntity entity = new PermissionActionEntity();
- entity.setResource(resource);
- entity.setType(p.getType());
- entity.setName(p.getName());
- //API需要单独处理
- entity.setValue(p.getValue());
- list.add(entity);
- }
- resource.setActions(list);
- }
-
- private final PermissionResourceConverter permissionResourceConverter;
-
- private final PermissionResourceRepository appResourceRepository;
- /**
- * PolicyRepository
- */
- private final PermissionPolicyRepository permissionPolicyRepository;
- /**
- * ActionRepository
- */
- private final PermissionActionRepository permissionActionRepository;
-}
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionRoleServiceImpl.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionRoleServiceImpl.java
deleted file mode 100644
index 12f99485..00000000
--- a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/service/impl/PermissionRoleServiceImpl.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * eiam-openapi - Employee Identity and Access Management
- * Copyright © 2022-Present Jinan Yuanchuang Network Technology Co., Ltd. (support@topiam.cn)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-package cn.topiam.employee.openapi.service.impl;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.data.querydsl.QPageRequest;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.querydsl.core.types.Predicate;
-import com.querydsl.core.types.dsl.BooleanExpression;
-
-import cn.topiam.employee.common.entity.permission.PermissionRoleEntity;
-import cn.topiam.employee.common.entity.permission.QPermissionRoleEntity;
-import cn.topiam.employee.common.enums.CheckValidityType;
-import cn.topiam.employee.common.exception.app.AppRoleNotExistException;
-import cn.topiam.employee.common.repository.permission.PermissionPolicyRepository;
-import cn.topiam.employee.common.repository.permission.PermissionRoleRepository;
-import cn.topiam.employee.openapi.converter.permission.PermissionRoleConverter;
-import cn.topiam.employee.openapi.pojo.request.app.query.AppPermissionRoleListQuery;
-import cn.topiam.employee.openapi.pojo.request.app.save.AppPermissionRoleCreateParam;
-import cn.topiam.employee.openapi.pojo.request.app.update.PermissionRoleUpdateParam;
-import cn.topiam.employee.openapi.pojo.response.app.AppPermissionRoleListResult;
-import cn.topiam.employee.openapi.pojo.response.app.AppPermissionRoleResult;
-import cn.topiam.employee.openapi.service.PermissionRoleService;
-import cn.topiam.employee.support.repository.page.domain.Page;
-import cn.topiam.employee.support.repository.page.domain.PageModel;
-import cn.topiam.employee.support.util.BeanUtils;
-
-import lombok.RequiredArgsConstructor;
-import static cn.topiam.employee.support.repository.domain.BaseEntity.LAST_MODIFIED_BY;
-import static cn.topiam.employee.support.repository.domain.BaseEntity.LAST_MODIFIED_TIME;
-
-/**
- *
- * 角色表 服务实现类
- *
- *
- * @author TopIAM
- * Created by support@topiam.cn on 2020-08-10
- */
-@Service
-@RequiredArgsConstructor
-public class PermissionRoleServiceImpl implements PermissionRoleService {
-
- /**
- * 获取所有角色(分页)
- *
- * @param page {@link PageModel}
- * @return {@link AppPermissionRoleListResult}
- */
- @Override
- public Page getPermissionRoleList(PageModel page,
- AppPermissionRoleListQuery query) {
- org.springframework.data.domain.Page data;
- Predicate predicate = permissionRoleConverter.rolePaginationParamConvertToPredicate(query);
- QPageRequest request = QPageRequest.of(page.getCurrent(), page.getPageSize());
- data = permissionRoleRepository.findAll(predicate, request);
- return permissionRoleConverter.entityConvertToRolePaginationResult(data);
- }
-
- /**
- * 创建系统
- *
- * @param param {@link AppPermissionRoleCreateParam}
- * @return {@link Boolean}
- */
- @Override
- public boolean createPermissionRole(AppPermissionRoleCreateParam param) {
- PermissionRoleEntity entity = permissionRoleConverter.roleCreateParamConvertToEntity(param);
- permissionRoleRepository.save(entity);
- return true;
- }
-
- /**
- * @param param {@link PermissionRoleUpdateParam}
- * @return {@link Boolean}
- */
- @Override
- public boolean updatePermissionRole(PermissionRoleUpdateParam param) {
- PermissionRoleEntity source = permissionRoleConverter.roleUpdateParamConvertToEntity(param);
- PermissionRoleEntity target = permissionRoleRepository.findById(Long.valueOf(param.getId()))
- .orElseThrow(AppRoleNotExistException::new);
- BeanUtils.merge(source, target, LAST_MODIFIED_TIME, LAST_MODIFIED_BY);
- permissionRoleRepository.save(target);
- return true;
- }
-
- /**
- * 删除角色
- *
- * @param ids {@link String}
- * @return {@link Boolean}
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean deletePermissionRole(String ids) {
- List idList = Arrays.stream(ids.split(",")).toList();
- List longIds = idList.stream().map(Long::parseLong).toList();
- permissionRoleRepository.deleteAllById(longIds);
- // 删除对应策略
- permissionPolicyRepository.deleteAllBySubjectIdIn(idList);
- permissionPolicyRepository.deleteAllByObjectIdIn(longIds);
- return true;
- }
-
- /**
- * 角色详情
- *
- * @param id {@link Long}
- * @return {@link AppPermissionRoleResult}
- */
- @Override
- public AppPermissionRoleResult getPermissionRole(Long id) {
- //查询
- Optional entity = permissionRoleRepository.findById(id);
- //映射
- return permissionRoleConverter.entityConvertToRoleDetailResult(entity.orElse(null));
- }
-
- /**
- * 参数有效性验证
- *
- * @param type {@link CheckValidityType}
- * @param value {@link String}
- * @param id {@link Long}
- * @param appId {@link Long}
- * @return {@link Boolean}
- */
- @SuppressWarnings("DuplicatedCode")
- @Override
- public Boolean permissionRoleParamCheck(CheckValidityType type, String value, Long appId,
- Long id) {
- QPermissionRoleEntity role = QPermissionRoleEntity.permissionRoleEntity;
- PermissionRoleEntity entity = new PermissionRoleEntity();
- boolean result = false;
- // ID存在说明是修改操作,查询一下当前数据
- if (Objects.nonNull(id)) {
- entity = permissionRoleRepository.findById(id)
- .orElseThrow(AppRoleNotExistException::new);
- }
- //角色编码
- if (CheckValidityType.CODE.equals(type)) {
- if (StringUtils.equals(entity.getCode(), value)) {
- return true;
- }
- BooleanExpression eq = role.code.eq(value);
- eq.and(role.appId.eq(appId));
- result = !permissionRoleRepository.exists(eq);
- }
- //角色名称
- if (CheckValidityType.NAME.equals(type)) {
- if (StringUtils.equals(entity.getName(), value)) {
- return true;
- }
- BooleanExpression eq = role.name.eq(value);
- eq.and(role.appId.eq(appId));
- result = !permissionRoleRepository.exists(eq);
- }
- return result;
- }
-
- /**
- * 更新角色状态
- *
- * @param id {@link String}
- * @param status {@link Boolean}
- * @return {@link Boolean}
- */
- @Override
- public Boolean updatePermissionRoleStatus(String id, Boolean status) {
- permissionRoleRepository.updateStatus(id, status);
- return true;
- }
-
- /**
- * 用户数据映射器
- */
- private final PermissionRoleConverter permissionRoleConverter;
- /**
- * RoleRepository
- */
- private final PermissionRoleRepository permissionRoleRepository;
- /**
- * PolicyRepository
- */
- private final PermissionPolicyRepository permissionPolicyRepository;
-}
From 6d69209194dc56a24474831c43f1567b0437b951 Mon Sep 17 00:00:00 2001
From: awenes <1121353141@qq.com>
Date: Thu, 21 Sep 2023 22:02:28 +0800
Subject: [PATCH 06/12] =?UTF-8?q?:zap:=20=E4=BC=98=E5=8C=96=E4=BB=A3?=
=?UTF-8?q?=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/resources/db/1.1.0-changelog.xml | 138 +-----------------
.../openapi/pojo/query/package-info.java | 18 +++
.../openapi/pojo/result/package-info.java | 18 +++
.../openapi/pojo/save/package-info.java | 18 +++
4 files changed, 55 insertions(+), 137 deletions(-)
create mode 100644 eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/query/package-info.java
create mode 100644 eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/result/package-info.java
create mode 100644 eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/save/package-info.java
diff --git a/eiam-common/src/main/resources/db/1.1.0-changelog.xml b/eiam-common/src/main/resources/db/1.1.0-changelog.xml
index ceb1a98d..8f720aa8 100644
--- a/eiam-common/src/main/resources/db/1.1.0-changelog.xml
+++ b/eiam-common/src/main/resources/db/1.1.0-changelog.xml
@@ -82,143 +82,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/query/package-info.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/query/package-info.java
new file mode 100644
index 00000000..5377709f
--- /dev/null
+++ b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/query/package-info.java
@@ -0,0 +1,18 @@
+/*
+ * eiam-openapi - Employee Identity and Access Management
+ * Copyright © 2022-Present Jinan Yuanchuang Network Technology Co., Ltd. (support@topiam.cn)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+package cn.topiam.employee.openapi.pojo.query;
\ No newline at end of file
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/result/package-info.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/result/package-info.java
new file mode 100644
index 00000000..693b70f1
--- /dev/null
+++ b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/result/package-info.java
@@ -0,0 +1,18 @@
+/*
+ * eiam-openapi - Employee Identity and Access Management
+ * Copyright © 2022-Present Jinan Yuanchuang Network Technology Co., Ltd. (support@topiam.cn)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+package cn.topiam.employee.openapi.pojo.result;
\ No newline at end of file
diff --git a/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/save/package-info.java b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/save/package-info.java
new file mode 100644
index 00000000..c5fae505
--- /dev/null
+++ b/eiam-openapi/src/main/java/cn/topiam/employee/openapi/pojo/save/package-info.java
@@ -0,0 +1,18 @@
+/*
+ * eiam-openapi - Employee Identity and Access Management
+ * Copyright © 2022-Present Jinan Yuanchuang Network Technology Co., Ltd. (support@topiam.cn)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+package cn.topiam.employee.openapi.pojo.save;
\ No newline at end of file
From 57bba9c63c218d82dd908236fac115cd92f155fd Mon Sep 17 00:00:00 2001
From: awenes <1121353141@qq.com>
Date: Sun, 24 Sep 2023 19:15:44 +0800
Subject: [PATCH 07/12] =?UTF-8?q?:zap:=20=E5=8D=87=E7=BA=A7=E4=BE=9D?=
=?UTF-8?q?=E8=B5=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
eiam-console/src/main/console-fe/package.json | 14 +++++++-------
eiam-portal/src/main/portal-fe/package.json | 12 ++++++------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/eiam-console/src/main/console-fe/package.json b/eiam-console/src/main/console-fe/package.json
index eefb8c0e..409cbe6f 100644
--- a/eiam-console/src/main/console-fe/package.json
+++ b/eiam-console/src/main/console-fe/package.json
@@ -51,7 +51,7 @@
"ahooks": "^3.7.8",
"antd": "^5.9.2",
"antd-img-crop": "^4.13.0",
- "antd-style": "^3.4.7",
+ "antd-style": "^3.5.0",
"classnames": "^2.3.2",
"codemirror": "^5.65.5",
"content-security-policy-parser": "^0.4.1",
@@ -59,7 +59,7 @@
"dayjs": "^1.11.10",
"echarts": "^5.4.3",
"fetch-jsonp": "^1.3.0",
- "form-render": "^2.2.15",
+ "form-render": "^2.2.16",
"google-libphonenumber": "^3.2.33",
"js-base64": "^3.7.5",
"js-yaml": "^4.1.0",
@@ -70,14 +70,14 @@
"omit.js": "^2.0.2",
"qs": "^6.11.2",
"query-string": "^8.1.0",
- "rc-field-form": "^1.38.1",
+ "rc-field-form": "^1.38.2",
"rc-menu": "^9.12.0",
"rc-select": "^14.9.0",
"rc-tree": "^5.7.12",
"react": "^18.2.0",
"react-codemirror2": "^7.2.1",
"react-dom": "^18.2.0",
- "react-fast-marquee": "^1.6.0",
+ "react-fast-marquee": "^1.6.1",
"react-helmet-async": "^1.3.0",
"react-sortable-hoc": "^2.0.0",
"yaml": "^2.3.2"
@@ -89,8 +89,8 @@
"@types/google-libphonenumber": "^7.4.27",
"@types/history": "^4.7.11",
"@types/js-yaml": "^4.0.6",
- "@types/lodash": "^4.14.198",
- "@types/numeral": "^2.0.2",
+ "@types/lodash": "^4.14.199",
+ "@types/numeral": "^2.0.3",
"@types/qs": "^6.9.8",
"@types/react": "^18.2.22",
"@types/react-dom": "^18.2.7",
@@ -99,7 +99,7 @@
"@umijs/max": "^4.0.81",
"cross-env": "^7.0.3",
"cross-port-killer": "^1.4.0",
- "eslint": "^8.49.0",
+ "eslint": "^8.50.0",
"husky": "^8.0.3",
"lint-staged": "^14.0.1",
"prettier": "^3.0.3",
diff --git a/eiam-portal/src/main/portal-fe/package.json b/eiam-portal/src/main/portal-fe/package.json
index 1a4a8882..252d7ba7 100644
--- a/eiam-portal/src/main/portal-fe/package.json
+++ b/eiam-portal/src/main/portal-fe/package.json
@@ -52,12 +52,12 @@
"ahooks": "^3.7.8",
"antd": "^5.9.2",
"antd-img-crop": "^4.13.0",
- "antd-style": "^3.4.7",
+ "antd-style": "^3.5.0",
"classnames": "^2.3.2",
"crypto-js": "^4.1.1",
"dayjs": "^1.11.10",
"fetch-jsonp": "^1.3.0",
- "form-render": "^2.2.15",
+ "form-render": "^2.2.16",
"google-libphonenumber": "^3.2.33",
"js-base64": "^3.7.5",
"js-yaml": "^4.1.0",
@@ -73,7 +73,7 @@
"rc-select": "^14.9.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "react-fast-marquee": "^1.6.0",
+ "react-fast-marquee": "^1.6.1",
"react-helmet-async": "^1.3.0",
"yaml": "^2.3.2"
},
@@ -84,8 +84,8 @@
"@types/google-libphonenumber": "^7.4.27",
"@types/history": "^4.7.11",
"@types/js-yaml": "^4.0.6",
- "@types/lodash": "^4.14.198",
- "@types/numeral": "^2.0.2",
+ "@types/lodash": "^4.14.199",
+ "@types/numeral": "^2.0.3",
"@types/qs": "^6.9.8",
"@types/react": "^18.2.22",
"@types/react-dom": "^18.2.7",
@@ -94,7 +94,7 @@
"@umijs/max": "^4.0.81",
"cross-env": "^7.0.3",
"cross-port-killer": "^1.4.0",
- "eslint": "^8.49.0",
+ "eslint": "^8.50.0",
"husky": "^8.0.3",
"lint-staged": "^14.0.1",
"prettier": "^3.0.3",
From 2c1456119fcc1abb843ac5189c75069674322f16 Mon Sep 17 00:00:00 2001
From: awenes <1121353141@qq.com>
Date: Sun, 24 Sep 2023 19:16:05 +0800
Subject: [PATCH 08/12] =?UTF-8?q?:zap:=20=E4=BC=98=E5=8C=96=E4=BB=A3?=
=?UTF-8?q?=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../employee/console/converter/app/AppGroupConverter.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/eiam-console/src/main/java/cn/topiam/employee/console/converter/app/AppGroupConverter.java b/eiam-console/src/main/java/cn/topiam/employee/console/converter/app/AppGroupConverter.java
index 3315f0f4..5125d15f 100644
--- a/eiam-console/src/main/java/cn/topiam/employee/console/converter/app/AppGroupConverter.java
+++ b/eiam-console/src/main/java/cn/topiam/employee/console/converter/app/AppGroupConverter.java
@@ -89,6 +89,7 @@ public interface AppGroupConverter {
* @param param {@link AppGroupUpdateParam}
* @return {@link AppGroupEntity}
*/
+ @Mapping(target = "type", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "updateTime", ignore = true)
@Mapping(target = "updateBy", ignore = true)
@@ -102,6 +103,7 @@ public interface AppGroupConverter {
* @param param {@link AppAccountCreateParam}
* @return {@link AppAccountEntity}
*/
+ @Mapping(target = "type", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "id", ignore = true)
@Mapping(target = "updateTime", ignore = true)
From ef4d8fae420fe9630e4d4080b9265af8ab76a610 Mon Sep 17 00:00:00 2001
From: awenes <1121353141@qq.com>
Date: Sun, 24 Sep 2023 19:16:27 +0800
Subject: [PATCH 09/12] =?UTF-8?q?:zap:=20JWT=E5=8D=8F=E8=AE=AE=E6=96=B0?=
=?UTF-8?q?=E5=A2=9EIDP=20SLO=20=E7=AB=AF=E7=82=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../application/jwt/converter/AppJwtConfigConverter.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/eiam-application/eiam-application-jwt/src/main/java/cn/topiam/employee/application/jwt/converter/AppJwtConfigConverter.java b/eiam-application/eiam-application-jwt/src/main/java/cn/topiam/employee/application/jwt/converter/AppJwtConfigConverter.java
index 4b11ec9a..0d91b927 100644
--- a/eiam-application/eiam-application-jwt/src/main/java/cn/topiam/employee/application/jwt/converter/AppJwtConfigConverter.java
+++ b/eiam-application/eiam-application-jwt/src/main/java/cn/topiam/employee/application/jwt/converter/AppJwtConfigConverter.java
@@ -31,6 +31,7 @@ import cn.topiam.employee.common.entity.app.AppJwtConfigEntity;
import cn.topiam.employee.common.entity.app.po.AppJwtConfigPO;
import cn.topiam.employee.core.help.ServerHelp;
import static cn.topiam.employee.common.constant.ProtocolConstants.APP_CODE;
+import static cn.topiam.employee.common.constant.ProtocolConstants.JwtEndpointConstants.JWT_SLO_PATH;
import static cn.topiam.employee.common.constant.ProtocolConstants.JwtEndpointConstants.JWT_SSO_PATH;
/**
@@ -98,6 +99,8 @@ public interface AppJwtConfigConverter {
StringSubstitutor sub = new StringSubstitutor(variables, "{", "}");
//IDP SSO 端点
domain.setIdpSsoEndpoint(sub.replace(ServerHelp.getPortalPublicBaseUrl()+JWT_SSO_PATH));
+ //IDP SLO 端点
+ domain.setIdpSloEndpoint(sub.replace(ServerHelp.getPortalPublicBaseUrl()+JWT_SLO_PATH));
return domain;
//@formatter:on
}
From b5980f8624b96c48caf788d7e0a07438afe1cdea Mon Sep 17 00:00:00 2001
From: awenes <1121353141@qq.com>
Date: Sun, 24 Sep 2023 19:16:52 +0800
Subject: [PATCH 10/12] =?UTF-8?q?:zap:=20JWT=E5=8D=8F=E8=AE=AE=E6=96=B0?=
=?UTF-8?q?=E5=A2=9EIDP=20SLO=20=E7=AB=AF=E7=82=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../jwt/pojo/AppJwtProtocolEndpoint.java | 6 ++
.../common/constant/ProtocolConstants.java | 5 +
.../JwtProtocolConfig/ConfigAbout.tsx | 16 ++++
.../src/pages/app/AppDetail/locales/zh-CN.ts | 2 +-
...a => JwtLogoutAuthenticationProvider.java} | 4 +-
.../JwtAuthorizationServerConfigurer.java | 1 +
...LogoutAuthorizationEndpointConfigurer.java | 91 +++++++++++++++++++
7 files changed, 122 insertions(+), 3 deletions(-)
rename eiam-protocol/eiam-protocol-jwt/src/main/java/cn/topiam/employee/protocol/jwt/authentication/{OidcLogoutAuthenticationProvider.java => JwtLogoutAuthenticationProvider.java} (92%)
create mode 100644 eiam-protocol/eiam-protocol-jwt/src/main/java/cn/topiam/employee/protocol/jwt/configurers/JwtLogoutAuthorizationEndpointConfigurer.java
diff --git a/eiam-application/eiam-application-jwt/src/main/java/cn/topiam/employee/application/jwt/pojo/AppJwtProtocolEndpoint.java b/eiam-application/eiam-application-jwt/src/main/java/cn/topiam/employee/application/jwt/pojo/AppJwtProtocolEndpoint.java
index 271abed1..8cb41fda 100644
--- a/eiam-application/eiam-application-jwt/src/main/java/cn/topiam/employee/application/jwt/pojo/AppJwtProtocolEndpoint.java
+++ b/eiam-application/eiam-application-jwt/src/main/java/cn/topiam/employee/application/jwt/pojo/AppJwtProtocolEndpoint.java
@@ -43,4 +43,10 @@ public class AppJwtProtocolEndpoint implements Serializable {
*/
@Parameter(description = "IDP SSO 端点")
private String idpSsoEndpoint;
+
+ /**
+ * IDP SLO 端点
+ */
+ @Parameter(description = "IDP SLO 端点")
+ private String idpSloEndpoint;
}
diff --git a/eiam-common/src/main/java/cn/topiam/employee/common/constant/ProtocolConstants.java b/eiam-common/src/main/java/cn/topiam/employee/common/constant/ProtocolConstants.java
index bdc6a600..8f19efe2 100644
--- a/eiam-common/src/main/java/cn/topiam/employee/common/constant/ProtocolConstants.java
+++ b/eiam-common/src/main/java/cn/topiam/employee/common/constant/ProtocolConstants.java
@@ -237,6 +237,11 @@ public final class ProtocolConstants {
*/
public static final String JWT_SSO_PATH = JWT_AUTHORIZE_BASE_PATH + "/sso";
+ /**
+ * JWT_SLO
+ */
+ public static final String JWT_SLO_PATH = JWT_AUTHORIZE_BASE_PATH + "/slo";
+
/**
* JWT IDP SSO 发起
*/
diff --git a/eiam-console/src/main/console-fe/src/pages/app/AppDetail/components/AppProtocol/JwtProtocolConfig/ConfigAbout.tsx b/eiam-console/src/main/console-fe/src/pages/app/AppDetail/components/AppProtocol/JwtProtocolConfig/ConfigAbout.tsx
index 907c0e27..1eff1003 100644
--- a/eiam-console/src/main/console-fe/src/pages/app/AppDetail/components/AppProtocol/JwtProtocolConfig/ConfigAbout.tsx
+++ b/eiam-console/src/main/console-fe/src/pages/app/AppDetail/components/AppProtocol/JwtProtocolConfig/ConfigAbout.tsx
@@ -141,6 +141,22 @@ export default (props: {
}}
fieldProps={{ autoComplete: 'off' }}
/>
+ {
+ return value && {value};
+ },
+ }}
+ fieldProps={{ autoComplete: 'off' }}
+ />
, AbstractConfigurer> configurers = new LinkedHashMap<>();
configurers.put(JwtAuthorizationEndpointConfigurer.class, new JwtAuthorizationEndpointConfigurer(this::postProcess));
+ configurers.put(JwtLogoutAuthorizationEndpointConfigurer.class, new JwtLogoutAuthorizationEndpointConfigurer(this::postProcess));
//@formatter:on
return configurers;
}
diff --git a/eiam-protocol/eiam-protocol-jwt/src/main/java/cn/topiam/employee/protocol/jwt/configurers/JwtLogoutAuthorizationEndpointConfigurer.java b/eiam-protocol/eiam-protocol-jwt/src/main/java/cn/topiam/employee/protocol/jwt/configurers/JwtLogoutAuthorizationEndpointConfigurer.java
new file mode 100644
index 00000000..36205f6e
--- /dev/null
+++ b/eiam-protocol/eiam-protocol-jwt/src/main/java/cn/topiam/employee/protocol/jwt/configurers/JwtLogoutAuthorizationEndpointConfigurer.java
@@ -0,0 +1,91 @@
+/*
+ * eiam-protocol-jwt - Employee Identity and Access Management
+ * Copyright © 2022-Present Jinan Yuanchuang Network Technology Co., Ltd. (support@topiam.cn)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+package cn.topiam.employee.protocol.jwt.configurers;
+
+import org.springframework.http.HttpMethod;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.config.annotation.ObjectPostProcessor;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.core.session.SessionRegistry;
+import org.springframework.security.web.authentication.logout.LogoutFilter;
+import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
+import org.springframework.security.web.util.matcher.OrRequestMatcher;
+import org.springframework.security.web.util.matcher.RequestMatcher;
+
+import cn.topiam.employee.protocol.code.configurer.AbstractConfigurer;
+import cn.topiam.employee.protocol.code.util.ProtocolConfigUtils;
+import cn.topiam.employee.protocol.jwt.authentication.JwtLogoutAuthenticationProvider;
+import cn.topiam.employee.protocol.jwt.endpoint.JwtLogoutAuthenticationEndpointFilter;
+import static cn.topiam.employee.common.constant.ProtocolConstants.JwtEndpointConstants.*;
+import static cn.topiam.employee.protocol.code.util.ProtocolConfigUtils.getSessionRegistry;
+
+/**
+ *
+ * @author TopIAM
+ * Created by support@topiam.cn on 2023/7/5 21:58
+ */
+public class JwtLogoutAuthorizationEndpointConfigurer extends AbstractConfigurer {
+
+ private RequestMatcher requestMatcher;
+
+ public JwtLogoutAuthorizationEndpointConfigurer(ObjectPostProcessor