Merge branch 'dev' of github.com:dataease/dataease into dev

This commit is contained in:
taojinlong 2021-11-01 15:00:56 +08:00
commit 99f680523f
9 changed files with 44 additions and 14 deletions

View File

@ -73,7 +73,7 @@ public class AuthServer implements AuthApi {
ldapAddRequest.setEnabled(1L);
// ldapAddRequest.setDeptId(1L);
ldapAddRequest.setRoleIds(new ArrayList<Long>(){{add(2L);}});
sysUserService.validateExistUser(ldapUserEntity.getUsername(), ldapUserEntity.getEmail());
sysUserService.validateExistUser(ldapUserEntity.getUsername(), ldapUserEntity.getNickname(), ldapUserEntity.getEmail());
sysUserService.saveLdapUsers(ldapAddRequest);
}

View File

@ -68,7 +68,7 @@ public class SSOServer {
SysUserEntity sysUserEntity = authUserService.getUserBySub(ssoUserInfo.getSub());
if(null == sysUserEntity){
sysUserService.validateExistUser(ssoUserInfo.getUsername(), ssoUserInfo.getEmail());
sysUserService.validateExistUser(ssoUserInfo.getUsername(), ssoUserInfo.getNickName(), ssoUserInfo.getEmail());
sysUserService.saveOIDCUser(ssoUserInfo);
sysUserEntity = authUserService.getUserBySub(ssoUserInfo.getSub());
}

View File

@ -87,6 +87,7 @@ public class SysUserService {
public int save(SysUserCreateRequest request) {
checkUsername(request);
checkEmail(request);
checkNickName(request);
SysUser user = BeanUtils.copyBean(new SysUser(), request);
long now = System.currentTimeMillis();
user.setCreateTime(now);
@ -183,6 +184,7 @@ public class SysUserService {
public int update(SysUserCreateRequest request) {
checkUsername(request);
checkEmail(request);
checkNickName(request);
if (StringUtils.isEmpty(request.getPassword())) {
request.setPassword(null);
}
@ -300,7 +302,7 @@ public class SysUserService {
return null;
}
public void validateExistUser(String userName, String email) {
public void validateExistUser(String userName, String nickName, String email) {
SysUserExample example = new SysUserExample();
if (StringUtils.isNotBlank(userName)) {
example.createCriteria().andUsernameEqualTo(userName);
@ -310,13 +312,13 @@ public class SysUserService {
}
}
/* if (StringUtils.isNotBlank(nickName)) {
if (StringUtils.isNotBlank(nickName)) {
example.createCriteria().andNickNameEqualTo(nickName);
List<SysUser> users = sysUserMapper.selectByExample(example);
if(CollectionUtils.isNotEmpty(users)) {
throw new RuntimeException("用户姓名【"+nickName+"】已存在,请联系管理员");
}
} */
}
example.clear();
if (StringUtils.isNotBlank(email)) {
example.createCriteria().andEmailEqualTo(email);
@ -366,5 +368,18 @@ public class SysUserService {
}
}
private void checkNickName(SysUserCreateRequest request) {
SysUserExample sysUserExample = new SysUserExample();
SysUserExample.Criteria criteria = sysUserExample.createCriteria();
if (request.getUserId() != null) {
criteria.andUserIdNotEqualTo(request.getUserId());
}
criteria.andNickNameEqualTo(request.getNickName());
List<SysUser> sysUsers = sysUserMapper.selectByExample(sysUserExample);
if (CollectionUtils.isNotEmpty(sysUsers)) {
throw new RuntimeException(Translator.get("i18n_nickname_exists"));
}
}
}

View File

@ -43,14 +43,15 @@ COMMIT;
ALTER TABLE `chart_view`
MODIFY COLUMN `name` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称' AFTER `id`,
MODIFY COLUMN `title` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'EChart标题' AFTER `result_mode`;
MODIFY COLUMN `title` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'EChart标题' AFTER `name`;
ALTER TABLE `chart_view` ADD COLUMN `result_count` int(10) COMMENT '展示结果' AFTER `render`;
ALTER TABLE `chart_view` ADD COLUMN `result_mode` varchar(50) COMMENT '展示模式' AFTER `result_count`;
UPDATE `chart_view` SET `result_count` = 1000;
UPDATE `chart_view` SET `result_mode` = 'custom';
ALTER TABLE `dataset_table`
MODIFY COLUMN `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL;
-- ----------------------------
-- Table structure for sys_theme

View File

@ -244,6 +244,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_nickname_exists=NickName 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

View File

@ -243,6 +243,7 @@ i18n_union_field_exists=两个数据集之间关联不能出现多次相同字
i18n_cron_time_error=开始时间不能大于结束时间
i18n_auth_source_be_canceled=本用户当前资源所有授权权限已经被取消,如需再次开通,请联系管理员
i18n_username_exists=用户 ID 已存在
i18n_nickname_exists=用户 姓名 已存在
i18n_email_exists=邮箱已存在
i18n_ds_name_exists=数据源名称已被使用
i18n_sync_job_exists=已经有同步任务在运行,稍后重试

View File

@ -246,6 +246,7 @@ i18n_union_field_exists=兩個數據集之間關聯不能出現多次相同字
i18n_cron_time_error=開始時間不能大於結束時間
i18n_auth_source_be_canceled=本用户当前资源所有授权权限已经被取消,如需再次开通,请联系管理员
i18n_username_exists=用戶ID已存在
i18n_nickname_exists=用戶 姓名 已存在
i18n_email_exists=郵箱已存在
i18n_ds_name_exists=數據源名稱已被使用
i18n_sync_job_exists=已經有同步任務在運行,稍後重試

View File

@ -32,7 +32,7 @@
<el-radio :label="0">{{ $t('commons.disable') }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="$t('commons.organization')" prop="deptId">
<el-form-item v-show="isPluginLoaded" :label="$t('commons.organization')" prop="deptId">
<treeselect
ref="deptTreeSelect"
v-model="form.deptId"
@ -43,7 +43,7 @@
@open="filterData"
/>
</el-form-item>
<el-form-item :label="$t('commons.role')" prop="roleIds">
<el-form-item v-show="isPluginLoaded" :label="$t('commons.role')" prop="roleIds">
<el-select
ref="roleSelect"
v-model="form.roleIds"
@ -76,6 +76,7 @@ import LayoutContent from '@/components/business/LayoutContent'
import { PHONE_REGEX } from '@/utils/validate'
import { getDeptTree, treeByDeptId } from '@/api/system/dept'
import { addUser, editUser, allRoles } from '@/api/system/user'
import { pluginLoaded } from '@/api/user'
export default {
components: { LayoutContent },
@ -155,7 +156,8 @@ export default {
roles: [],
roleDatas: [],
userRoles: [],
formType: 'add'
formType: 'add',
isPluginLoaded: false
}
},
@ -174,6 +176,11 @@ export default {
destroyed() {
this.unBindKey()
},
beforeCreate() {
pluginLoaded().then(res => {
this.isPluginLoaded = res.success && res.data
})
},
methods: {
entryKey(event) {
const keyCode = event.keyCode

View File

@ -27,12 +27,12 @@
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="email" :label="$t('commons.email')" />
<el-table-column :show-overflow-tooltip="true" prop="dept" sortable="custom" :label="$t('commons.organization')">
<el-table-column v-if="isPluginLoaded" :show-overflow-tooltip="true" prop="dept" sortable="custom" :label="$t('commons.organization')">
<template slot-scope="scope">
<div>{{ scope.row.dept && scope.row.dept.deptName }}</div>
</template>
</el-table-column>
<el-table-column prop="roles" :label="$t('commons.role')">
<el-table-column v-if="isPluginLoaded" prop="roles" :label="$t('commons.role')">
<template slot-scope="scope">
<div v-if="scope.row.roles && scope.row.roles.length <= 2">
<div v-for="role in scope.row.roles" :key="role.roleId">{{ role.roleName }}</div>
@ -174,7 +174,7 @@ import { PHONE_REGEX } from '@/utils/validate'
import { LOAD_CHILDREN_OPTIONS, LOAD_ROOT_OPTIONS } from '@riophae/vue-treeselect'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { ldapStatus } from '@/api/user'
import { ldapStatus, pluginLoaded } from '@/api/user'
import { userLists, addUser, editUser, delUser, editPassword, editStatus, allRoles } from '@/api/system/user'
import { getDeptTree, treeByDeptId } from '@/api/system/dept'
@ -306,7 +306,8 @@ export default {
},
orderConditions: [],
last_condition: null,
openLdap: false
openLdap: false,
isPluginLoaded: false
}
},
mounted() {
@ -317,6 +318,9 @@ export default {
ldapStatus().then(res => {
this.openLdap = res.success && res.data
})
pluginLoaded().then(res => {
this.isPluginLoaded = res.success && res.data
})
},
methods: {
sortChange({ column, prop, order }) {