Merge pull request #2 from didi/master

sync code
This commit is contained in:
Hongten
2021-07-04 18:04:55 +08:00
committed by GitHub
76 changed files with 1045 additions and 365 deletions

View File

@@ -12,9 +12,29 @@ import javax.servlet.http.HttpServletResponse;
* @date 20/8/20
*/
public interface LoginService {
/**
* 登录
* @param request HttpServletRequest
* @param response HttpServletResponse
* @param dto 登录信息
* @return 登录结果
*/
Result<Account> login(HttpServletRequest request, HttpServletResponse response, LoginDTO dto);
/**
* 登出
* @param request HttpServletRequest
* @param response HttpServletResponse
* @param needJump2LoginPage 是否需要跳转到登录页
*/
void logout(HttpServletRequest request, HttpServletResponse response, Boolean needJump2LoginPage);
/**
* 检查是否登录
* @param request HttpServletRequest
* @param response HttpServletResponse
* @param classRequestMappingValue request-mapping的value
* @return 检查结果, false:未登录或无权限, true:已登录并且有权限
*/
boolean checkLogin(HttpServletRequest request, HttpServletResponse response, String classRequestMappingValue);
}

View File

@@ -7,7 +7,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 单点登录抽象类
* 登录抽象类
* @author zengqiao
* @date 20/8/20
*/

View File

@@ -0,0 +1,50 @@
package com.xiaojukeji.kafka.manager.account.component.login.trick;
import com.xiaojukeji.kafka.manager.common.constant.TrickLoginConstant;
import com.xiaojukeji.kafka.manager.service.service.ConfigService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.Optional;
/**
* @author zengqiao
* @date 21/5/18
*/
@Service
public class TrickLoginService {
private final static Logger LOGGER = LoggerFactory.getLogger(TrickLoginService.class);
@Autowired
private ConfigService configService;
/**
* 是否开启trick的方式登录
*/
public boolean isTrickLoginOn(HttpServletRequest request) {
return TrickLoginConstant.TRICK_LOGIN_SWITCH_ON.equals(request.getHeader(TrickLoginConstant.TRICK_LOGIN_SWITCH));
}
/**
* 开启trick方式登录后当前用户是否可以登录
*/
public String checkTrickLogin(HttpServletRequest request) {
String trickLoginUser = request.getHeader(TrickLoginConstant.TRICK_LOGIN_USER);
LOGGER.info("class=TrickLoginService||method=checkTrickLogin||user={}||uri={}||msg=try trick login", trickLoginUser, request.getRequestURI());
if (!checkTrickLogin(trickLoginUser)) {
LOGGER.warn("class=TrickLoginService||method=checkTrickLogin||user={}||uri={}||msg=trick login failed", trickLoginUser, request.getRequestURI());
return null;
}
return trickLoginUser;
}
private boolean checkTrickLogin(String trickLoginUser) {
return Optional.ofNullable(configService.getArrayByKey(TrickLoginConstant.TRICK_LOGIN_LEGAL_USER_CONFIG_KEY, String.class))
.filter(names -> names.contains(trickLoginUser))
.isPresent();
}
}

View File

@@ -3,6 +3,7 @@ package com.xiaojukeji.kafka.manager.account.impl;
import com.xiaojukeji.kafka.manager.account.AccountService;
import com.xiaojukeji.kafka.manager.account.component.AbstractSingleSignOn;
import com.xiaojukeji.kafka.manager.account.LoginService;
import com.xiaojukeji.kafka.manager.account.component.login.trick.TrickLoginService;
import com.xiaojukeji.kafka.manager.common.bizenum.AccountRoleEnum;
import com.xiaojukeji.kafka.manager.common.constant.ApiPrefix;
import com.xiaojukeji.kafka.manager.common.constant.LoginConstant;
@@ -31,6 +32,9 @@ public class LoginServiceImpl implements LoginService {
@Autowired
private AccountService accountService;
@Autowired
private TrickLoginService trickLoginService;
@Autowired
private AbstractSingleSignOn singleSignOn;
@@ -80,7 +84,7 @@ public class LoginServiceImpl implements LoginService {
return true;
}
String username = singleSignOn.checkLoginAndGetLdap(request);
String username = trickLoginService.isTrickLoginOn(request)? trickLoginService.checkTrickLogin(request): singleSignOn.checkLoginAndGetLdap(request);
if (ValidateUtils.isBlank(username)) {
// 未登录, 则返回false, 同时重定向到登录页面
singleSignOn.setRedirectToLoginPage(response);

View File

@@ -0,0 +1,39 @@
package com.xiaojukeji.kafka.manager.openapi.common.dto;
import com.xiaojukeji.kafka.manager.common.entity.dto.ClusterTopicDTO;
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(description = "权限调整")
public class TopicAuthorityDTO extends ClusterTopicDTO {
@ApiModelProperty(value = "appId")
private String appId;
@ApiModelProperty(value = "0:无权限, 1:读, 2:写, 3:读写, 4:可管理")
private Integer access;
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public Integer getAccess() {
return access;
}
public void setAccess(Integer access) {
this.access = access;
}
@Override
public boolean paramLegal() {
return !ValidateUtils.isNullOrLessThanZero(clusterId)
&& !ValidateUtils.isBlank(topicName)
&& !ValidateUtils.isBlank(appId)
&& !ValidateUtils.isNullOrLessThanZero(access);
}
}