From db3e8f60655f8cca91023f8ec659c9c089b556e8 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 8 Sep 2021 15:37:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=B9=E6=8E=A5ldap=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/dataease/auth/api/AuthApi.java | 5 ++ .../io/dataease/auth/api/dto/LoginDto.java | 8 ++ .../io/dataease/auth/server/AuthServer.java | 50 +++++++++-- .../auth/service/AuthUserService.java | 2 + .../service/impl/AuthUserServiceImpl.java | 9 ++ .../auth/service/impl/ShiroServiceImpl.java | 1 + .../java/io/dataease/base/domain/SysUser.java | 20 +---- .../dataease/base/domain/SysUserExample.java | 60 +++++++++++++ .../io/dataease/base/mapper/SysUserMapper.xml | 26 ++++-- .../base/mapper/ext/ExtSysUserMapper.java | 2 + .../base/mapper/ext/ExtSysUserMapper.xml | 4 + .../controller/sys/SysUserController.java | 15 ++++ .../sys/request/LdapAddRequest.java | 19 ++++ .../dataease/plugins/server/XLdapServer.java | 13 +++ .../io/dataease/plugins/util/PluginUtils.java | 10 +++ .../dataease/service/sys/SysUserService.java | 36 ++++++++ .../src/main/resources/generatorConfig.xml | 2 +- frontend/src/api/system/user.js | 27 +++++- frontend/src/api/user.js | 7 ++ frontend/src/lang/zh.js | 1 + frontend/src/store/modules/user.js | 4 +- frontend/src/views/login/index.vue | 21 ++++- frontend/src/views/system/user/imp-ldap.vue | 88 +++++++++++++++++-- frontend/src/views/system/user/index.vue | 20 +++-- 24 files changed, 402 insertions(+), 48 deletions(-) create mode 100644 backend/src/main/java/io/dataease/controller/sys/request/LdapAddRequest.java diff --git a/backend/src/main/java/io/dataease/auth/api/AuthApi.java b/backend/src/main/java/io/dataease/auth/api/AuthApi.java index 5cdbd7151c..ce79742bde 100644 --- a/backend/src/main/java/io/dataease/auth/api/AuthApi.java +++ b/backend/src/main/java/io/dataease/auth/api/AuthApi.java @@ -4,6 +4,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport; import io.dataease.auth.api.dto.CurrentUserDto; import io.dataease.auth.api.dto.LoginDto; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -41,4 +42,8 @@ public interface AuthApi { @PostMapping("/validateName") Boolean validateName(Map nameDto); + @ApiOperation("是否开启ldap") + @PostMapping("/isOpenLdap") + boolean isOpenLdap(); + } diff --git a/backend/src/main/java/io/dataease/auth/api/dto/LoginDto.java b/backend/src/main/java/io/dataease/auth/api/dto/LoginDto.java index c1f0adc052..62af1ce003 100644 --- a/backend/src/main/java/io/dataease/auth/api/dto/LoginDto.java +++ b/backend/src/main/java/io/dataease/auth/api/dto/LoginDto.java @@ -13,4 +13,12 @@ public class LoginDto implements Serializable { @ApiModelProperty(value = "密码", required = true) private String password; + + /** + * 0: 默认登录 + * 1:ldap登录 + * 2:单点登录 + */ + @ApiModelProperty(value = "登录方式", required = true, allowableValues = "0, 1, 2") + private int loginType; } diff --git a/backend/src/main/java/io/dataease/auth/server/AuthServer.java b/backend/src/main/java/io/dataease/auth/server/AuthServer.java index 74bf04c371..9408ccff57 100644 --- a/backend/src/main/java/io/dataease/auth/server/AuthServer.java +++ b/backend/src/main/java/io/dataease/auth/server/AuthServer.java @@ -14,9 +14,13 @@ import io.dataease.commons.utils.BeanUtils; import io.dataease.commons.utils.CodingUtil; import io.dataease.commons.utils.LogUtil; import io.dataease.commons.utils.ServletUtils; - import io.dataease.exception.DataEaseException; import io.dataease.i18n.Translator; +import io.dataease.plugins.config.SpringContextUtil; +import io.dataease.plugins.util.PluginUtils; +import io.dataease.plugins.xpack.ldap.dto.request.LdapValidateRequest; +import io.dataease.plugins.xpack.ldap.dto.response.ValidateResult; +import io.dataease.plugins.xpack.ldap.service.LdapXpackService; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; @@ -35,10 +39,29 @@ public class AuthServer implements AuthApi { private AuthUserService authUserService; + + @Override public Object login(@RequestBody LoginDto loginDto) throws Exception { String username = loginDto.getUsername(); String password = loginDto.getPassword(); + + + String pwd = RsaUtil.decryptByPrivateKey(RsaProperties.privateKey, password); + // 增加ldap登录方式 + Integer loginType = loginDto.getLoginType(); + boolean isSupportLdap = authUserService.supportLdap(); + if (loginType == 1 && isSupportLdap) { + LdapXpackService ldapXpackService = SpringContextUtil.getBean(LdapXpackService.class); + LdapValidateRequest request = LdapValidateRequest.builder().userName(username).password(pwd).build(); + ValidateResult validateResult = ldapXpackService.login(request); + if (!validateResult.isSuccess()) { + DataEaseException.throwException(validateResult.getMsg()); + } + username = validateResult.getUserName(); + } + // 增加ldap登录方式 + SysUserEntity user = authUserService.getUserByName(username); if (ObjectUtils.isEmpty(user)) { @@ -48,14 +71,19 @@ public class AuthServer implements AuthApi { DataEaseException.throwException(Translator.get("i18n_id_or_pwd_error")); } String realPwd = user.getPassword(); - //私钥解密 - String pwd = RsaUtil.decryptByPrivateKey(RsaProperties.privateKey, password); - //md5加密 - pwd = CodingUtil.md5(pwd); - if (!StringUtils.equals(pwd, realPwd)) { - DataEaseException.throwException(Translator.get("i18n_id_or_pwd_error")); + // 普通登录需要验证密码 + if (loginType == 0 || !isSupportLdap) { + //私钥解密 + + //md5加密 + pwd = CodingUtil.md5(pwd); + + if (!StringUtils.equals(pwd, realPwd)) { + DataEaseException.throwException(Translator.get("i18n_id_or_pwd_error")); + } } + Map result = new HashMap<>(); TokenInfo tokenInfo = TokenInfo.builder().userId(user.getUserId()).username(username).build(); String token = JWTUtils.sign(tokenInfo, realPwd); @@ -108,6 +136,14 @@ public class AuthServer implements AuthApi { return true; } + @Override + public boolean isOpenLdap() { + Boolean licValid = PluginUtils.licValid(); + if(!licValid) return false; + boolean open = authUserService.supportLdap(); + return open; + } + /*@Override public Boolean isLogin() { return null; diff --git a/backend/src/main/java/io/dataease/auth/service/AuthUserService.java b/backend/src/main/java/io/dataease/auth/service/AuthUserService.java index 8154412bbd..2c514686f3 100644 --- a/backend/src/main/java/io/dataease/auth/service/AuthUserService.java +++ b/backend/src/main/java/io/dataease/auth/service/AuthUserService.java @@ -21,6 +21,8 @@ public interface AuthUserService { void clearCache(Long userId); + boolean supportLdap(); + } diff --git a/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java b/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java index 5e7b31d617..aceebabb1e 100644 --- a/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java +++ b/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java @@ -8,6 +8,9 @@ import io.dataease.base.mapper.ext.AuthMapper; import io.dataease.auth.service.AuthUserService; import io.dataease.commons.constants.AuthConstants; import io.dataease.commons.utils.LogUtil; +import io.dataease.plugins.config.SpringContextUtil; +import io.dataease.plugins.xpack.ldap.service.LdapXpackService; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -102,4 +105,10 @@ public class AuthUserServiceImpl implements AuthUserService { LogUtil.info("正在清除用户缓存【{}】",userId); } + @Override + public boolean supportLdap() { + LdapXpackService ldapXpackService = SpringContextUtil.getBean(LdapXpackService.class); + if(ObjectUtils.isEmpty(ldapXpackService)) return false; + return ldapXpackService.isOpen(); + } } diff --git a/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java b/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java index 0e9361b330..36ff6845b6 100644 --- a/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java +++ b/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java @@ -58,6 +58,7 @@ public class ShiroServiceImpl implements ShiroService { filterChainDefinitionMap.put("/api/auth/login", ANON); filterChainDefinitionMap.put("/api/auth/logout", ANON); filterChainDefinitionMap.put("/api/auth/validateName", ANON); + filterChainDefinitionMap.put("/api/auth/isOpenLdap", ANON); filterChainDefinitionMap.put("/unauth", ANON); filterChainDefinitionMap.put("/display/**", ANON); filterChainDefinitionMap.put("/tokenExpired", ANON); diff --git a/backend/src/main/java/io/dataease/base/domain/SysUser.java b/backend/src/main/java/io/dataease/base/domain/SysUser.java index 6ebfbcf4d3..e07c73e757 100644 --- a/backend/src/main/java/io/dataease/base/domain/SysUser.java +++ b/backend/src/main/java/io/dataease/base/domain/SysUser.java @@ -1,59 +1,43 @@ package io.dataease.base.domain; import java.io.Serializable; - -import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class SysUser implements Serializable { - @ApiModelProperty(value = "用户ID" , allowEmptyValue = false, position = 0) private Long userId; - @ApiModelProperty(value = "组织ID" , allowEmptyValue = false, position = 7) private Long deptId; - @ApiModelProperty(value = "账号" , required = true) private String username; - @ApiModelProperty(value = "姓名" , required = true, position = 2) private String nickName; - @ApiModelProperty(value = "性别" ,allowableValues = "男,女", allowEmptyValue = true, position = 5) private String gender; - @ApiModelProperty(value = "电话" , allowEmptyValue = true, position = 1) private String phone; - @ApiModelProperty(value = "邮箱" , required = true, position = 3) private String email; - @ApiModelProperty(value = "密码" , required = true, position = 4) private String password; - @ApiModelProperty(hidden = true) private Boolean isAdmin; - @ApiModelProperty(value = "状态" , allowableValues = "1,0", required = true, position = 6) private Long enabled; - @ApiModelProperty(hidden = true) private String createBy; - @ApiModelProperty(hidden = true) private String updateBy; - @ApiModelProperty(hidden = true) private Long pwdResetTime; - @ApiModelProperty(hidden = true) private Long createTime; - @ApiModelProperty(hidden = true) private Long updateTime; - @ApiModelProperty(hidden = true) private String language; + private Integer from; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/domain/SysUserExample.java b/backend/src/main/java/io/dataease/base/domain/SysUserExample.java index 27cef73bb8..800cfe3d76 100644 --- a/backend/src/main/java/io/dataease/base/domain/SysUserExample.java +++ b/backend/src/main/java/io/dataease/base/domain/SysUserExample.java @@ -1153,6 +1153,66 @@ public class SysUserExample { addCriterion("`language` not between", value1, value2, "language"); return (Criteria) this; } + + public Criteria andFromIsNull() { + addCriterion("`from` is null"); + return (Criteria) this; + } + + public Criteria andFromIsNotNull() { + addCriterion("`from` is not null"); + return (Criteria) this; + } + + public Criteria andFromEqualTo(Integer value) { + addCriterion("`from` =", value, "from"); + return (Criteria) this; + } + + public Criteria andFromNotEqualTo(Integer value) { + addCriterion("`from` <>", value, "from"); + return (Criteria) this; + } + + public Criteria andFromGreaterThan(Integer value) { + addCriterion("`from` >", value, "from"); + return (Criteria) this; + } + + public Criteria andFromGreaterThanOrEqualTo(Integer value) { + addCriterion("`from` >=", value, "from"); + return (Criteria) this; + } + + public Criteria andFromLessThan(Integer value) { + addCriterion("`from` <", value, "from"); + return (Criteria) this; + } + + public Criteria andFromLessThanOrEqualTo(Integer value) { + addCriterion("`from` <=", value, "from"); + return (Criteria) this; + } + + public Criteria andFromIn(List values) { + addCriterion("`from` in", values, "from"); + return (Criteria) this; + } + + public Criteria andFromNotIn(List values) { + addCriterion("`from` not in", values, "from"); + return (Criteria) this; + } + + public Criteria andFromBetween(Integer value1, Integer value2) { + addCriterion("`from` between", value1, value2, "from"); + return (Criteria) this; + } + + public Criteria andFromNotBetween(Integer value1, Integer value2) { + addCriterion("`from` not between", value1, value2, "from"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/backend/src/main/java/io/dataease/base/mapper/SysUserMapper.xml b/backend/src/main/java/io/dataease/base/mapper/SysUserMapper.xml index 41f42fc47a..d2f11fdd43 100644 --- a/backend/src/main/java/io/dataease/base/mapper/SysUserMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/SysUserMapper.xml @@ -18,6 +18,7 @@ + @@ -79,7 +80,8 @@ user_id, dept_id, username, nick_name, gender, phone, email, `password`, is_admin, - enabled, create_by, update_by, pwd_reset_time, create_time, update_time, `language` + enabled, create_by, update_by, pwd_reset_time, create_time, update_time, `language`, + `from` @@ -285,6 +293,9 @@ `language` = #{record.language,jdbcType=VARCHAR}, + + `from` = #{record.from,jdbcType=INTEGER}, + @@ -307,7 +318,8 @@ pwd_reset_time = #{record.pwdResetTime,jdbcType=BIGINT}, create_time = #{record.createTime,jdbcType=BIGINT}, update_time = #{record.updateTime,jdbcType=BIGINT}, - `language` = #{record.language,jdbcType=VARCHAR} + `language` = #{record.language,jdbcType=VARCHAR}, + `from` = #{record.from,jdbcType=INTEGER} @@ -360,6 +372,9 @@ `language` = #{language,jdbcType=VARCHAR}, + + `from` = #{from,jdbcType=INTEGER}, + where user_id = #{userId,jdbcType=BIGINT} @@ -379,7 +394,8 @@ pwd_reset_time = #{pwdResetTime,jdbcType=BIGINT}, create_time = #{createTime,jdbcType=BIGINT}, update_time = #{updateTime,jdbcType=BIGINT}, - `language` = #{language,jdbcType=VARCHAR} + `language` = #{language,jdbcType=VARCHAR}, + `from` = #{from,jdbcType=INTEGER} where user_id = #{userId,jdbcType=BIGINT} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.java index b12402e76e..40e31cd7af 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.java +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.java @@ -7,4 +7,6 @@ import java.util.List; public interface ExtSysUserMapper { List query(GridExample example); + + List ldapUserNames(Integer from); } diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.xml index b7af624db4..cc1bfa5e25 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.xml @@ -62,4 +62,8 @@ left join sys_role r on r.role_id = sur.role_id where sur.user_id = #{user_id} + + diff --git a/backend/src/main/java/io/dataease/controller/sys/SysUserController.java b/backend/src/main/java/io/dataease/controller/sys/SysUserController.java index 0a1052f787..fc8978f56c 100644 --- a/backend/src/main/java/io/dataease/controller/sys/SysUserController.java +++ b/backend/src/main/java/io/dataease/controller/sys/SysUserController.java @@ -10,6 +10,7 @@ import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.PageUtils; import io.dataease.commons.utils.Pager; import io.dataease.controller.sys.base.BaseGridRequest; +import io.dataease.controller.sys.request.LdapAddRequest; import io.dataease.controller.sys.request.SysUserCreateRequest; import io.dataease.controller.sys.request.SysUserPwdRequest; import io.dataease.controller.sys.request.SysUserStateRequest; @@ -127,4 +128,18 @@ public class SysUserController { Pager> listPager = PageUtils.setPageInfo(page, sysRoleService.query(request)); return listPager; } + + + @ApiOperation("同步用户") + @PostMapping("/sync") + public void importLdap(@RequestBody LdapAddRequest request) { + sysUserService.saveLdapUsers(request); + } + + @ApiOperation("已同步用户") + @PostMapping("/existLdapUsers") + public List getExistLdapUsers() { + return sysUserService.ldapUserNames(); + } + } diff --git a/backend/src/main/java/io/dataease/controller/sys/request/LdapAddRequest.java b/backend/src/main/java/io/dataease/controller/sys/request/LdapAddRequest.java new file mode 100644 index 0000000000..e115541fcf --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/sys/request/LdapAddRequest.java @@ -0,0 +1,19 @@ +package io.dataease.controller.sys.request; + +import io.dataease.plugins.common.entity.XpackLdapUserEntity; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class LdapAddRequest implements Serializable { + + private Long deptId; + + private List roleIds; + + private Long enabled; + + private List users; +} 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 a4dbde86a3..a8268d5ef5 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XLdapServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XLdapServer.java @@ -1,6 +1,7 @@ package io.dataease.plugins.server; +import io.dataease.plugins.common.entity.XpackLdapUserEntity; import io.dataease.plugins.config.SpringContextUtil; import io.dataease.plugins.xpack.display.dto.response.SysSettingDto; import io.dataease.plugins.xpack.ldap.dto.response.LdapInfo; @@ -25,4 +26,16 @@ public class XLdapServer { LdapXpackService ldapXpackService = SpringContextUtil.getBean(LdapXpackService.class); ldapXpackService.save(settings); } + + @PostMapping("/testConn") + public void testConn() { + LdapXpackService ldapXpackService = SpringContextUtil.getBean(LdapXpackService.class); + ldapXpackService.testConn(); + } + + @PostMapping("/users") + public List users() { + LdapXpackService ldapXpackService = SpringContextUtil.getBean(LdapXpackService.class); + return ldapXpackService.users(); + } } diff --git a/backend/src/main/java/io/dataease/plugins/util/PluginUtils.java b/backend/src/main/java/io/dataease/plugins/util/PluginUtils.java index 52c422b870..57a8cabca5 100644 --- a/backend/src/main/java/io/dataease/plugins/util/PluginUtils.java +++ b/backend/src/main/java/io/dataease/plugins/util/PluginUtils.java @@ -46,6 +46,16 @@ public class PluginUtils { return f2CLicenseResponse; } + public static Boolean licValid() { + try{ + F2CLicenseResponse f2CLicenseResponse = PluginUtils.currentLic(); + if (f2CLicenseResponse.getStatus() != F2CLicenseResponse.Status.valid) return false; + }catch (Exception e) { + return false; + } + return true; + } + 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 bfc1871ec8..ab2a694c88 100644 --- a/backend/src/main/java/io/dataease/service/sys/SysUserService.java +++ b/backend/src/main/java/io/dataease/service/sys/SysUserService.java @@ -14,12 +14,14 @@ import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.BeanUtils; import io.dataease.commons.utils.CodingUtil; import io.dataease.controller.sys.base.BaseGridRequest; +import io.dataease.controller.sys.request.LdapAddRequest; import io.dataease.controller.sys.request.SysUserCreateRequest; import io.dataease.controller.sys.request.SysUserPwdRequest; import io.dataease.controller.sys.request.SysUserStateRequest; import io.dataease.controller.sys.response.SysUserGridResponse; import io.dataease.controller.sys.response.SysUserRole; import io.dataease.i18n.Translator; +import io.dataease.plugins.common.entity.XpackLdapUserEntity; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -85,6 +87,7 @@ public class SysUserService { user.setCreateTime(now); user.setUpdateTime(now); user.setIsAdmin(false); + user.setFrom(0); if (ObjectUtils.isEmpty(user.getPassword()) || StringUtils.equals(user.getPassword(), DEFAULT_PWD)) { user.setPassword(CodingUtil.md5(DEFAULT_PWD)); } else { @@ -99,6 +102,39 @@ public class SysUserService { return insert; } + @Transactional + public void saveLdapUsers(LdapAddRequest request) { + long now = System.currentTimeMillis(); + + List users = request.getUsers(); + List sysUsers = users.stream().map(user -> { + SysUser sysUser = BeanUtils.copyBean(new SysUser(), user); + sysUser.setUsername(user.getUserName()); + sysUser.setDeptId(request.getDeptId()); + sysUser.setPassword(CodingUtil.md5(DEFAULT_PWD)); + sysUser.setCreateTime(now); + sysUser.setUpdateTime(now); + sysUser.setEnabled(request.getEnabled()); + sysUser.setFrom(1); + return sysUser; + }).collect(Collectors.toList()); + + sysUsers.forEach(sysUser -> { + sysUserMapper.insert(sysUser); + SysUser dbUser = findOne(sysUser); + if (null != dbUser && null != dbUser.getUserId()) { + saveUserRoles( dbUser.getUserId(), request.getRoleIds()); + } + }); + } + + public List ldapUserNames() { + + List usernames = extSysUserMapper.ldapUserNames(1); + return usernames; + + } + /** * 修改用户密码清楚缓存 * diff --git a/backend/src/main/resources/generatorConfig.xml b/backend/src/main/resources/generatorConfig.xml index 2368a2540f..1123c31328 100644 --- a/backend/src/main/resources/generatorConfig.xml +++ b/backend/src/main/resources/generatorConfig.xml @@ -64,7 +64,7 @@ - +
diff --git a/frontend/src/api/system/user.js b/frontend/src/api/system/user.js index 47cfc04581..7b9e877ef2 100644 --- a/frontend/src/api/system/user.js +++ b/frontend/src/api/system/user.js @@ -98,4 +98,29 @@ export function roleGrid(pageIndex, pageSize, data) { }) } -export default { editPassword, delUser, editUser, addUser, userLists, editStatus, persionInfo, updatePerson, updatePersonPwd, allRoles, roleGrid } +export function ldapUsers(data) { + return request({ + url: '/api/ldap/users', + method: 'post', + loading: true + }) +} + +export function saveLdapUser(data) { + return request({ + url: '/api/user/sync', + method: 'post', + loading: true, + data + }) +} + +export function existLdapUsers() { + return request({ + url: '/api/user/existLdapUsers', + method: 'post', + loading: false + }) +} + +export default { editPassword, delUser, editUser, addUser, userLists, editStatus, persionInfo, updatePerson, updatePersonPwd, allRoles, roleGrid, ldapUsers, saveLdapUser, existLdapUsers } diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index ee99beb1eb..1768205ce8 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -50,3 +50,10 @@ export function languageApi(language) { method: 'post' }) } + +export function ldapStatus() { + return request({ + url: '/api/auth/isOpenLdap', + method: 'post' + }) +} diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 1a6dd25c6e..f47f54d7f3 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -482,6 +482,7 @@ export default { input_password: '请输入密码', input_phone: '请输入电话号码', input_roles: '请选择角色', + select_users: '请选择用户', special_characters_are_not_supported: '不支持特殊字符', mobile_number_format_is_incorrect: '手机号码格式不正确', email_format_is_incorrect: '邮箱格式不正确', diff --git a/frontend/src/store/modules/user.js b/frontend/src/store/modules/user.js index edf18a7091..284f38bac5 100644 --- a/frontend/src/store/modules/user.js +++ b/frontend/src/store/modules/user.js @@ -71,9 +71,9 @@ const mutations = { const actions = { // user login login({ commit }, userInfo) { - const { username, password } = userInfo + const { username, password, loginType } = userInfo return new Promise((resolve, reject) => { - login({ username: username.trim(), password: password }).then(response => { + login({ username: username.trim(), password: password, loginType: loginType }).then(response => { const { data } = response commit('SET_TOKEN', data.token) commit('SET_LOGIN_MSG', null) diff --git a/frontend/src/views/login/index.vue b/frontend/src/views/login/index.vue index 47e7186721..eadb585c48 100644 --- a/frontend/src/views/login/index.vue +++ b/frontend/src/views/login/index.vue @@ -15,6 +15,13 @@ {{ $t('login.welcome') + (uiInfo && uiInfo['ui.title'] && uiInfo['ui.title'].paramValue || ' DataEase') }}