Merge branch 'master' into v2.2.1_ldap

This commit is contained in:
李民
2021-02-10 10:00:32 +08:00
committed by GitHub
147 changed files with 3080 additions and 875 deletions

View File

@@ -2,6 +2,7 @@ package com.xiaojukeji.kafka.manager.account;
import com.xiaojukeji.kafka.manager.account.common.EnterpriseStaff;
import com.xiaojukeji.kafka.manager.common.bizenum.AccountRoleEnum;
import com.xiaojukeji.kafka.manager.common.entity.Result;
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
import com.xiaojukeji.kafka.manager.common.entity.pojo.AccountDO;
@@ -25,14 +26,14 @@ public interface AccountService {
* @param username 用户名
* @return
*/
AccountDO getAccountDO(String username);
Result<AccountDO> getAccountDO(String username);
/**
* 删除用户
* @param username 用户名
* @return
*/
ResultStatus deleteByName(String username);
ResultStatus deleteByName(String username, String operator);
/**
* 更新账号

View File

@@ -1,5 +1,6 @@
package com.xiaojukeji.kafka.manager.account;
import com.xiaojukeji.kafka.manager.common.entity.Result;
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.LoginDTO;
@@ -11,7 +12,7 @@ import javax.servlet.http.HttpServletResponse;
* @date 20/8/20
*/
public interface LoginService {
Account login(HttpServletRequest request, HttpServletResponse response, LoginDTO dto);
Result<Account> login(HttpServletRequest request, HttpServletResponse response, LoginDTO dto);
void logout(HttpServletRequest request, HttpServletResponse response, Boolean needJump2LoginPage);

View File

@@ -1,5 +1,6 @@
package com.xiaojukeji.kafka.manager.account.component;
import com.xiaojukeji.kafka.manager.common.entity.Result;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.LoginDTO;
import javax.servlet.http.HttpServletRequest;
@@ -18,7 +19,7 @@ public abstract class AbstractSingleSignOn {
protected static final String HEADER_REDIRECT_KEY = "location";
public abstract String loginAndGetLdap(HttpServletRequest request, HttpServletResponse response, LoginDTO dto);
public abstract Result<String> loginAndGetLdap(HttpServletRequest request, HttpServletResponse response, LoginDTO dto);
public abstract void logout(HttpServletRequest request, HttpServletResponse response, Boolean needJump2LoginPage);

View File

@@ -41,7 +41,14 @@ public class BaseEnterpriseStaffService extends AbstractEnterpriseStaffService {
@Override
public List<EnterpriseStaff> searchEnterpriseStaffByKeyWord(String keyWord) {
try {
List<AccountDO> doList = accountDao.searchByNamePrefix(keyWord);
List<AccountDO> doList = null;
if (ValidateUtils.isBlank(keyWord)) {
// 当用户没有任何输入的时候, 返回全部的用户
doList = accountDao.list();
} else {
doList = accountDao.searchByNamePrefix(keyWord);
}
if (ValidateUtils.isEmptyList(doList)) {
return new ArrayList<>();
}

View File

@@ -4,6 +4,7 @@ import com.xiaojukeji.kafka.manager.account.AccountService;
import com.xiaojukeji.kafka.manager.account.component.AbstractSingleSignOn;
import com.xiaojukeji.kafka.manager.common.bizenum.AccountRoleEnum;
import com.xiaojukeji.kafka.manager.common.constant.LoginConstant;
import com.xiaojukeji.kafka.manager.common.entity.Result;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.LoginDTO;
import com.xiaojukeji.kafka.manager.common.entity.pojo.AccountDO;
import com.xiaojukeji.kafka.manager.common.utils.EncryptUtil;
@@ -41,42 +42,44 @@ public class BaseSessionSignOn extends AbstractSingleSignOn {
private boolean authUserRegistration;
@Override
public String loginAndGetLdap(HttpServletRequest request, HttpServletResponse response, LoginDTO dto) {
public Result<String> loginAndGetLdap(HttpServletRequest request, HttpServletResponse response, LoginDTO dto) {
if (ValidateUtils.isBlank(dto.getUsername()) || ValidateUtils.isNull(dto.getPassword())) {
return null;
}
AccountDO accountDO = accountService.getAccountDO(dto.getUsername());
Result<AccountDO> accountResult = accountService.getAccountDO(dto.getUsername());
//modifier limin
//判断是否激活了LDAP验证。若激活并且数据库无此用户则自动注册
if(ldapEnabled){
//验证账密
//去LDAP验证账密
if(!ldapAuthentication.authenricate(dto.getUsername(),dto.getPassword())){
return null;
}
if(accountDO==null && authUserRegistration){
if(ValidateUtils.isNull(accountResult) && authUserRegistration){
//自动注册
accountDO = new AccountDO();
AccountDO accountDO = new AccountDO();
accountDO.setUsername(dto.getUsername());
accountDO.setRole(AccountRoleEnum.getUserRoleEnum(authUserRegistrationRole).getRole());
accountDO.setPassword(EncryptUtil.md5(dto.getPassword()));
accountService.createAccount(accountDO);
return dto.getUsername();
}
return dto.getUsername();
return Result.buildSuc(dto.getUsername());
}
if (ValidateUtils.isNull(accountDO)) {
return null;
if (ValidateUtils.isNull(accountResult) || accountResult.failed()) {
return new Result<>(accountResult.getCode(), accountResult.getMessage());
}
if (!accountDO.getPassword().equals(EncryptUtil.md5(dto.getPassword()))) {
return null;
if (ValidateUtils.isNull(accountResult.getData())) {
return Result.buildFailure("username illegal");
}
return dto.getUsername();
if (!accountResult.getData().getPassword().equals(EncryptUtil.md5(dto.getPassword()))) {
return Result.buildFailure("password illegal");
}
return Result.buildSuc(accountResult.getData().getUsername());
}
@Override

View File

@@ -6,7 +6,10 @@ import com.xiaojukeji.kafka.manager.account.AccountService;
import com.xiaojukeji.kafka.manager.account.common.EnterpriseStaff;
import com.xiaojukeji.kafka.manager.account.component.AbstractEnterpriseStaffService;
import com.xiaojukeji.kafka.manager.common.bizenum.AccountRoleEnum;
import com.xiaojukeji.kafka.manager.common.bizenum.ModuleEnum;
import com.xiaojukeji.kafka.manager.common.bizenum.OperateEnum;
import com.xiaojukeji.kafka.manager.common.constant.Constant;
import com.xiaojukeji.kafka.manager.common.entity.Result;
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
import com.xiaojukeji.kafka.manager.common.entity.pojo.AccountDO;
@@ -14,6 +17,7 @@ import com.xiaojukeji.kafka.manager.common.utils.EncryptUtil;
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
import com.xiaojukeji.kafka.manager.dao.AccountDao;
import com.xiaojukeji.kafka.manager.service.service.ConfigService;
import com.xiaojukeji.kafka.manager.service.service.OperateRecordService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +51,9 @@ public class AccountServiceImpl implements AccountService {
@Autowired
private AbstractEnterpriseStaffService enterpriseStaffService;
@Autowired
private OperateRecordService operateRecordService;
/**
* 用户组织信息
* <username, Staff>
@@ -81,9 +88,12 @@ public class AccountServiceImpl implements AccountService {
}
@Override
public ResultStatus deleteByName(String username) {
public ResultStatus deleteByName(String username, String operator) {
try {
if (accountDao.deleteByName(username) > 0) {
Map<String, String> content = new HashMap<>();
content.put("username", username);
operateRecordService.insert(operator, ModuleEnum.AUTHORITY, username, OperateEnum.DELETE, content);
return ResultStatus.SUCCESS;
}
} catch (Exception e) {
@@ -101,7 +111,7 @@ public class AccountServiceImpl implements AccountService {
return ResultStatus.ACCOUNT_NOT_EXIST;
}
if (!ValidateUtils.isNull(accountDO.getPassword())) {
if (!ValidateUtils.isBlank(accountDO.getPassword())) {
accountDO.setPassword(EncryptUtil.md5(accountDO.getPassword()));
} else {
accountDO.setPassword(oldAccountDO.getPassword());
@@ -117,8 +127,13 @@ public class AccountServiceImpl implements AccountService {
}
@Override
public AccountDO getAccountDO(String username) {
return accountDao.getByName(username);
public Result<AccountDO> getAccountDO(String username) {
try {
return Result.buildSuc(accountDao.getByName(username));
} catch (Exception e) {
LOGGER.warn("class=AccountServiceImpl||method=getAccountDO||username={}||errMsg={}||msg=get account fail", username, e.getMessage());
}
return Result.buildFrom(ResultStatus.MYSQL_ERROR);
}
@Override

View File

@@ -6,6 +6,7 @@ import com.xiaojukeji.kafka.manager.account.LoginService;
import com.xiaojukeji.kafka.manager.common.bizenum.AccountRoleEnum;
import com.xiaojukeji.kafka.manager.common.constant.ApiPrefix;
import com.xiaojukeji.kafka.manager.common.constant.LoginConstant;
import com.xiaojukeji.kafka.manager.common.entity.Result;
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.LoginDTO;
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
@@ -34,15 +35,15 @@ public class LoginServiceImpl implements LoginService {
private AbstractSingleSignOn singleSignOn;
@Override
public Account login(HttpServletRequest request, HttpServletResponse response, LoginDTO loginDTO) {
String username = singleSignOn.loginAndGetLdap(request, response, loginDTO);
if (ValidateUtils.isBlank(username)) {
public Result<Account> login(HttpServletRequest request, HttpServletResponse response, LoginDTO loginDTO) {
Result<String> userResult = singleSignOn.loginAndGetLdap(request, response, loginDTO);
if (ValidateUtils.isNull(userResult) || userResult.failed()) {
logout(request, response, false);
return null;
return new Result<>(userResult.getCode(), userResult.getMessage());
}
Account account = accountService.getAccountFromCache(username);
Account account = accountService.getAccountFromCache(userResult.getData());
initLoginContext(request, response, account);
return account;
return Result.buildSuc(account);
}
private void initLoginContext(HttpServletRequest request, HttpServletResponse response, Account account) {