diff --git a/.gitignore b/.gitignore index 2373a66776..dd0d793cda 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ yarn-error.log* pnpm-debug.log* # Editor directories and files +.lh .idea .vscode *.suo diff --git a/backend/src/main/java/io/dataease/plugins/server/XLdapServer.java b/backend/src/main/java/io/dataease/plugins/server/XLdapServer.java index a8268d5ef5..f06ab40dfa 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XLdapServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XLdapServer.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; -@RequestMapping("/api/ldap") +@RequestMapping("/plugin/ldap") @RestController public class XLdapServer { diff --git a/backend/src/main/java/io/dataease/plugins/server/XOidcServer.java b/backend/src/main/java/io/dataease/plugins/server/XOidcServer.java new file mode 100644 index 0000000000..c2c21f24e7 --- /dev/null +++ b/backend/src/main/java/io/dataease/plugins/server/XOidcServer.java @@ -0,0 +1,27 @@ +package io.dataease.plugins.server; + + +import io.dataease.plugins.config.SpringContextUtil; +import io.dataease.plugins.xpack.display.dto.response.SysSettingDto; +import io.dataease.plugins.xpack.oidc.service.OidcXpackService; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RequestMapping("/plugin/oidc") +@RestController +public class XOidcServer { + + + @PostMapping("/info") + public List getOidcInfo() { + OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class); + return oidcXpackService.oidcSettings(); + } + + @PostMapping("/save") + public void save(@RequestBody List settings) { + OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class); + oidcXpackService.save(settings); + } +} diff --git a/backend/src/main/java/io/dataease/service/sys/SysUserService.java b/backend/src/main/java/io/dataease/service/sys/SysUserService.java index ab2a694c88..c7af67b383 100644 --- a/backend/src/main/java/io/dataease/service/sys/SysUserService.java +++ b/backend/src/main/java/io/dataease/service/sys/SysUserService.java @@ -82,6 +82,7 @@ public class SysUserService { @Transactional public int save(SysUserCreateRequest request) { checkUsername(request); + checkEmail(request); SysUser user = BeanUtils.copyBean(new SysUser(), request); long now = System.currentTimeMillis(); user.setCreateTime(now); @@ -145,6 +146,7 @@ public class SysUserService { @Transactional public int update(SysUserCreateRequest request) { checkUsername(request); + checkEmail(request); if (StringUtils.isEmpty(request.getPassword())) { request.setPassword(null); } @@ -287,4 +289,19 @@ public class SysUserService { throw new RuntimeException(Translator.get("i18n_username_exists")); } } + + private void checkEmail(SysUserCreateRequest request) { + SysUserExample sysUserExample = new SysUserExample(); + SysUserExample.Criteria criteria = sysUserExample.createCriteria(); + if (request.getUserId() != null) { + criteria.andUserIdNotEqualTo(request.getUserId()); + } + criteria.andEmailEqualTo(request.getEmail()); + List sysUsers = sysUserMapper.selectByExample(sysUserExample); + if (CollectionUtils.isNotEmpty(sysUsers)) { + throw new RuntimeException(Translator.get("i18n_email_exists")); + } + } + + } diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index 5a6849daf4..b51d009c13 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -243,6 +243,7 @@ i18n_union_field_exists=The same field can't in two dataset i18n_cron_time_error=Start time can't greater then end time i18n_auth_source_be_canceled=This Auth Resource Already Be Canceled,Please Connect Admin i18n_username_exists=ID is already exists +i18n_email_exists=Email is already exists i18n_ds_name_exists=Datasource name used i18n_sync_job_exists=There is already a synchronization task running, please try again later i18n_datasource_check_fail=Invalid,please check config diff --git a/backend/src/main/resources/i18n/messages_zh_CN.properties b/backend/src/main/resources/i18n/messages_zh_CN.properties index 01270ef1cb..3c92b2a6e4 100644 --- a/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -242,6 +242,7 @@ i18n_union_field_exists=两个数据集之间关联不能出现多次相同字 i18n_cron_time_error=开始时间不能大于结束时间 i18n_auth_source_be_canceled=本用户当前资源所有授权权限已经被取消,如需再次开通,请联系管理员 i18n_username_exists=用户 ID 已存在 +i18n_email_exists=邮箱已存在 i18n_ds_name_exists=数据源名称已被使用 i18n_sync_job_exists=已经有同步任务在运行,稍后重试 i18n_datasource_check_fail=校验失败,请检查配置信息 diff --git a/backend/src/main/resources/i18n/messages_zh_TW.properties b/backend/src/main/resources/i18n/messages_zh_TW.properties index b3af3be4f8..bccc948bee 100644 --- a/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -245,6 +245,7 @@ i18n_union_field_exists=兩個數據集之間關聯不能出現多次相同字 i18n_cron_time_error=開始時間不能大於結束時間 i18n_auth_source_be_canceled=本用户当前资源所有授权权限已经被取消,如需再次开通,请联系管理员 i18n_username_exists=用戶ID已存在 +i18n_email_exists=郵箱已存在 i18n_ds_name_exists=數據源名稱已被使用 i18n_sync_job_exists=已經有同步任務在運行,稍後重試 i18n_datasource_check_fail=校驗失敗,請檢查配置信息 diff --git a/frontend/src/api/system/user.js b/frontend/src/api/system/user.js index 7b9e877ef2..64d7d65f05 100644 --- a/frontend/src/api/system/user.js +++ b/frontend/src/api/system/user.js @@ -100,7 +100,7 @@ export function roleGrid(pageIndex, pageSize, data) { export function ldapUsers(data) { return request({ - url: '/api/ldap/users', + url: '/plugin/ldap/users', method: 'post', loading: true }) diff --git a/frontend/src/components/Notification/index.vue b/frontend/src/components/Notification/index.vue index 80528bef8a..fa07c8e79d 100644 --- a/frontend/src/components/Notification/index.vue +++ b/frontend/src/components/Notification/index.vue @@ -232,7 +232,7 @@ export default { right: 178px; top: 8px; background: red; - // color: #fff; + color: #fff; border-radius: 17px; padding: 4px 7px; font-size: 16px; diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 051c0addb8..a36a7ef9f0 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -532,6 +532,15 @@ export default { mapping_cannot_be_empty: 'LDAP 用户属性映射不能为空', password_cannot_be_empty: 'LDAP 密码不能为空' }, + oidc: { + auth_endpoint: '请输入AuthEndpoint', + token_endpoint: '请输入TokenEndpoint', + userinfo_endpoint: '请输入UserinfoEndpoint', + logout_endpoint: '请输入logoutEndpoint', + clientId: '请输入ClientId', + secret: '请输入Secret', + open: '启用OIDC认证' + }, role: { menu_authorization: '菜单授权', data_authorization: '数据授权', diff --git a/frontend/src/views/login/index.vue b/frontend/src/views/login/index.vue index e2135981d0..813637c455 100644 --- a/frontend/src/views/login/index.vue +++ b/frontend/src/views/login/index.vue @@ -108,7 +108,7 @@ export default { loginImageUrl: null, loginLogoUrl: null, axiosFinished: false, - openLdap: true + openLdap: false } }, computed: {