diff --git a/udf-api/pom.xml b/udf-api/pom.xml index 3f0b106..a82645e 100644 --- a/udf-api/pom.xml +++ b/udf-api/pom.xml @@ -27,6 +27,7 @@ udf-api-server udf-api-common udf-api-general + udf-api-rbac @@ -39,6 +40,12 @@ pom import + + + org.itkk.udf + udf-api-rbac + ${udf-api.version} + org.itkk.udf diff --git a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/CommonConstant.java b/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/CommonConstant.java index f17408a..8faa2f0 100644 --- a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/CommonConstant.java +++ b/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/CommonConstant.java @@ -13,12 +13,12 @@ public class CommonConstant { /** * 需认证的web根路径 */ - public static final String URL_ROOT_WEB_PRIVATE = URL_ROOT_WEB + "/private"; + public static final String URL_ROOT_WEB_PRIVATE = URL_ROOT_WEB + "/private/"; /** * 无需认证的web根路径 */ - public static final String URL_ROOT_WEB_PUBLIC = URL_ROOT_WEB + "/public"; + public static final String URL_ROOT_WEB_PUBLIC = URL_ROOT_WEB + "/public/"; /** * 默认时间格式 @@ -65,6 +65,33 @@ public class CommonConstant { */ public static final String SEND_EMAIL_QUEUE_HANDLE = "SEND_EMAIL_QUEUE_HANDLE"; + /** + * 数据状态(正常,删除) + */ + public enum DATA_STATUS { + + /** + * 删除 + */ + STATUS_F1(-1), + + /** + * 正常 + */ + STATUS_1(1); + + private Integer value; + + DATA_STATUS(Integer value) { + this.value = value; + } + + public Integer value() { + return this.value; + } + + } + /** * 私有化构造函数 */ diff --git a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/repository/IDataHisRepository.java b/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/repository/IDataHisRepository.java deleted file mode 100644 index d08202d..0000000 --- a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/repository/IDataHisRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.itkk.udf.api.common.repository; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; -import org.itkk.udf.api.common.entity.DataHisEntity; - -@Mapper -public interface IDataHisRepository extends BaseMapper { -} diff --git a/udf-api/udf-api-rbac/pom.xml b/udf-api/udf-api-rbac/pom.xml new file mode 100644 index 0000000..03092e9 --- /dev/null +++ b/udf-api/udf-api-rbac/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + udf-api-rbac + udf-api-rbac + jar + https://www.itkk.org/ + + + org.itkk.udf + udf-api + 1.0 + + + + + + org.itkk.udf + udf-api-common + + + diff --git a/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/RbacConfiguration.java b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/RbacConfiguration.java new file mode 100644 index 0000000..38f4d44 --- /dev/null +++ b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/RbacConfiguration.java @@ -0,0 +1,31 @@ +package org.itkk.udf.api.rbac; + +import org.itkk.udf.api.common.CommonConstant; +import org.itkk.udf.api.rbac.auth.WebHandlerInterceptor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * 配置类 + */ +@Configuration +public class RbacConfiguration implements WebMvcConfigurer { + /** + * webHandlerInterceptor + */ + @Autowired + private WebHandlerInterceptor webHandlerInterceptor; + + /** + * 添加拦截器 + * + * @param registry registry + */ + @Override + public void addInterceptors(InterceptorRegistry registry) { + //身份认证拦截器 + registry.addInterceptor(webHandlerInterceptor).order(1).addPathPatterns(CommonConstant.URL_ROOT_WEB_PRIVATE + "**"); + } +} diff --git a/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/auth/WebHandlerInterceptor.java b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/auth/WebHandlerInterceptor.java new file mode 100644 index 0000000..1c2923d --- /dev/null +++ b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/auth/WebHandlerInterceptor.java @@ -0,0 +1,49 @@ +package org.itkk.udf.api.rbac.auth; + + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.itkk.udf.api.common.CommonConstant; +import org.itkk.udf.api.common.CommonProperties; +import org.itkk.udf.starter.cache.db.service.DbCacheService; +import org.itkk.udf.starter.core.CoreUtil; +import org.itkk.udf.starter.core.exception.AuthException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Component +@Slf4j +public class WebHandlerInterceptor implements HandlerInterceptor { + /** + * dbCacheService + */ + @Autowired + private DbCacheService dbCacheService; + + /** + * commonPropertiesl + */ + @Autowired + private CommonProperties commonProperties; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + //排除options + if (!HttpMethod.OPTIONS.toString().equals(request.getMethod())) { + //获得token + final String token = CoreUtil.getParameter(request, CommonConstant.PARAMETER_NAME_TOKEN); + //判空 + if (StringUtils.isBlank(token)) { + throw new AuthException("缺少必要参数token"); + } + } + //正常返回 + return true; + } + +} diff --git a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/entity/DataHisEntity.java b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/entity/UserEntity.java similarity index 50% rename from udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/entity/DataHisEntity.java rename to udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/entity/UserEntity.java index e96535d..104086c 100644 --- a/udf-api/udf-api-common/src/main/java/org/itkk/udf/api/common/entity/DataHisEntity.java +++ b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/entity/UserEntity.java @@ -1,4 +1,4 @@ -package org.itkk.udf.api.common.entity; +package org.itkk.udf.api.rbac.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -14,41 +14,59 @@ import java.util.Date; @Accessors(chain = true) @ToString @EqualsAndHashCode(callSuper = false) -@TableName("TF_DATA_HIS") -public class DataHisEntity { +@TableName("TM_RBAC_USER") +public class UserEntity { /** - * 主键 + * 主键(PK)(非空) */ @TableId("ID") private String id; + /** - * 追踪ID + * 用户ID(UK_1)(非空) */ - @TableField("TRACE_ID") - private String traceId; + @TableField("USER_ID") + private String userId; + /** - * 表名 + * 用户密码(MD5加密)(非空) */ - @TableField("TABLE_NAME") - private String TABLE_NAME; + @TableField("USER_PSWD") + private String userPswd; + /** - * 表主键 + * 用户昵称(非空) */ - @TableField("TABLE_PK") - private String TABLE_PK; + @TableField("NICK_NAME") + private String nickName; + /** - * 表内容 + * 用户头像文件ID(非空) */ - @TableField("CONTENT") - private String content; - /** - * 创建时间 - */ - @TableField("CREATE_DATE") - private Date createDate; + @TableField("AVATAR_FILE_ID") + private String avatarFileId; + /** * 创建人 */ @TableField("CREATE_BY") private String createBy; + + /** + * 创建时间 + */ + @TableField("CREATE_DATE") + private Date createDate; + + /** + * 更新人 + */ + @TableField("UPDATE_BY") + private String updateBy; + + /** + * 更新时间 + */ + @TableField("UPDATE_DATE") + private Date updateDate; } diff --git a/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/repository/IUserRepository.java b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/repository/IUserRepository.java new file mode 100644 index 0000000..a65ff2d --- /dev/null +++ b/udf-api/udf-api-rbac/src/main/java/org/itkk/udf/api/rbac/repository/IUserRepository.java @@ -0,0 +1,9 @@ +package org.itkk.udf.api.rbac.repository; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.itkk.udf.api.rbac.entity.UserEntity; + +@Mapper +public interface IUserRepository extends BaseMapper { +} diff --git a/udf-api/udf-api-rbac/src/main/resources/mapper/IUserRepository.xml b/udf-api/udf-api-rbac/src/main/resources/mapper/IUserRepository.xml new file mode 100644 index 0000000..9486c8c --- /dev/null +++ b/udf-api/udf-api-rbac/src/main/resources/mapper/IUserRepository.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/udf-api/udf-api-rbac/src/main/resources/mapper/readme.md b/udf-api/udf-api-rbac/src/main/resources/mapper/readme.md new file mode 100644 index 0000000..e69de29 diff --git a/udf-api/udf-api-server/pom.xml b/udf-api/udf-api-server/pom.xml index ecee39b..777c8ee 100644 --- a/udf-api/udf-api-server/pom.xml +++ b/udf-api/udf-api-server/pom.xml @@ -25,6 +25,11 @@ org.itkk.udf udf-api-general + + + org.itkk.udf + udf-api-rbac + diff --git a/udf-starter/udf-starter-core/src/main/java/org/itkk/udf/starter/core/CoreUtil.java b/udf-starter/udf-starter-core/src/main/java/org/itkk/udf/starter/core/CoreUtil.java index 38cf903..2f3f9a5 100644 --- a/udf-starter/udf-starter-core/src/main/java/org/itkk/udf/starter/core/CoreUtil.java +++ b/udf-starter/udf-starter-core/src/main/java/org/itkk/udf/starter/core/CoreUtil.java @@ -2,13 +2,13 @@ package org.itkk.udf.starter.core; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.itkk.udf.starter.core.exception.AuthException; -import org.itkk.udf.starter.core.exception.ParameterValidException; -import org.itkk.udf.starter.core.exception.SystemRuntimeException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; +import org.itkk.udf.starter.core.exception.AuthException; +import org.itkk.udf.starter.core.exception.ParameterValidException; +import org.itkk.udf.starter.core.exception.SystemRuntimeException; import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; @@ -430,6 +430,29 @@ public class CoreUtil { return null; } + /** + * 获得参数(先从问号后面取,如果为空,再从header里取,如果为空,从作用域中取,如果都为空,则返回null) + * + * @param request request + * @param parameterName parameterName + * @return String + */ + public static String getParameter(HttpServletRequest request, String parameterName) { + //获得token + String token = request.getParameter(parameterName); + if (StringUtils.isBlank(token)) { + token = request.getHeader(parameterName); + if (StringUtils.isBlank(token)) { + Object tokenObj = request.getAttribute(parameterName); + if (tokenObj != null) { + token = tokenObj.toString(); + } + } + } + //返回 + return token; + } + /** * 私有化构造函数