应用增加白名单
This commit is contained in:
parent
7af2547027
commit
17bc552dc5
@ -1,8 +1,13 @@
|
|||||||
package com.sunyard.chsm.mapper;
|
package com.sunyard.chsm.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.sunyard.chsm.model.entity.IpWhitelist;
|
import com.sunyard.chsm.model.entity.IpWhitelist;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author liulu
|
* @author liulu
|
||||||
@ -11,6 +16,21 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
@Mapper
|
@Mapper
|
||||||
public interface IpWhitelisttMapper extends BaseMapper<IpWhitelist> {
|
public interface IpWhitelisttMapper extends BaseMapper<IpWhitelist> {
|
||||||
|
|
||||||
|
default List<IpWhitelist> selectByAppIds(List<Long> appIds) {
|
||||||
|
if (CollectionUtils.isEmpty(appIds)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return selectList(
|
||||||
|
new LambdaQueryWrapper<IpWhitelist>()
|
||||||
|
.in(IpWhitelist::getAppId, appIds)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
default void deleteByAppId(Long appId) {
|
||||||
|
delete(
|
||||||
|
new LambdaQueryWrapper<IpWhitelist>()
|
||||||
|
.eq(IpWhitelist::getAppId, appId)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,12 @@ public class AppSave {
|
|||||||
*/
|
*/
|
||||||
@NotEmpty(message = "密码服务不能为空")
|
@NotEmpty(message = "密码服务不能为空")
|
||||||
private List<Long> serviceIds;
|
private List<Long> serviceIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用白名单
|
||||||
|
*/
|
||||||
|
private List<String> whiteIps;
|
||||||
|
|
||||||
@Size(max = 500, message = "备注长度在1-500之间")
|
@Size(max = 500, message = "备注长度在1-500之间")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ public class AppView {
|
|||||||
private String statusText;
|
private String statusText;
|
||||||
private String appKey;
|
private String appKey;
|
||||||
private String appSecret;
|
private String appSecret;
|
||||||
|
private List<String> whiteIps;
|
||||||
|
|
||||||
private String remark;
|
private String remark;
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
@ -11,10 +11,13 @@ import com.sunyard.chsm.enums.EnableStatus;
|
|||||||
import com.sunyard.chsm.mapper.AppServiceMapper;
|
import com.sunyard.chsm.mapper.AppServiceMapper;
|
||||||
import com.sunyard.chsm.mapper.ApplicationMapper;
|
import com.sunyard.chsm.mapper.ApplicationMapper;
|
||||||
import com.sunyard.chsm.mapper.CryptoServiceMapper;
|
import com.sunyard.chsm.mapper.CryptoServiceMapper;
|
||||||
|
import com.sunyard.chsm.mapper.IpWhitelisttMapper;
|
||||||
import com.sunyard.chsm.model.entity.AppService;
|
import com.sunyard.chsm.model.entity.AppService;
|
||||||
import com.sunyard.chsm.model.entity.Application;
|
import com.sunyard.chsm.model.entity.Application;
|
||||||
import com.sunyard.chsm.model.entity.CryptoService;
|
import com.sunyard.chsm.model.entity.CryptoService;
|
||||||
|
import com.sunyard.chsm.model.entity.IpWhitelist;
|
||||||
import com.sunyard.chsm.service.ApplicationService;
|
import com.sunyard.chsm.service.ApplicationService;
|
||||||
|
import com.sunyard.ssp.utils.SecurityUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -46,6 +49,10 @@ public class ApplicationServiceImpl implements ApplicationService {
|
|||||||
private AppServiceMapper appServiceMapper;
|
private AppServiceMapper appServiceMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private CryptoServiceMapper cryptoServiceMapper;
|
private CryptoServiceMapper cryptoServiceMapper;
|
||||||
|
@Resource
|
||||||
|
private IpWhitelisttMapper ipWhitelisttMapper;
|
||||||
|
@Resource
|
||||||
|
private SecurityUtil securityUtil;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<AppView> selectPageList(AppQuery query) {
|
public Page<AppView> selectPageList(AppQuery query) {
|
||||||
@ -68,12 +75,17 @@ public class ApplicationServiceImpl implements ApplicationService {
|
|||||||
List<CryptoService> services = cryptoServiceMapper.selectBatchIds(appServices.stream().map(AppService::getServiceId).collect(Collectors.toList()));
|
List<CryptoService> services = cryptoServiceMapper.selectBatchIds(appServices.stream().map(AppService::getServiceId).collect(Collectors.toList()));
|
||||||
Map<Long, String> snMap = services.stream().collect(Collectors.toMap(CryptoService::getId, CryptoService::getName));
|
Map<Long, String> snMap = services.stream().collect(Collectors.toMap(CryptoService::getId, CryptoService::getName));
|
||||||
|
|
||||||
|
List<IpWhitelist> appWhiteIps = ipWhitelisttMapper.selectByAppIds(appIds);
|
||||||
|
Map<Long, List<String>> appIpMap = appWhiteIps.stream()
|
||||||
|
.collect(Collectors.groupingBy(IpWhitelist::getAppId, Collectors.mapping(IpWhitelist::getIp, Collectors.toList())));
|
||||||
|
|
||||||
List<AppView> viewList = records.stream()
|
List<AppView> viewList = records.stream()
|
||||||
.map(it -> {
|
.map(it -> {
|
||||||
AppView view = new AppView();
|
AppView view = new AppView();
|
||||||
BeanUtils.copyProperties(it, view);
|
BeanUtils.copyProperties(it, view);
|
||||||
List<Long> sIds = appServiceMap.getOrDefault(it.getId(), Collections.emptyList());
|
List<Long> sIds = appServiceMap.getOrDefault(it.getId(), Collections.emptyList());
|
||||||
view.setServiceIds(sIds.stream().map(String::valueOf).collect(Collectors.toList()));
|
view.setServiceIds(sIds.stream().map(String::valueOf).collect(Collectors.toList()));
|
||||||
|
view.setWhiteIps(appIpMap.get(it.getId()));
|
||||||
String sn = sIds.stream()
|
String sn = sIds.stream()
|
||||||
.map(snMap::get)
|
.map(snMap::get)
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
@ -111,9 +123,24 @@ public class ApplicationServiceImpl implements ApplicationService {
|
|||||||
as.setCreateTime(now);
|
as.setCreateTime(now);
|
||||||
appServiceMapper.insert(as);
|
appServiceMapper.insert(as);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!CollectionUtils.isEmpty(save.getWhiteIps())) {
|
||||||
|
for (String ip : save.getWhiteIps()) {
|
||||||
|
IpWhitelist whitelist = new IpWhitelist();
|
||||||
|
whitelist.setId(IdWorker.getId());
|
||||||
|
whitelist.setAppId(app.getId());
|
||||||
|
whitelist.setIp(ip);
|
||||||
|
whitelist.setScope("app");
|
||||||
|
whitelist.setStatus(EnableStatus.ENABLED.getCode());
|
||||||
|
whitelist.setCreator(securityUtil.getCurrUser().getRealname());
|
||||||
|
whitelist.setCreateTime(LocalDateTime.now());
|
||||||
|
ipWhitelisttMapper.insert(whitelist);
|
||||||
|
}
|
||||||
|
}
|
||||||
return app.getId();
|
return app.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(AppSave update) {
|
public void update(AppSave update) {
|
||||||
Assert.notNull(update.getId(), "id不能为空");
|
Assert.notNull(update.getId(), "id不能为空");
|
||||||
@ -141,6 +168,20 @@ public class ApplicationServiceImpl implements ApplicationService {
|
|||||||
as.setCreateTime(now);
|
as.setCreateTime(now);
|
||||||
appServiceMapper.insert(as);
|
appServiceMapper.insert(as);
|
||||||
}
|
}
|
||||||
|
ipWhitelisttMapper.deleteByAppId(update.getId());
|
||||||
|
if (!CollectionUtils.isEmpty(update.getWhiteIps())) {
|
||||||
|
for (String ip : update.getWhiteIps()) {
|
||||||
|
IpWhitelist whitelist = new IpWhitelist();
|
||||||
|
whitelist.setId(IdWorker.getId());
|
||||||
|
whitelist.setAppId(exist.getId());
|
||||||
|
whitelist.setIp(ip);
|
||||||
|
whitelist.setScope("app");
|
||||||
|
whitelist.setStatus(EnableStatus.ENABLED.getCode());
|
||||||
|
whitelist.setCreator(securityUtil.getCurrUser().getRealname());
|
||||||
|
whitelist.setCreateTime(LocalDateTime.now());
|
||||||
|
ipWhitelisttMapper.insert(whitelist);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user