未验证 提交 8c3b72ad 编写于 作者: E EricZeng 提交者: GitHub

Merge pull request #139 from didi/dev

optimize message when login failed
......@@ -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,7 +26,7 @@ public interface AccountService {
* @param username 用户名
* @return
*/
AccountDO getAccountDO(String username);
Result<AccountDO> getAccountDO(String username);
/**
* 删除用户
......
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);
......
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);
......
......@@ -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<>();
}
......
......@@ -3,6 +3,7 @@ package com.xiaojukeji.kafka.manager.account.component.sso;
import com.xiaojukeji.kafka.manager.account.AccountService;
import com.xiaojukeji.kafka.manager.account.component.AbstractSingleSignOn;
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;
......@@ -23,18 +24,21 @@ public class BaseSessionSignOn extends AbstractSingleSignOn {
private AccountService accountService;
@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());
if (ValidateUtils.isNull(accountDO)) {
return null;
Result<AccountDO> accountResult = accountService.getAccountDO(dto.getUsername());
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");
}
if (!accountResult.getData().getPassword().equals(EncryptUtil.md5(dto.getPassword()))) {
return Result.buildFailure("password illegal");
}
return dto.getUsername();
return Result.buildSuc(accountResult.getData().getUsername());
}
@Override
......
......@@ -7,6 +7,7 @@ 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.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;
......@@ -101,7 +102,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 +118,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
......
......@@ -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) {
......
package com.xiaojukeji.kafka.manager.web.api.versionone;
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.dto.normal.LoginDTO;
import com.xiaojukeji.kafka.manager.common.entity.vo.common.AccountVO;
......@@ -11,8 +9,6 @@ import com.xiaojukeji.kafka.manager.account.LoginService;
import com.xiaojukeji.kafka.manager.common.constant.ApiPrefix;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -28,26 +24,22 @@ import javax.servlet.http.HttpServletResponse;
@RestController
@RequestMapping(ApiPrefix.API_V1_SSO_PREFIX)
public class LoginController {
private static final Logger LOGGER = LoggerFactory.getLogger(LoginController.class);
@Autowired
private LoginService loginService;
@ApiOperation(value = "登陆", notes = "")
@RequestMapping(value = "login", method = RequestMethod.POST)
@ResponseBody
public Result<AccountVO> login(HttpServletRequest request,
HttpServletResponse response,
@RequestBody LoginDTO dto){
Account account = loginService.login(request, response, dto);
if (ValidateUtils.isNull(account)) {
return Result.buildFrom(ResultStatus.LOGIN_FAILED);
public Result<AccountVO> login(HttpServletRequest request, HttpServletResponse response, @RequestBody LoginDTO dto){
Result<Account> accountResult = loginService.login(request, response, dto);
if (ValidateUtils.isNull(accountResult) || accountResult.failed()) {
return new Result<>(accountResult.getCode(), accountResult.getMessage());
}
AccountVO vo = new AccountVO();
vo.setUsername(account.getUsername());
vo.setChineseName(account.getChineseName());
vo.setDepartment(account.getDepartment());
vo.setRole(account.getAccountRoleEnum().getRole());
vo.setUsername(accountResult.getData().getUsername());
vo.setChineseName(accountResult.getData().getChineseName());
vo.setDepartment(accountResult.getData().getDepartment());
vo.setRole(accountResult.getData().getAccountRoleEnum().getRole());
return new Result<>(vo);
}
......@@ -58,28 +50,4 @@ public class LoginController {
loginService.logout(request, response, true);
return new Result();
}
@Deprecated
@ApiOperation(value = "登录检查", notes = "检查SSO返回的Code")
@RequestMapping(value = "xiaojukeji/login-check", method = RequestMethod.POST)
@ResponseBody
public Result<AccountVO> checkCodeAndGetStaffInfo(HttpServletRequest request,
HttpServletResponse response,
@RequestBody LoginDTO dto) {
Result<AccountVO> ra = login(request, response, dto);
if (!Constant.SUCCESS.equals(ra.getCode())) {
LOGGER.info("user login failed, req:{} result:{}.", dto, ra);
} else {
LOGGER.info("user login success, req:{} result:{}.", dto, ra);
}
return ra;
}
@Deprecated
@ApiOperation(value = "登出", notes = "")
@RequestMapping(value = "xiaojukeji/logout", method = RequestMethod.DELETE)
@ResponseBody
public Result logout(HttpServletRequest request, HttpServletResponse response) {
return logoff(request, response);
}
}
......@@ -35,7 +35,7 @@ public class RdAccountController {
@RequestMapping(value = "accounts", method = RequestMethod.POST)
@ResponseBody
public Result addAccount(@RequestBody AccountDTO dto) {
if (!dto.legal() || ValidateUtils.isNull(dto.getPassword())) {
if (!dto.legal() || ValidateUtils.isBlank(dto.getPassword())) {
return Result.buildFrom(ResultStatus.PARAM_ILLEGAL);
}
ResultStatus rs = accountService.createAccount(AccountConverter.convert2AccountDO(dto));
......
......@@ -39,10 +39,10 @@ public class SwaggerConfig implements WebMvcConfigurer {
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Kafka云平台-接口文档")
.description("欢迎使用滴滴出行开源kafka-manager")
.title("Logi-KafkaManager 接口文档")
.description("欢迎使用滴滴Logi-KafkaManager")
.contact("huangyiminghappy@163.com")
.version("2.0")
.version("2.2.0")
.build();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册