forked from github/dataease
Merge branch 'dev' of github.com:dataease/dataease into dev
This commit is contained in:
commit
99f680523f
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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=已经有同步任务在运行,稍后重试
|
||||
|
@ -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=已經有同步任務在運行,稍後重試
|
||||
|
@ -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
|
||||
|
@ -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 }) {
|
||||
|
Loading…
Reference in New Issue
Block a user