Commit 6de32c6d authored by trumansdo's avatar trumansdo
Browse files

改变目录结构,以防止ide混合打开前端项目,导致误操作改变前端项目的格式


Signed-off-by: default avatartrumansdo <1012243881@qq.com>
parent afdf4eec
package com.ibeetl.admin.core.conf;
import java.io.UnsupportedEncodingException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.beetl.core.Context;
import org.beetl.core.Function;
import org.beetl.core.GroupTemplate;
import org.beetl.ext.simulate.WebSimulate;
import org.beetl.sql.core.InterceptorContext;
import org.beetl.sql.ext.DebugInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ibeetl.admin.core.rbac.DataAccess;
import com.ibeetl.admin.core.rbac.DataAccessFactory;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.util.beetl.DictQueryFunction;
import com.ibeetl.admin.core.util.beetl.FileFunction;
import com.ibeetl.admin.core.util.beetl.FunAccessUrlFunction;
import com.ibeetl.admin.core.util.beetl.FunFunction;
import com.ibeetl.admin.core.util.beetl.MenuFunction;
import com.ibeetl.admin.core.util.beetl.OrgFunction;
import com.ibeetl.admin.core.util.beetl.RoleFunction;
import com.ibeetl.admin.core.util.beetl.SearchCondtionFunction;
import com.ibeetl.admin.core.util.beetl.SysFunctionTreeFunction;
import com.ibeetl.admin.core.util.beetl.UUIDFunction;
import com.ibeetl.admin.core.util.beetl.XXSDefenderFormat;
import com.ibeetl.admin.core.web.query.QueryParser;
import com.ibeetl.starter.BeetlTemplateCustomize;
import com.ibeetl.starter.ObjectMapperJsonUtil;
@Configuration
@AutoConfigureAfter(JasonConfig.class)
public class BeetlConf {
@Autowired
Environment env;
@Autowired
CorePlatformService platFormService;
@Autowired
OrgFunction orgFunction;
@Autowired
SysFunctionTreeFunction sysFunctionTreeFunction;
@Autowired
DictQueryFunction dictDownQueryFunction;
@Autowired
RoleFunction roleFunction;
@Autowired
FileFunction fileFunction;
@Autowired
SearchCondtionFunction searchCondtionFunction;
@Autowired
DataAccessFactory dataAccessFactory;
@Autowired
ApplicationContext applicationContext;
@Autowired
FunFunction funFunction;
@Autowired
FunAccessUrlFunction funAccessUrlFunction;
@Autowired
MenuFunction menuFunction;
@Bean
public WebSimulate getWebSimulate(GroupTemplate gt, ObjectMapper objectMapper) {
return new WebSimulate(gt, new ObjectMapperJsonUtil(objectMapper)) {
protected String getRenderPath(HttpServletRequest request) {
String defaultRenderPath = request.getServletPath();
return defaultRenderPath.replace(".do", ".html");
}
};
}
@Bean
public BeetlTemplateCustomize beetlTemplateCustomize() {
return new BeetlTemplateCustomize() {
public void customize(GroupTemplate groupTemplate) {
groupTemplate.registerFunctionPackage("platform", platFormService);
groupTemplate.registerFunctionPackage("queryCondtion", new QueryParser());
groupTemplate.registerFunction("core.orgName", orgFunction);
groupTemplate.registerFunction("core.functionName", funFunction);
groupTemplate.registerFunction("core.funAccessUrl", funAccessUrlFunction);
groupTemplate.registerFunction("core.menuName", menuFunction);
groupTemplate.registerFunction("core.searchCondtion", searchCondtionFunction);
groupTemplate.registerFunction("core.roles", roleFunction);
groupTemplate.registerFunction("core.file", fileFunction);
groupTemplate.registerFormat("xss", new XXSDefenderFormat());
groupTemplate.registerFunction("uuid", new UUIDFunction());
groupTemplate.registerFunctionPackage("dict", dictDownQueryFunction);
// 模板页面判断是否有按钮权限,比如canAccess
groupTemplate.registerFunction("canAccess", new Function() {
@Override
public Boolean call(Object[] paras, Context ctx) {
Long userId = platFormService.getCurrentUser().getId();
Long orgId = platFormService.getCurrentOrgId();
String functionCode = (String) paras[0];
return platFormService.canAcessFunction(userId, orgId, functionCode);
}
});
groupTemplate.registerFunction("abcd", new Function() {
@Override
public Boolean call(Object[] paras, Context ctx) {
return true;
}
});
groupTemplate.registerFunction("env", new Function() {
@Override
public String call(Object[] paras, Context ctx) {
String key = (String)paras[0];
String value = env.getProperty(key);
if(value!=null) {
return getStr(value);
}
if(paras.length==2) {
return (String)paras[1];
}
return null;
}
protected String getStr(String str) {
try {
return new String(str.getBytes("iso8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
});
groupTemplate.registerFunction("dataAccessList", new Function() {
@Override
public List<DataAccess> call(Object[] paras, Context ctx) {
return dataAccessFactory.all();
}
});
}
};
}
static class StarterDebugInterceptor extends DebugInterceptor {
protected boolean isSimple(String sqlId) {
if (sqlId.indexOf("_gen_") != -1) {
return true;
} else {
return false;
}
}
protected void simpleOut(InterceptorContext ctx) {
return;
}
}
}
package com.ibeetl.admin.core.conf;
import java.io.UnsupportedEncodingException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.beetl.core.Context;
import org.beetl.core.Function;
import org.beetl.core.GroupTemplate;
import org.beetl.ext.simulate.WebSimulate;
import org.beetl.sql.core.InterceptorContext;
import org.beetl.sql.ext.DebugInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ibeetl.admin.core.rbac.DataAccess;
import com.ibeetl.admin.core.rbac.DataAccessFactory;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.util.beetl.DictQueryFunction;
import com.ibeetl.admin.core.util.beetl.FileFunction;
import com.ibeetl.admin.core.util.beetl.FunAccessUrlFunction;
import com.ibeetl.admin.core.util.beetl.FunFunction;
import com.ibeetl.admin.core.util.beetl.MenuFunction;
import com.ibeetl.admin.core.util.beetl.OrgFunction;
import com.ibeetl.admin.core.util.beetl.RoleFunction;
import com.ibeetl.admin.core.util.beetl.SearchCondtionFunction;
import com.ibeetl.admin.core.util.beetl.SysFunctionTreeFunction;
import com.ibeetl.admin.core.util.beetl.UUIDFunction;
import com.ibeetl.admin.core.util.beetl.XXSDefenderFormat;
import com.ibeetl.admin.core.web.query.QueryParser;
import com.ibeetl.starter.BeetlTemplateCustomize;
import com.ibeetl.starter.ObjectMapperJsonUtil;
@Configuration
@AutoConfigureAfter(JasonConfig.class)
public class BeetlConf {
@Autowired
Environment env;
@Autowired
CorePlatformService platFormService;
@Autowired
OrgFunction orgFunction;
@Autowired
SysFunctionTreeFunction sysFunctionTreeFunction;
@Autowired
DictQueryFunction dictDownQueryFunction;
@Autowired
RoleFunction roleFunction;
@Autowired
FileFunction fileFunction;
@Autowired
SearchCondtionFunction searchCondtionFunction;
@Autowired
DataAccessFactory dataAccessFactory;
@Autowired
ApplicationContext applicationContext;
@Autowired
FunFunction funFunction;
@Autowired
FunAccessUrlFunction funAccessUrlFunction;
@Autowired
MenuFunction menuFunction;
@Bean
public WebSimulate getWebSimulate(GroupTemplate gt, ObjectMapper objectMapper) {
return new WebSimulate(gt, new ObjectMapperJsonUtil(objectMapper)) {
protected String getRenderPath(HttpServletRequest request) {
String defaultRenderPath = request.getServletPath();
return defaultRenderPath.replace(".do", ".html");
}
};
}
@Bean
public BeetlTemplateCustomize beetlTemplateCustomize() {
return new BeetlTemplateCustomize() {
public void customize(GroupTemplate groupTemplate) {
groupTemplate.registerFunctionPackage("platform", platFormService);
groupTemplate.registerFunctionPackage("queryCondtion", new QueryParser());
groupTemplate.registerFunction("core.orgName", orgFunction);
groupTemplate.registerFunction("core.functionName", funFunction);
groupTemplate.registerFunction("core.funAccessUrl", funAccessUrlFunction);
groupTemplate.registerFunction("core.menuName", menuFunction);
groupTemplate.registerFunction("core.searchCondtion", searchCondtionFunction);
groupTemplate.registerFunction("core.roles", roleFunction);
groupTemplate.registerFunction("core.file", fileFunction);
groupTemplate.registerFormat("xss", new XXSDefenderFormat());
groupTemplate.registerFunction("uuid", new UUIDFunction());
groupTemplate.registerFunctionPackage("dict", dictDownQueryFunction);
// 模板页面判断是否有按钮权限,比如canAccess
groupTemplate.registerFunction("canAccess", new Function() {
@Override
public Boolean call(Object[] paras, Context ctx) {
Long userId = platFormService.getCurrentUser().getId();
Long orgId = platFormService.getCurrentOrgId();
String functionCode = (String) paras[0];
return platFormService.canAcessFunction(userId, orgId, functionCode);
}
});
groupTemplate.registerFunction("abcd", new Function() {
@Override
public Boolean call(Object[] paras, Context ctx) {
return true;
}
});
groupTemplate.registerFunction("env", new Function() {
@Override
public String call(Object[] paras, Context ctx) {
String key = (String)paras[0];
String value = env.getProperty(key);
if(value!=null) {
return getStr(value);
}
if(paras.length==2) {
return (String)paras[1];
}
return null;
}
protected String getStr(String str) {
try {
return new String(str.getBytes("iso8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
});
groupTemplate.registerFunction("dataAccessList", new Function() {
@Override
public List<DataAccess> call(Object[] paras, Context ctx) {
return dataAccessFactory.all();
}
});
}
};
}
static class StarterDebugInterceptor extends DebugInterceptor {
protected boolean isSimple(String sqlId) {
if (sqlId.indexOf("_gen_") != -1) {
return true;
} else {
return false;
}
}
protected void simpleOut(InterceptorContext ctx) {
return;
}
}
}
package com.ibeetl.admin.core.conf;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
public class DataSourceConfig {
@Bean(name = "baseDataSource")
public DataSource datasource(Environment env) {
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl(env.getProperty("spring.datasource.baseDataSource.url"));
ds.setUsername(env.getProperty("spring.datasource.baseDataSource.username"));
ds.setPassword(env.getProperty("spring.datasource.baseDataSource.password"));
ds.setDriverClassName(env.getProperty("spring.datasource.baseDataSource.driver-class-name"));
return ds;
}
}
package com.ibeetl.admin.core.conf;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
public class DataSourceConfig {
@Bean(name = "baseDataSource")
public DataSource datasource(Environment env) {
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl(env.getProperty("spring.datasource.baseDataSource.url"));
ds.setUsername(env.getProperty("spring.datasource.baseDataSource.username"));
ds.setPassword(env.getProperty("spring.datasource.baseDataSource.password"));
ds.setDriverClassName(env.getProperty("spring.datasource.baseDataSource.driver-class-name"));
return ds;
}
}
package com.ibeetl.admin.core.conf;
import org.beetl.core.Context;
import org.beetl.core.Function;
import org.beetl.core.GroupTemplate;
import org.beetl.ext.spring.BeetlGroupUtilConfiguration;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.format.FormatterRegistry;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.validation.MessageCodesResolver;
import org.springframework.validation.Validator;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.admin.core.util.HttpRequestLocal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Configuration
public class MVCConf implements WebMvcConfigurer, InitializingBean {
public static final String DEFAULT_APP_NAME = "开发平台";
/**
* 系统名称,可以在application.properties中配置
* app.name=xxx
*/
// @Value("${app.name}")
// String appName;
// 开发用的模拟当前用户和机构
Long useId;
Long orgId;
String mvcTestPath;
@Autowired
Environment env;
@Autowired
CoreUserService userService;
@Autowired
BeetlGroupUtilConfiguration beetlGroupUtilConfiguration;
@Autowired
HttpRequestLocal httpRequestLocal;
@Autowired
GroupTemplate groupTemplate;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SessionInterceptor(httpRequestLocal, this)).addPathPatterns("/**");
// super.addInterceptors(registry);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss"));
registry.addFormatter(new DateFormatter("yyyy-MM-dd"));
}
@Override
public void afterPropertiesSet() throws Exception {
this.useId = env.getProperty("user.id", Long.class);
this.orgId = env.getProperty("user.orgId", Long.class);
this.mvcTestPath = env.getProperty("mvc.test.path");
Map<String, Object> var = new HashMap<>(5);
String appName = env.getProperty("app.name");
if(appName==null) {
var.put("appName",DEFAULT_APP_NAME);
}
var.put("jsVer", System.currentTimeMillis());
groupTemplate.setSharedVars(var);
}
}
class SessionInterceptor implements HandlerInterceptor {
MVCConf conf;
HttpRequestLocal httpRequestLocal;
public SessionInterceptor(HttpRequestLocal httpRequestLocal, MVCConf conf) {
this.conf = conf;
this.httpRequestLocal = httpRequestLocal;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
if (conf.useId != null && conf.orgId != null
&& request.getSession().getAttribute(CorePlatformService.ACCESS_CURRENT_USER) == null) {
// 模拟用户登录,用于快速开发,未来用rember么代替?
CoreUser user = conf.userService.getUserById(conf.useId);
CoreOrg org = conf.userService.getOrgById(conf.orgId);
List<CoreOrg> orgs = conf.userService.getUserOrg(conf.useId, org.getId());
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_USER, user);
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_ORG, org);
request.getSession().setAttribute(CorePlatformService.ACCESS_USER_ORGS, orgs);
request.getSession().setAttribute("ip", request.getRemoteHost());
}
httpRequestLocal.set(request);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// do nothing
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// do nothing
}
}
package com.ibeetl.admin.core.conf;
import org.beetl.core.Context;
import org.beetl.core.Function;
import org.beetl.core.GroupTemplate;
import org.beetl.ext.spring.BeetlGroupUtilConfiguration;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.format.FormatterRegistry;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.validation.MessageCodesResolver;
import org.springframework.validation.Validator;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.admin.core.util.HttpRequestLocal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Configuration
public class MVCConf implements WebMvcConfigurer, InitializingBean {
public static final String DEFAULT_APP_NAME = "开发平台";
/**
* 系统名称,可以在application.properties中配置
* app.name=xxx
*/
// @Value("${app.name}")
// String appName;
// 开发用的模拟当前用户和机构
Long useId;
Long orgId;
String mvcTestPath;
@Autowired
Environment env;
@Autowired
CoreUserService userService;
@Autowired
BeetlGroupUtilConfiguration beetlGroupUtilConfiguration;
@Autowired
HttpRequestLocal httpRequestLocal;
@Autowired
GroupTemplate groupTemplate;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SessionInterceptor(httpRequestLocal, this)).addPathPatterns("/**");
// super.addInterceptors(registry);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss"));
registry.addFormatter(new DateFormatter("yyyy-MM-dd"));
}
@Override
public void afterPropertiesSet() throws Exception {
this.useId = env.getProperty("user.id", Long.class);
this.orgId = env.getProperty("user.orgId", Long.class);
this.mvcTestPath = env.getProperty("mvc.test.path");
Map<String, Object> var = new HashMap<>(5);
String appName = env.getProperty("app.name");
if(appName==null) {
var.put("appName",DEFAULT_APP_NAME);
}
var.put("jsVer", System.currentTimeMillis());
groupTemplate.setSharedVars(var);
}
}
class SessionInterceptor implements HandlerInterceptor {
MVCConf conf;
HttpRequestLocal httpRequestLocal;
public SessionInterceptor(HttpRequestLocal httpRequestLocal, MVCConf conf) {
this.conf = conf;
this.httpRequestLocal = httpRequestLocal;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
if (conf.useId != null && conf.orgId != null
&& request.getSession().getAttribute(CorePlatformService.ACCESS_CURRENT_USER) == null) {
// 模拟用户登录,用于快速开发,未来用rember么代替?
CoreUser user = conf.userService.getUserById(conf.useId);
CoreOrg org = conf.userService.getOrgById(conf.orgId);
List<CoreOrg> orgs = conf.userService.getUserOrg(conf.useId, org.getId());
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_USER, user);
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_ORG, org);
request.getSession().setAttribute(CorePlatformService.ACCESS_USER_ORGS, orgs);
request.getSession().setAttribute("ip", request.getRemoteHost());
}
httpRequestLocal.set(request);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// do nothing
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// do nothing
}
}
package com.ibeetl.admin.core.conf;
import java.lang.reflect.Method;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ibeetl.admin.core.annotation.Function;
import com.ibeetl.admin.core.entity.CoreAudit;
import com.ibeetl.admin.core.entity.CoreFunction;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.service.CoreAuditService;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.util.FunctionLocal;
import com.ibeetl.admin.core.util.HttpRequestLocal;
import com.ibeetl.admin.core.util.PlatformException;
@Aspect
@Component
public class RbacAnnotationConfig {
@Autowired
CorePlatformService platformService;
@Autowired
CoreAuditService sysAuditService;
@Autowired
HttpRequestLocal httpRequestLocal;
@Autowired
Environment env;
ObjectMapper jsonMapper = new ObjectMapper();
private final Log log = LogFactory.getLog(this.getClass());
@org.aspectj.lang.annotation.Around("within(@org.springframework.stereotype.Controller *) && @annotation(function)")
public Object functionAccessCheck(final ProceedingJoinPoint pjp, Function function) throws Throwable {
// debug
String funCode = null;
CoreUser user = null;
Method m = null;
try {
if (function != null) {
funCode = function.value();
user = platformService.getCurrentUser();
Long orgId = platformService.getCurrentOrgId();
boolean access = platformService.canAcessFunction(user.getId(), orgId, funCode);
if (!access) {
log.warn(jsonMapper.writeValueAsString(user) + "试图访问未授权功能 " + funCode);
throw new PlatformException("试图访问未授权功能");
}
FunctionLocal.set(funCode);
}
Object o = pjp.proceed();
if (function != null) {
MethodSignature ms = (MethodSignature)pjp.getSignature();
m = ms.getMethod();
createAudit(funCode,function.name(), user, true, "",m);
}
return o;
} catch (Throwable e) {
if (function != null) {
createAudit(funCode, function.name(),user, false, e.getMessage(),m);
}
throw e;
}
}
private void createAudit(String functionCode, String functionName,CoreUser user, boolean success, String msg, Method m) {
boolean enable = env.getProperty("audit.enable", Boolean.class, false);
if (!enable) {
return;
}
if(filter(m,functionCode)){
return ;
}
CoreAudit audit = new CoreAudit();
if(StringUtils.isEmpty(functionName)) {
CoreFunction fun = this.platformService.getFunction(functionCode);
if (fun == null) {
// 没有在数据库定义,但写在代码里了
log.warn(functionCode + " 未在数据库里定义");
functionName = "未定义";
} else {
functionName = fun.getName();
}
}
audit.setCreateTime(new Date());
audit.setFunctionCode(functionCode);
audit.setFunctionName(functionName);
audit.setUserId(user.getId());
audit.setSuccess(success ? 1 : 0);
audit.setUserName(user.getName());
audit.setMessage(msg);
audit.setIp(httpRequestLocal.getRequestIP());
sysAuditService.save(audit);
}
private boolean filter(Method m,String functionCode){
if(functionCode.startsWith("audit.")){
return true;
}
String uri = httpRequestLocal.getRequestURI();
if(uri!=null&&uri.endsWith("/index/condition.json")){
return true ;
}else{
return false;
}
}
}
package com.ibeetl.admin.core.conf;
import java.lang.reflect.Method;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ibeetl.admin.core.annotation.Function;
import com.ibeetl.admin.core.entity.CoreAudit;
import com.ibeetl.admin.core.entity.CoreFunction;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.service.CoreAuditService;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.util.FunctionLocal;
import com.ibeetl.admin.core.util.HttpRequestLocal;
import com.ibeetl.admin.core.util.PlatformException;
@Aspect
@Component
public class RbacAnnotationConfig {
@Autowired
CorePlatformService platformService;
@Autowired
CoreAuditService sysAuditService;
@Autowired
HttpRequestLocal httpRequestLocal;
@Autowired
Environment env;
ObjectMapper jsonMapper = new ObjectMapper();
private final Log log = LogFactory.getLog(this.getClass());
@org.aspectj.lang.annotation.Around("within(@org.springframework.stereotype.Controller *) && @annotation(function)")
public Object functionAccessCheck(final ProceedingJoinPoint pjp, Function function) throws Throwable {
// debug
String funCode = null;
CoreUser user = null;
Method m = null;
try {
if (function != null) {
funCode = function.value();
user = platformService.getCurrentUser();
Long orgId = platformService.getCurrentOrgId();
boolean access = platformService.canAcessFunction(user.getId(), orgId, funCode);
if (!access) {
log.warn(jsonMapper.writeValueAsString(user) + "试图访问未授权功能 " + funCode);
throw new PlatformException("试图访问未授权功能");
}
FunctionLocal.set(funCode);
}
Object o = pjp.proceed();
if (function != null) {
MethodSignature ms = (MethodSignature)pjp.getSignature();
m = ms.getMethod();
createAudit(funCode,function.name(), user, true, "",m);
}
return o;
} catch (Throwable e) {
if (function != null) {
createAudit(funCode, function.name(),user, false, e.getMessage(),m);
}
throw e;
}
}
private void createAudit(String functionCode, String functionName,CoreUser user, boolean success, String msg, Method m) {
boolean enable = env.getProperty("audit.enable", Boolean.class, false);
if (!enable) {
return;
}
if(filter(m,functionCode)){
return ;
}
CoreAudit audit = new CoreAudit();
if(StringUtils.isEmpty(functionName)) {
CoreFunction fun = this.platformService.getFunction(functionCode);
if (fun == null) {
// 没有在数据库定义,但写在代码里了
log.warn(functionCode + " 未在数据库里定义");
functionName = "未定义";
} else {
functionName = fun.getName();
}
}
audit.setCreateTime(new Date());
audit.setFunctionCode(functionCode);
audit.setFunctionName(functionName);
audit.setUserId(user.getId());
audit.setSuccess(success ? 1 : 0);
audit.setUserName(user.getName());
audit.setMessage(msg);
audit.setIp(httpRequestLocal.getRequestIP());
sysAuditService.save(audit);
}
private boolean filter(Method m,String functionCode){
if(functionCode.startsWith("audit.")){
return true;
}
String uri = httpRequestLocal.getRequestURI();
if(uri!=null&&uri.endsWith("/index/condition.json")){
return true ;
}else{
return false;
}
}
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.Sql;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreFunction;
@SqlResource("core.coreFunction")
public interface CoreFunctionDao extends BaseMapper<CoreFunction> {
@Sql("select * from core_function where code = ?")
CoreFunction getFunctionByCode(@Param(value = "code") String code);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.Sql;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreFunction;
@SqlResource("core.coreFunction")
public interface CoreFunctionDao extends BaseMapper<CoreFunction> {
@Sql("select * from core_function where code = ?")
CoreFunction getFunctionByCode(@Param(value = "code") String code);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreMenu;
import java.util.List;
@SqlResource("core.coreMenu")
public interface CoreMenuDao extends BaseMapper<CoreMenu> {
public void queryByCondtion(PageQuery query);
public void clearMenuFunction( List<Long> functionIds);
public List<CoreMenu> allMenuWithURL();
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreMenu;
import java.util.List;
@SqlResource("core.coreMenu")
public interface CoreMenuDao extends BaseMapper<CoreMenu> {
public void queryByCondtion(PageQuery query);
public void clearMenuFunction( List<Long> functionIds);
public List<CoreMenu> allMenuWithURL();
}
package com.ibeetl.admin.core.dao;
import java.util.List;
import org.beetl.sql.core.annotatoin.Sql;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreOrg;
@SqlResource("core.coreOrg")
public interface CoreOrgDao extends BaseMapper<CoreOrg> {
List<CoreOrg> queryOrgByUser(Long userId);
List<String> queryAllOrgCode(List<Long> orgIds);
@Sql("select * from core_org where parent_org_id is null")
CoreOrg getRoot();
}
package com.ibeetl.admin.core.dao;
import java.util.List;
import org.beetl.sql.core.annotatoin.Sql;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreOrg;
@SqlResource("core.coreOrg")
public interface CoreOrgDao extends BaseMapper<CoreOrg> {
List<CoreOrg> queryOrgByUser(Long userId);
List<String> queryAllOrgCode(List<Long> orgIds);
@Sql("select * from core_org where parent_org_id is null")
CoreOrg getRoot();
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreRole;
import java.util.List;
@SqlResource("core.coreRole")
public interface CoreRoleDao extends BaseMapper<CoreRole> {
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreRole;
import java.util.List;
@SqlResource("core.coreRole")
public interface CoreRoleDao extends BaseMapper<CoreRole> {
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreRoleFunction;
import java.util.List;
@SqlResource("core.coreRoleFunction")
public interface CoreRoleFunctionDao extends BaseMapper<CoreRoleFunction> {
List<CoreRoleFunction> getRoleFunction( Long userId, Long orgId,
String code);
List<String> getRoleChildrenFunction(Long userId, Long orgId,
Long parentId);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreRoleFunction;
import java.util.List;
@SqlResource("core.coreRoleFunction")
public interface CoreRoleFunctionDao extends BaseMapper<CoreRoleFunction> {
List<CoreRoleFunction> getRoleFunction( Long userId, Long orgId,
String code);
List<String> getRoleChildrenFunction(Long userId, Long orgId,
Long parentId);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreRoleMenu;
import java.util.List;
@SqlResource("core.coreRoleMenu")
public interface CoreRoleMenuDao extends BaseMapper<CoreRoleMenu> {
/**
* 根据用户ID,机构ID查询菜单
* @param userId 用户id
* @param orgId 机构id
* @return
*/
List<Long> queryMenuByUser( Long userId, Long orgId);
/**
* 根据菜单id删除角色和菜单关系
* @param ids
*/
void deleteRoleMenu(List<Long> ids);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreRoleMenu;
import java.util.List;
@SqlResource("core.coreRoleMenu")
public interface CoreRoleMenuDao extends BaseMapper<CoreRoleMenu> {
/**
* 根据用户ID,机构ID查询菜单
* @param userId 用户id
* @param orgId 机构id
* @return
*/
List<Long> queryMenuByUser( Long userId, Long orgId);
/**
* 根据菜单id删除角色和菜单关系
* @param ids
*/
void deleteRoleMenu(List<Long> ids);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreUser;
import java.util.List;
@SqlResource("core.coreUser")
public interface CoreUserDao extends BaseMapper<CoreUser> {
/**
* 根据角色编码查询用户集合
* @param roleCode 角色编码
* @return
*/
List<CoreUser> getUserByRole( String roleCode);
}
package com.ibeetl.admin.core.dao;
import org.beetl.sql.core.annotatoin.Param;
import org.beetl.sql.core.annotatoin.SqlResource;
import org.beetl.sql.core.mapper.BaseMapper;
import com.ibeetl.admin.core.entity.CoreUser;
import java.util.List;
@SqlResource("core.coreUser")
public interface CoreUserDao extends BaseMapper<CoreUser> {
/**
* 根据角色编码查询用户集合
* @param roleCode 角色编码
* @return
*/
List<CoreUser> getUserByRole( String roleCode);
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment