diff --git "a/README.assets/\350\277\267\345\275\251-\347\231\273\345\275\225\346\216\210\346\235\203\346\265\201\347\250\213.png" "b/README.assets/\350\277\267\345\275\251-\347\231\273\345\275\225\346\216\210\346\235\203\346\265\201\347\250\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..ee5a35c055c9cf5ab765bfae7e4c3af0d52c900f Binary files /dev/null and "b/README.assets/\350\277\267\345\275\251-\347\231\273\345\275\225\346\216\210\346\235\203\346\265\201\347\250\213.png" differ diff --git a/README.md b/README.md index a1995d2818a773c5da23d51259293a67dc4b7f22..b176e4ad8a94b6391cff6832c5c0ba7348100663 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,351 @@ -### **一:后端技术选型**: -1、Spring Boot 2.6.0
-2、Spring Security 5.6.0
-4、MyBatis 3.5.5
-5、MyBatis-Plus 3.4.3.4
-6、MySQL 5.1.30
+# 迷彩:micai-platform-auth -### **二:接口访问地址**: -http://localhost:8080/doc.html -### **三:测试用户** -最高权限用户 用户名:root 密码:root
-一般用户(没配置菜单) 用户名:user 密码:user -### **四:参考资料** -mblog:https://github.com/langhsu/mblog
+# 一.简介 +该项目是基于springboot、springsecurity、Spring security oauth以及jwt 搭建而成,实现RBAC权限模型。 +## **一.后端技术选型**: +- Spring Boot 2.6.0 +- Spring Security 2.6.6 +- Spring security oauth 2 2.2.6.RELEASE +- jjwt 0.7.0 +- MyBatis 3.5.5 +- MyBatis-Plus 3.4.3.4 +- MySQL 5.1.30 +- ...... + + + +## 二.后端项目结构: + +```java +micai + //认证服务 +|-- platform-auth-server +| |-- platform-auth-server.iml +| |-- pom.xml +| `-- src +| `-- main +| |-- java +| | `-- org +| | `-- micai +| | `-- platform +| | `-- authserver +| | |-- AuthServerApplication.java +| | |-- bo //入参对象 +| | | `-- UserQueryBo.java +| | |-- config //相关配置 +| | | |-- AuthorizationServerConfiguration.java +| | | |-- JwtTokenEnhancer.java +| | | |-- PasswordEncoder.java +| | | |-- TokenConfig.java +| | | `-- WebSecurityConfig.java +| | |-- entity //相关实体类 +| | | |-- Permission.java +| | | |-- Role.java +| | | |-- RolePermission.java +| | | |-- User.java +| | | `-- UserRole.java +| | |-- filter //相关过滤器 +| | | |-- JWTAuthenticationFilter.java +| | | `-- JWTLoginFilter.java +| | |-- handler //相关处理器 +| | | |-- CustomAuthenticationFailureHandler.java +| | | |-- Http401AuthenticationEntryPoint.java +| | | `-- MyMetaObjectHandler.java +| | |-- interceptor //相关拦截器 +| | | `-- PlusInterceptor.java +| | |-- mapper //mapper文件 +| | | |-- PermissionMapper.java +| | | |-- RoleMapper.java +| | | |-- RolePermissionMapper.java +| | | |-- UserMapper.java +| | | `-- UserRoleMapper.java +| | |-- provider //security相关提供器 +| | | `-- CustomAuthenticationProvider.java +| | `-- service //相关service类 +| | |-- PermissionService.java +| | |-- RolePermissionService.java +| | |-- RoleService.java +| | |-- UserRoleService.java +| | |-- UserService.java +| | `-- impl +| | |-- GrantedAuthorityImpl.java +| | |-- PermissionServiceImpl.java +| | |-- RolePermissionServiceImpl.java +| | |-- RoleServiceImpl.java +| | |-- UserDetailsServiceImpl.java +| | |-- UserRoleServiceImpl.java +| | `-- UserServiceImpl.java +| `-- resources +| |-- application-dev.yml +| |-- application-pro.yml +| `-- application.yml + //公共服务 +|-- platform-common +| |-- platform-common.iml +| |-- pom.xml +| `-- src +| `-- main +| |-- java +| | `-- org +| | `-- micai +| | `-- platform +| | `-- common +| | `-- base //公共包 +| | |-- WebStarterAutoConfig.java +| | |-- config //公共配置 +| | | |-- MicaiPlatformOauthConfig.java +| | | |-- MicaiPlatformRequestMatcher.java +| | | |-- MicaiPlatformResourcesConfig.java +| | | `-- MicaiPlatformTokenConfig.java +| | |-- constant //常量和常枚举 +| | | |-- ConstantCode.java +| | | `-- ConstantEnum.java +| | |-- controller //异常处理controller +| | | `-- ExceptionController.java +| | |-- exception //异常处理和自定义异常 +| | | |-- GlobalExceptionHandler.java +| | | |-- MyAuthException.java +| | | `-- PlatformException.java +| | |-- result //自定义返回对象 +| | | |-- Result.java +| | | `-- UploadResult.java +| | `-- sms //短信相关功能 +| | |-- Sms.java +| | `-- impl +| | |-- AbstractSms.java +| | `-- QiniuSmsImpl.java +| `-- resources +| `-- META-INF +| `-- spring.factories + //资源服务 +|-- platform-resources-server +| |-- platform-resources-server.iml +| |-- pom.xml +| `-- src +| `-- main +| |-- java +| | `-- org +| | `-- micai +| | `-- platform +| | `-- resourcesserver +| | |-- ResourcesServerApplication.java +| | |-- bo //入参对象 +| | | |-- MenuDelBo.java +| | | |-- MenuSaveBo.java +| | | |-- MenuUpdateBo.java +| | | |-- OrganDelBo.java +| | | |-- OrganFindBo.java +| | | |-- OrganSaveBo.java +| | | |-- OrganUpdateBo.java +| | | |-- PermissionDelBo.java +| | | |-- PermissionFindBo.java +| | | |-- PermissionMenuDelBo.java +| | | |-- PermissionMenuSaveBo.java +| | | |-- PermissionMenuUpdateBo.java +| | | |-- PermissionSaveBo.java +| | | |-- PermissionUpdateBo.java +| | | |-- RoleDelBo.java +| | | |-- RoleFindBo.java +| | | |-- RolePermissionDelBo.java +| | | |-- RolePermissionSaveBo.java +| | | |-- RolePermissionUpdateBo.java +| | | |-- RoleSaveBo.java +| | | |-- RoleUpdateBo.java +| | | |-- UserDelBo.java +| | | |-- UserFindBo.java +| | | |-- UserQueryBo.java +| | | |-- UserRoleDelBo.java +| | | |-- UserRoleSaveBo.java +| | | |-- UserRoleUpdateBo.java +| | | |-- UserSaveBo.java +| | | `-- UserUpdateBo.java +| | |-- config //相关配置类 +| | | |-- CodeGenerator.java +| | | |-- PasswordEncoder.java +| | | |-- ResourceServerConfig.java +| | | |-- SiteOptions.java +| | | |-- SwaggerConfig.java +| | | |-- TokenConfig.java +| | | `-- WebSecurityConfig.java +| | |-- controller //表现层 +| | | |-- BaseController.java +| | | |-- PermissionController.java +| | | |-- RoleController.java +| | | |-- RolePermissionController.java +| | | |-- UploadController.java +| | | |-- UserController.java +| | | `-- UserRoleController.java +| | |-- dto +| | | `-- UserAuthenticationDto.java +| | |-- entity +| | | |-- Permission.java +| | | |-- Role.java +| | | |-- RolePermission.java +| | | |-- User.java +| | | `-- UserRole.java +| | |-- filter //相关自定义过滤器 +| | | |-- AuthHeaderFilter.java +| | | `-- JWTAuthenticationFilter.java +| | |-- handler //相关自定义处理器 +| | | |-- Http401AuthenticationEntryPoint.java +| | | `-- MyMetaObjectHandler.java +| | |-- interceptor //相关拦截器 +| | | `-- PlusInterceptor.java +| | |-- mapper +| | | |-- PermissionMapper.java +| | | |-- RoleMapper.java +| | | |-- RolePermissionMapper.java +| | | |-- UserMapper.java +| | | `-- UserRoleMapper.java +| | |-- provider //自定义security的提供器 +| | | `-- CustomAuthenticationProvider.java +| | |-- service //相关的service +| | | |-- PermissionService.java +| | | |-- RolePermissionService.java +| | | |-- RoleService.java +| | | |-- UserRoleService.java +| | | |-- UserService.java +| | | `-- impl +| | | |-- GrantedAuthorityImpl.java +| | | |-- PermissionServiceImpl.java +| | | |-- RolePermissionServiceImpl.java +| | | |-- RoleServiceImpl.java +| | | |-- UserDetailsServiceImpl.java +| | | |-- UserRoleServiceImpl.java +| | | `-- UserServiceImpl.java +| | |-- storage +| | | |-- Storage.java +| | | |-- StorageFactory.java +| | | `-- impl +| | | |-- AbstractStorage.java +| | | |-- MinioStorageImpl.java +| | | |-- NativeStorageImpl.java +| | | |-- OssStorageImpl.java +| | | |-- QiniuStorageImpl.java +| | | `-- UpYunStorageImpl.java +| | |-- utils //相关工具类 +| | | |-- ApplicationUtil.java +| | | |-- AuthenticationManger.java +| | | |-- FileKit.java +| | | |-- FilePathUtils.java +| | | |-- ImageUtils.java +| | | |-- JwtHelper.java +| | | |-- MD5.java +| | | |-- PdfMergeUtils.java +| | | |-- WatermarkOffice.java +| | | |-- WatermarkPdf.java +| | | `-- WatermarkUtils.java +| | `-- vo //返回前端对象 +| | |-- OrganListVo.java +| | |-- PermissionListVo.java +| | |-- RoleListVo.java +| | `-- UserListVo.java +| `-- resources +| |-- application-dev.yml +| |-- application-pro.yml +| |-- application.yml +| `-- logback-spring.xml +`-- pom.xml + +``` + + + + + +## 三.项目流程图: + +![迷彩-登录授权流程](README.assets/迷彩-登录授权流程.png) + +### 本系统登录流程: + +1. 调用登录接口http://localhost:8080/login 返回token令牌 + +```java +curl --location --request POST 'http://localhost:8080/login' \ +--header 'Content-Type: application/json' \ +--data-raw '{"username":"root","password":"root"}' +``` + +​ 2.携带返回的token信息,访问需要获取资源接口 + + + +### 第三方应用流程: + +1. 调用登录接口http://localhost:8080/login 返回token令牌 + +```java +curl --location --request POST 'http://localhost:8080/login' \ +--header 'Content-Type: application/json' \ +--data-raw '{"username":"root","password":"root"}' +``` + +​ 2.携带返回的token信息,访问oauth2授权接口,使用授权码模式http://localhost:8080/oauth/authorize?response_type=code&client_id=pc,重定向到设定的**web_server_redirect_uri**地址并且地址拼接了授权码信息 + +```java +curl --location --request GET 'http://localhost:8080/oauth/authorize?response_type=code&client_id=pc' \ +--header 'Authorization: Bear xxxxxx' +``` + + 3.根据获取的授权码信息,调用获取access_token信息http://localhost:8080/oauth/token?grant_type=authorization_code&client_id=pc&client_secret=admin&code=fQxVEU + +```java +curl --location --request POST 'http://localhost:8080/oauth/token?grant_type=authorization_code&client_id=pc&client_secret=admin&code=fQxVEU' +``` + +返回的信息,如下: + +```java +{ + "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb20iOiJsaXVjb25nIiwid2l0aCI6Im1pY2FpIiwiYXVkIjpbInJlc291cmNlcy1zZXJ2ZXIiXSwidXNlcl9uYW1lIjoiMS1yb290LVt", +"token_type": "bearer", +"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb20iOiJsaXVjb25nIiwid2l0aCI6Im1pY2FpIiwiYXVkIjpbInJlc291cmNlcy1zZXJ2ZXIiXSwidXNlcl9uYW1lIjoiMS1yb290LVtcIlJPTEVfcm9vdFwiLFwi", + "expires_in": 43199, + "scope": "pc", + "author": "liucong", + "jti": "cfc312f6-c38f-4670-9140-9985372cb7c9" +} +``` + +access_token:返回的token令牌,可以访问对应资源服务; + +token_type:token类型,token前缀 + +expires_in:过期时间 + +scope:作用范围 + +author:通过实现TokenEnhancer,添加自定义信息 + +jti:jwt唯一标识 + + + +4.携带access_token信息,访问需要获取资源接口 + + + +## 四.swagger地址: + +- platform-auth-server:http://localhost:8080/doc.html +- platform-resources-server:http://localhost:8081/doc.html + + + +## 五.为什么使用jwt令牌方式 + +当认证服务器和资源服务器不是在同一工程时, 要使用 ResourceServerTokenServices 去远程请求认证服务器来校验 +令牌的合法性,如果用户访问量较大时将会影响系统的性能。 + +此时,采用 JWT 格式就可以解决上面的问题。 +因为当用户认证后获取到一个JWT令牌,而这个 JWT 令牌包含了用户基本信息,客户端只需要携带JWT访问资源服 +务器,资源服务器会通过事先约定好的算法进行解析出来,然后直接对 JWT 令牌校验,不需要每次远程请求认证服 +务器完成授权。 diff --git a/doc/sql/micai_platform.sql b/doc/sql/micai_platform.sql index 215744192cd6db5d1ff694643163483c6f997f66..d0cd668cf14b6b6c017b7413e623784b6366a0bf 100644 --- a/doc/sql/micai_platform.sql +++ b/doc/sql/micai_platform.sql @@ -11,35 +11,44 @@ Target Server Version : 50736 File Encoding : 65001 - Date: 14/01/2022 10:44:34 + Date: 26/12/2022 15:51:51 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- --- Table structure for tb_organ_info +-- Table structure for oauth_client_details -- ---------------------------- -DROP TABLE IF EXISTS `tb_organ_info`; -CREATE TABLE `tb_organ_info` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', - `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '机构编码', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '机构名称', - `type` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '机构类型', - `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父类id', - `sn` int(10) NULL DEFAULT NULL COMMENT '排序', - `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改人', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', - `status` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态 默认01 启用', - `version` bigint(20) NULL DEFAULT 0 COMMENT '版本号', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; +DROP TABLE IF EXISTS `oauth_client_details`; +CREATE TABLE `oauth_client_details` ( + `client_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `resource_ids` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `client_secret` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `scope` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `authorized_grant_types` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `web_server_redirect_uri` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `authorities` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `access_token_validity` int(11) NULL DEFAULT NULL, + `refresh_token_validity` int(11) NULL DEFAULT NULL, + `additional_information` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `autoapprove` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`client_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of tb_organ_info +-- Records of oauth_client_details -- ---------------------------- +INSERT INTO `oauth_client_details` VALUES ('pc', 'resources-server', '$2a$10$XyKNPWArxeVGjOKFF.pF7ONmv9NMAN5Bkkiwy8MutFTUKXhHFv.zC', 'pc', 'authorization_code,password,refresh_token', 'http://www.baidu.com/', 'info,sys:user:list', NULL, NULL, NULL, 'true'); + +-- ---------------------------- +-- Table structure for oauth_code +-- ---------------------------- +DROP TABLE IF EXISTS `oauth_code`; +CREATE TABLE `oauth_code` ( + `code` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `authentication` blob NULL +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Table structure for tb_organ_user @@ -83,7 +92,7 @@ CREATE TABLE `tb_permission` ( -- Records of tb_permission -- ---------------------------- INSERT INTO `tb_permission` VALUES (1, 'sys:permission:save', '新增权限', '新增权限', '01', 1, '2022-01-13 12:58:32', 1, '2022-01-13 12:58:32', 0); -INSERT INTO `tb_permission` VALUES (2, 'sys:user:List', '获取用户列表', '获取用户列表', '01', 1, '2022-01-13 13:41:09', 1, '2022-01-13 13:41:09', 0); +INSERT INTO `tb_permission` VALUES (2, 'sys:user:list', '获取用户列表', '获取用户列表', '01', 1, '2022-01-13 13:41:09', 1, '2022-01-13 13:41:09', 0); INSERT INTO `tb_permission` VALUES (3, 'sys:user:update', '更新用户', '更新用户', '01', 1, '2022-01-13 13:43:59', 1, '2022-01-13 13:43:59', 0); INSERT INTO `tb_permission` VALUES (4, 'sys:user:save', '新增用户', '新增用户', '01', 1, '2022-01-13 13:44:28', 1, '2022-01-13 13:44:28', 0); INSERT INTO `tb_permission` VALUES (5, 'sys:user:del', '删除用户', '删除用户', '01', 1, '2022-01-13 13:44:46', 1, '2022-01-13 13:44:46', 0); @@ -107,41 +116,7 @@ INSERT INTO `tb_permission` VALUES (23, 'sys:permissionMenu:del', '删除角色 INSERT INTO `tb_permission` VALUES (24, 'sys:userRole:update', '更新用户角色', '更新用户角色', '01', 1, '2022-01-14 10:41:35', 1, '2022-01-14 10:41:35', 0); INSERT INTO `tb_permission` VALUES (25, 'sys:userRole:save', '新增用户角色', '新增用户角色', '01', 1, '2022-01-14 10:41:54', 1, '2022-01-14 10:41:54', 0); INSERT INTO `tb_permission` VALUES (26, 'sys:userRole:del', '删除用户角色', '删除用户角色', '01', 1, '2022-01-14 10:42:14', 1, '2022-01-14 10:42:14', 0); - --- ---------------------------- --- Table structure for tb_permission_menu --- ---------------------------- -DROP TABLE IF EXISTS `tb_permission_menu`; -CREATE TABLE `tb_permission_menu` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `permission_id` bigint(20) NOT NULL COMMENT '权限id', - `menu_id` bigint(20) NOT NULL COMMENT '菜单id', - `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人id', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改用户id', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', - `version` bigint(20) NOT NULL DEFAULT 0 COMMENT '版本号', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of tb_permission_menu --- ---------------------------- -INSERT INTO `tb_permission_menu` VALUES (1, 6, 1, 1, '2022-01-13 17:36:59', 1, '2022-01-13 17:36:59', 0); -INSERT INTO `tb_permission_menu` VALUES (2, 6, 2, 1, '2022-01-13 17:37:06', 1, '2022-01-13 17:37:06', 0); -INSERT INTO `tb_permission_menu` VALUES (3, 6, 3, 1, '2022-01-13 17:37:10', 1, '2022-01-13 17:37:10', 0); -INSERT INTO `tb_permission_menu` VALUES (4, 6, 4, 1, '2022-01-13 17:37:15', 1, '2022-01-13 17:37:15', 0); -INSERT INTO `tb_permission_menu` VALUES (5, 6, 5, 1, '2022-01-13 17:37:18', 1, '2022-01-13 17:37:18', 0); -INSERT INTO `tb_permission_menu` VALUES (6, 6, 6, 1, '2022-01-13 17:37:21', 1, '2022-01-13 17:37:21', 0); -INSERT INTO `tb_permission_menu` VALUES (7, 6, 7, 1, '2022-01-13 17:37:25', 1, '2022-01-13 17:37:25', 0); -INSERT INTO `tb_permission_menu` VALUES (8, 6, 8, 1, '2022-01-13 17:37:28', 1, '2022-01-13 17:37:28', 0); -INSERT INTO `tb_permission_menu` VALUES (9, 6, 9, 1, '2022-01-13 17:37:32', 1, '2022-01-13 17:37:32', 0); -INSERT INTO `tb_permission_menu` VALUES (10, 6, 10, 1, '2022-01-13 17:37:42', 1, '2022-01-13 17:37:42', 0); -INSERT INTO `tb_permission_menu` VALUES (11, 6, 11, 1, '2022-01-13 17:37:46', 1, '2022-01-13 17:37:46', 0); -INSERT INTO `tb_permission_menu` VALUES (12, 6, 12, 1, '2022-01-13 17:37:52', 1, '2022-01-13 17:37:52', 0); -INSERT INTO `tb_permission_menu` VALUES (13, 6, 13, 1, '2022-01-13 17:37:55', 1, '2022-01-13 17:37:55', 0); -INSERT INTO `tb_permission_menu` VALUES (14, 6, 14, 1, '2022-01-13 17:37:59', 1, '2022-01-13 17:37:59', 0); -INSERT INTO `tb_permission_menu` VALUES (15, 6, 15, 1, '2022-01-13 17:38:03', 1, '2022-01-13 17:38:03', 0); +INSERT INTO `tb_permission` VALUES (27, 'sys:user:authorityList', '获取用户权限', '获取用户权限', '01', 1, '2022-12-27 11:18:16', 1, '2022-12-27 11:18:24', 0); -- ---------------------------- -- Table structure for tb_role @@ -164,7 +139,7 @@ CREATE TABLE `tb_role` ( -- ---------------------------- -- Records of tb_role -- ---------------------------- -INSERT INTO `tb_role` VALUES (1, 'root', '院长', '最高权限', '01', NULL, '2021-12-04 14:12:34', NULL, '2021-12-04 14:12:38', 1); +INSERT INTO `tb_role` VALUES (1, 'ROLE_root', '院长', '最高权限', '01', NULL, '2021-12-04 14:12:34', NULL, '2021-12-04 14:12:38', 1); -- ---------------------------- -- Table structure for tb_role_permission @@ -208,95 +183,7 @@ INSERT INTO `tb_role_permission` VALUES (29, 1, 20, 1, '2022-01-13 16:38:20', 1, INSERT INTO `tb_role_permission` VALUES (30, 1, 21, 1, '2022-01-13 17:36:25', 1, '2022-01-13 17:36:25', 0); INSERT INTO `tb_role_permission` VALUES (31, 1, 22, 1, '2022-01-13 17:36:25', 1, '2022-01-13 17:36:25', 0); INSERT INTO `tb_role_permission` VALUES (32, 1, 23, 1, '2022-01-13 17:36:25', 1, '2022-01-13 17:36:25', 0); - --- ---------------------------- --- Table structure for tb_sys_dict --- ---------------------------- -DROP TABLE IF EXISTS `tb_sys_dict`; -CREATE TABLE `tb_sys_dict` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', - `dict_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字段名称', - `dict_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字段编码', - `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人id', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改人id', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', - `status` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '01' COMMENT '状态: 01 启用 02停用', - `version` bigint(20) NULL DEFAULT 0 COMMENT '版本号', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of tb_sys_dict --- ---------------------------- - --- ---------------------------- --- Table structure for tb_sys_dict_item --- ---------------------------- -DROP TABLE IF EXISTS `tb_sys_dict_item`; -CREATE TABLE `tb_sys_dict_item` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `dict_id` bigint(20) NULL DEFAULT NULL COMMENT '字典表id', - `item_text` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典项文本', - `item_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典项值', - `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', - `sn` int(4) NULL DEFAULT NULL COMMENT '排序', - `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改人', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', - `status` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '01' COMMENT '状态: 01 启用 02停用', - `version` bigint(20) NULL DEFAULT 0 COMMENT '版本号', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of tb_sys_dict_item --- ---------------------------- - --- ---------------------------- --- Table structure for tb_sys_menu --- ---------------------------- -DROP TABLE IF EXISTS `tb_sys_menu`; -CREATE TABLE `tb_sys_menu` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', - `menu_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单编码', - `menu_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单名称', - `system_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '业务系统标识,区分不同业务系统菜单', - `system_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务系统名称', - `application` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '终端类型,00:平台', - `parent_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父级菜单编码', - `menu_icon` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单图标', - `url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单访问路径', - `open_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单打开类型,1:路由 2:新标签页 3:iframe', - `sn` int(4) NULL DEFAULT NULL COMMENT '序号', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改人', - `update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', - `status` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '01' COMMENT '启用标识 01 启用', - `version` bigint(20) NULL DEFAULT 0 COMMENT '版本号', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of tb_sys_menu --- ---------------------------- -INSERT INTO `tb_sys_menu` VALUES (1, '00', '迷彩平台', '1', '1', '00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (2, '1', '区域管理', '1', '1', '00', '00', NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (3, '2', '日志管理', '1', '1', '00', '00', NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (4, '3', '字典管理', '1', '1', '00', '00', NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (5, '4', '权限管理', '1', '1', '00', '00', NULL, NULL, NULL, 4, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (6, '5', '菜单管理', '1', '1', '00', '00', NULL, NULL, NULL, 5, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (7, '6', '组织管理', '1', '1', '00', '00', NULL, NULL, NULL, 6, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (8, '7', '角色管理', '1', '1', '00', '00', NULL, NULL, NULL, 7, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (9, '8', '用户管理', '1', '1', '00', '00', NULL, NULL, NULL, 8, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (10, '10', '子菜单-区域管理1', '1', '1', '00', '1', NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (11, '11', '子菜单-区域管理2', '1', '1', '00', '1', NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (12, '12', '子菜单-区域管理3', '1', '1', '00', '1', NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (13, '13', '子菜单-区域管理1-详细1', '1', '1', '00', '10', NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (14, '14', '子菜单-区域管理1-详细2', '1', '1', '00', '10', NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, '01', NULL); -INSERT INTO `tb_sys_menu` VALUES (15, '15', '子菜单-区域管理1-详细3', '1', '1', '00', '10', NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, '01', NULL); +INSERT INTO `tb_role_permission` VALUES (33, 1, 27, 1, '2022-12-27 11:19:38', 1, '2022-12-27 11:19:46', 0); -- ---------------------------- -- Table structure for tb_user diff --git a/platform-auth-server/pom.xml b/platform-auth-server/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..91b39b7ff574db8dfd8d48ac8ab8679991288942 --- /dev/null +++ b/platform-auth-server/pom.xml @@ -0,0 +1,72 @@ + + + 4.0.0 + + org.micai.platform + micai-platform-auth + 0.0.1-SNAPSHOT + + + platform-auth-server + + + 8 + 8 + UTF-8 + + + + + org.micai.platform + platform-common + 0.0.1-SNAPSHOT + + + + + + com.baomidou + mybatis-plus-boot-starter + + + + mysql + mysql-connector-java + + + + com.alibaba + fastjson + + + + org.apache.commons + commons-io + + + org.apache.commons + commons-text + + + + org.slf4j + slf4j-api + + + + + com.github.xiaoymin + + knife4j-spring-boot-starter + + + + + org.projectlombok + lombok + + + + \ No newline at end of file diff --git a/src/main/java/org/micai/platform/auth/MicaiPlatformAuthApplication.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/AuthServerApplication.java similarity index 36% rename from src/main/java/org/micai/platform/auth/MicaiPlatformAuthApplication.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/AuthServerApplication.java index 7275d7499f696edad5a7213718091239aa9f208a..9f5de89441359f4ab0e7ba80f70a18bfdf1c4c40 100644 --- a/src/main/java/org/micai/platform/auth/MicaiPlatformAuthApplication.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/AuthServerApplication.java @@ -1,15 +1,19 @@ -package org.micai.platform.auth; +package org.micai.platform.authserver; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -@MapperScan("org.micai.platform.auth.mapper") +/** + * @Author liuCong + * @Date ${DATE} ${TIME} + * @ClassName ${NAME} + * @Description + */ @SpringBootApplication -public class MicaiPlatformAuthApplication { - - public static void main(String[] args) { - SpringApplication.run(MicaiPlatformAuthApplication.class, args); - } - -} +@MapperScan("org.micai.platform.authserver.mapper") +public class AuthServerApplication { + public static void main(String[] args) { + SpringApplication.run(AuthServerApplication.class,args); + } +} \ No newline at end of file diff --git a/src/main/java/org/micai/platform/auth/bo/UserQueryBo.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/bo/UserQueryBo.java similarity index 93% rename from src/main/java/org/micai/platform/auth/bo/UserQueryBo.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/bo/UserQueryBo.java index 2ebb49800629aaa9e3ad937a7fcc3ec6968628fb..5fadd1e9709412f80d26f63d7558b8221ea07b25 100644 --- a/src/main/java/org/micai/platform/auth/bo/UserQueryBo.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/bo/UserQueryBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.authserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/config/AuthorizationServerConfiguration.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/config/AuthorizationServerConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..2f8a121f4a2bf74b7bb060346279b96d7eb54e3c --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/config/AuthorizationServerConfiguration.java @@ -0,0 +1,125 @@ +package org.micai.platform.authserver.config; + +import org.micai.platform.common.base.config.MicaiPlatformOauthConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer; +import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; +import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer; +import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer; +import org.springframework.security.oauth2.provider.client.JdbcClientDetailsService; +import org.springframework.security.oauth2.provider.code.AuthorizationCodeServices; +import org.springframework.security.oauth2.provider.code.JdbcAuthorizationCodeServices; +import org.springframework.security.oauth2.provider.token.TokenEnhancer; +import org.springframework.security.oauth2.provider.token.TokenEnhancerChain; +import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter; +import org.springframework.security.oauth2.provider.token.store.JwtTokenStore; + +import javax.annotation.Resource; +import javax.sql.DataSource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author liuCong + * @Date 2022/11/24 下午 2:40 + * @ClassName AuthorizationServerConfiguration + * @Description + */ +@Configuration +@EnableAuthorizationServer +public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { + + @Resource + private DataSource dataSource; + + @Autowired + private AuthenticationManager authenticationManager; + + @Autowired + private JwtTokenStore jwtTokenStore; + + @Autowired + private UserDetailsService customUserDetailsService; + + @Autowired + private JwtAccessTokenConverter jwtAccessTokenConverter; + + @Autowired + private JwtTokenEnhancer jwtTokenEnhancer; + + @Autowired + private MicaiPlatformOauthConfig micaiPlatformOauthConfig; + + @Bean + public AuthorizationCodeServices jdbcAuthorizationCodeServices() { + // JDBC方式保存授权码到 oauth_code 表中 + return new JdbcAuthorizationCodeServices(dataSource); + } + + /** + * @Author : liuCong + * @Date : 2022/11/24 下午 2:50 + * @Description :用来配置授权(authorization)以及令牌(token)的访问端点和令牌服务(token services)。 + * @Throws : // + * @Params : [endpoints] + * @Return : void + **/ + @Override + public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { + endpoints + // 密码模式要设置认证管理器 + .authenticationManager(authenticationManager) + //令牌存储管理 + .tokenStore(jwtTokenStore).accessTokenConverter(jwtAccessTokenConverter) + // 刷新令牌使用 + .userDetailsService(customUserDetailsService) + // 授权码使用 + .authorizationCodeServices(jdbcAuthorizationCodeServices()) + //实现自动授权 不需要用户点击授权 +// .userApprovalHandler(new AuthApprovalHandler()) + + ; + if (jwtTokenEnhancer != null ){ + //重新创建EnhancerChain放如 + TokenEnhancerChain enhancerChain = new TokenEnhancerChain(); + List enhancers = new ArrayList<>(); + enhancers.add(jwtTokenEnhancer); + enhancers.add(jwtAccessTokenConverter); + enhancerChain.setTokenEnhancers(enhancers); + endpoints.tokenEnhancer(enhancerChain); + } + } + + /** + * 用来配置令牌端点(Token Endpoint)的安全约束 + * + * @param security 安全 + * @throws Exception 异常 + */ + @Override + public void configure(AuthorizationServerSecurityConfigurer security) throws Exception { + // 获取密钥需要身份认证,使用单点登录时必须配置 + // /oauth/token_key :提供公有密匙的端点,使用 JWT 令牌时会使用 , 涉及的类 TokenKeyEndpoint + // /oauth/check_token : 用于资源服务器请求端点来检查令牌是否有效, 涉及的类 CheckTokenEndpoint + security.tokenKeyAccess("permitAll()") + .checkTokenAccess("isAuthenticated()") + .allowFormAuthenticationForClients(); + } + + /** + * 用来配置客户端详情服务(ClientDetailsService),客户端详情信息在这里进行初始化,你能够把客户端详情信息写死在这里或者是通过数据库来存储调取详情信息。 + * 包含3种方法 withClientDetails() inMemory() jdbc() + * @param clients 客户 + * @throws Exception 异常 + */ + @Override + public void configure(ClientDetailsServiceConfigurer clients) throws Exception { + clients.withClientDetails(new JdbcClientDetailsService(dataSource)); + } + +} diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/config/JwtTokenEnhancer.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/config/JwtTokenEnhancer.java new file mode 100644 index 0000000000000000000000000000000000000000..dfd7983fd3b56f57caeff970e10e077fcfddc8c3 --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/config/JwtTokenEnhancer.java @@ -0,0 +1,42 @@ +package org.micai.platform.authserver.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken; +import org.springframework.security.oauth2.common.OAuth2AccessToken; +import org.springframework.security.oauth2.provider.OAuth2Authentication; +import org.springframework.security.oauth2.provider.token.TokenEnhancer; + +import java.util.HashMap; +import java.util.Map; + +/** + * @Author liuCong + * @Date 2022/11/24 下午 2:40 + * @ClassName JwtTokenEnhancerConfig + * @Description + */ +@Configuration +public class JwtTokenEnhancer implements TokenEnhancer { + + /** + * @Author : liuCong + * @Date : 2022/11/25 下午 4:36 + * @Description : + * org.springframework.security.oauth2.provider.token.DefaultTokenServices 默认token创建方法 + * 在 AuthorizationServerTokenServices 增强访问令牌的策略。 + * org.springframework.security.oauth2.provider.token.TokenEnhancer#enhance(org.springframework.security.oauth2.common.OAuth2AccessToken, org.springframework.security.oauth2.provider.OAuth2Authentication) + * @Throws : // + * @Params : [oAuth2AccessToken, oAuth2Authentication] + * @Return : org.springframework.security.oauth2.common.OAuth2AccessToken + **/ + @Override + public OAuth2AccessToken enhance(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) { + Map info = new HashMap<>(); + //自定义的信息 + info.put("author", "liucong"); + ((DefaultOAuth2AccessToken) oAuth2AccessToken).setAdditionalInformation(info); + return oAuth2AccessToken; + } + + +} diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/config/PasswordEncoder.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/config/PasswordEncoder.java new file mode 100644 index 0000000000000000000000000000000000000000..04320014522051633ffdb7e1c88b33fe59c2c2c9 --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/config/PasswordEncoder.java @@ -0,0 +1,22 @@ +package org.micai.platform.authserver.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +/** + * @Author liuCong + * @Date 2022/12/8 下午 5:16 + * @ClassName PasswordEncoder + * @Description + */ +@Configuration +public class PasswordEncoder { + + @Bean + public BCryptPasswordEncoder bCryptPasswordEncoder() { + + return new BCryptPasswordEncoder(); + } + +} diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/config/TokenConfig.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/config/TokenConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..2c3a9fbc52784b153f61ea9529fd97e0eb1fe8ef --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/config/TokenConfig.java @@ -0,0 +1,52 @@ +package org.micai.platform.authserver.config; + +import org.micai.platform.common.base.config.MicaiPlatformOauthConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter; +import org.springframework.security.oauth2.provider.token.store.JwtTokenStore; + +/** + * @Author liuCong + * @Date 2022/11/24 下午 3:38 + * @ClassName JwtTokenConfig + * @Description 配置Jwt令牌服务,生成jwt格式的token + */ +@Configuration +public class TokenConfig { + + + @Autowired + private MicaiPlatformOauthConfig micaiPlatformOauthConfig; + + + /** + * @Author : liuCong + * @Date : 2022/11/25 下午 5:02 + * @Description : + * @Throws : // + * @Params : [] + * @Return : org.springframework.security.oauth2.provider.token.store.JwtTokenStore + * 默认使用的是InMemoryTokenStore来存储,如果用数据库,那么每次token服务查询、存储,都需要SQL操作。 + **/ + @Bean + public JwtTokenStore jwtTokenStore(){ + return new JwtTokenStore(jwtAccessTokenConverter()); + } + + /** + * @Author : liuCong + * @Date : 2022/11/25 下午 4:16 + * @Description :TokenEnhancer的子类,帮助程序在JWT编码的令牌值和OAuth身份验证信息之间进行转换(在两个方向上),同时充当TokenEnhancer授予令牌的时间。 + * @Throws : // + * @Params : [] + * @Return : org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter + **/ + @Bean + public JwtAccessTokenConverter jwtAccessTokenConverter(){ + JwtAccessTokenConverter converter = new JwtAccessTokenConverter(); + converter.setSigningKey(micaiPlatformOauthConfig.getSignKey()); + return converter; + } +} diff --git a/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/config/WebSecurityConfig.java similarity index 48% rename from src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/config/WebSecurityConfig.java index 284d26e9dc2c4eb1d744412a362ccf43e3dedcb5..31075191212f89e3eed782b0af02d09d33fb88df 100644 --- a/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/config/WebSecurityConfig.java @@ -1,22 +1,30 @@ -package org.micai.platform.auth.config; - -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.filter.ImageCodeValidateFilter; -import org.micai.platform.auth.filter.JWTAuthenticationFilter; -import org.micai.platform.auth.filter.JWTLoginFilter; -import org.micai.platform.auth.handler.CustomAuthenticationFailureHandler; -import org.micai.platform.auth.handler.Http401AuthenticationEntryPoint; -import org.micai.platform.auth.provider.CustomAuthenticationProvider; -import org.micai.platform.auth.service.*; +package org.micai.platform.authserver.config; + + +import org.micai.platform.authserver.filter.JWTAuthenticationFilter; +import org.micai.platform.authserver.filter.JWTLoginFilter; +import org.micai.platform.authserver.handler.CustomAuthenticationFailureHandler; +import org.micai.platform.authserver.handler.Http401AuthenticationEntryPoint; +import org.micai.platform.authserver.provider.CustomAuthenticationProvider; +import org.micai.platform.authserver.service.PermissionService; +import org.micai.platform.authserver.service.RolePermissionService; +import org.micai.platform.authserver.service.RoleService; +import org.micai.platform.authserver.service.UserRoleService; +import org.micai.platform.authserver.service.UserService; +import org.micai.platform.authserver.service.impl.UserDetailsServiceImpl; +import org.micai.platform.common.base.config.MicaiPlatformTokenConfig; +import org.micai.platform.common.base.constant.ConstantCode; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; /** @@ -30,26 +38,6 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - /** - * 需要放行的URL - */ - private static final String[] AUTH_WHITELIST = { - // -- register url - "/users/signup", - "/upload/store", - - // -- swagger ui - "/v2/api-docs", - "/swagger-resources", - "/swagger-resources/**", - "/webjars/**", - "/doc.html", - - // -- image code - "/image/code" - // other public endpoints of your API may be appended to this array - }; - @Autowired private UserService userService; @@ -72,13 +60,13 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private CustomAuthenticationFailureHandler customAuthenticationFailureHandler; @Autowired - private ImageCodeValidateFilter imageCodeValidateFilter; + private MicaiPlatformTokenConfig micaiPlatformTokenConfig; - @Value("${jwt.sign.key}") - private String signKey; - - @Value("${jwt.expiration.time}") - private int expirationTime; + @Bean + @Override + protected AuthenticationManager authenticationManager() throws Exception { + return super.authenticationManager(); + } /** * 设置 HTTP 验证规则 @@ -89,32 +77,36 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http + .cors().and().csrf().disable()//禁止跨域 + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)//session管理机制: 不会保存session状态 - .cors().and().csrf().disable()//禁止跨域 - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)//session管理机制: 不会保存session状态 - - .and() - .exceptionHandling()// 自定义异常处理 - .authenticationEntryPoint(new Http401AuthenticationEntryPoint(ConstantCode.BASE_REALM)) // 未登录处理 + .and() + .exceptionHandling()// 自定义异常处理 + .authenticationEntryPoint(new Http401AuthenticationEntryPoint(ConstantCode.BASE_REALM)) // 未登录处理 // .and()//权限不足处理.exceptionHandling().accessDeniedHandler(customAccessDeniedHandler) // 自定义访问失败处理器 - .and() - // 自定义过滤器 - .addFilterBefore(imageCodeValidateFilter,JWTLoginFilter.class) - .addFilter(new JWTLoginFilter(authenticationManager(), signKey, expirationTime, customAuthenticationFailureHandler)) - .addFilter(new JWTAuthenticationFilter(authenticationManager(), signKey)) - .authorizeRequests()// 验证策略 - .antMatchers(AUTH_WHITELIST).permitAll()// 无需验证路径 - .anyRequest().authenticated() // 所有请求需要身份认证 - - .and() - .logout() // 默认注销行为为logout,可以通过下面的方式来修改 - .logoutUrl("/logout") - .logoutSuccessUrl("/login")// 设置注销成功后跳转页面,默认是跳转到登录页面; + .and() + // 自定义过滤器 + .addFilter(new JWTLoginFilter(authenticationManager(), micaiPlatformTokenConfig, customAuthenticationFailureHandler)) + .addFilter(new JWTAuthenticationFilter(authenticationManager(), micaiPlatformTokenConfig)) + .authorizeRequests()// 验证策略 + .anyRequest().authenticated() // 所有请求需要身份认证 + + .and() + .logout() // 默认注销行为为logout,可以通过下面的方式来修改 + .logoutUrl("/logout") + .logoutSuccessUrl("/login")// 设置注销成功后跳转页面,默认是跳转到登录页面; // .logoutSuccessHandler(customLogoutSuccessHandler) - .permitAll(); + .permitAll(); } + + @Bean + public UserDetailsService userDetailsService() { + return new UserDetailsServiceImpl(); + } + + /** * 该方法是登录的时候会进入 * diff --git a/src/main/java/org/micai/platform/auth/entity/Permission.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/entity/Permission.java similarity index 97% rename from src/main/java/org/micai/platform/auth/entity/Permission.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/entity/Permission.java index c326063dab77d3f86faeb27f912d858367b73684..3f34495dfde7d4f4bfa8ef5c2ec00f86a13468b2 100644 --- a/src/main/java/org/micai/platform/auth/entity/Permission.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/entity/Permission.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.entity; +package org.micai.platform.authserver.entity; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/org/micai/platform/auth/entity/Role.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/entity/Role.java similarity index 97% rename from src/main/java/org/micai/platform/auth/entity/Role.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/entity/Role.java index 0b1ac7c779fb48392bb51119472649f80e4c3c74..18599a78bb975fcc487733cbef4044b2135798b9 100644 --- a/src/main/java/org/micai/platform/auth/entity/Role.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/entity/Role.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.entity; +package org.micai.platform.authserver.entity; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/org/micai/platform/auth/entity/RolePermission.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/entity/RolePermission.java similarity index 96% rename from src/main/java/org/micai/platform/auth/entity/RolePermission.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/entity/RolePermission.java index 8ce4d261d0ce9afa0c9ce63363e9f73b6974cdac..fcb5c9a96e338df3130518abfbb137792fe98384 100644 --- a/src/main/java/org/micai/platform/auth/entity/RolePermission.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/entity/RolePermission.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.entity; +package org.micai.platform.authserver.entity; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/org/micai/platform/auth/entity/User.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/entity/User.java similarity index 97% rename from src/main/java/org/micai/platform/auth/entity/User.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/entity/User.java index 2111296695d2e4ec6fb74bb4a712d3c67f0abb99..8e6cb6577fc052169c0dd99889192728ec386c46 100644 --- a/src/main/java/org/micai/platform/auth/entity/User.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/entity/User.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.entity; +package org.micai.platform.authserver.entity; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/org/micai/platform/auth/entity/UserRole.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/entity/UserRole.java similarity index 96% rename from src/main/java/org/micai/platform/auth/entity/UserRole.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/entity/UserRole.java index 9eb02bac708d91ef33974ede2e500c6c40d93cc2..d8bc51023d73462ddebfb36223ac05929fb40aab 100644 --- a/src/main/java/org/micai/platform/auth/entity/UserRole.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/entity/UserRole.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.entity; +package org.micai.platform.authserver.entity; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/filter/JWTAuthenticationFilter.java similarity index 80% rename from src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/filter/JWTAuthenticationFilter.java index 120042068b3710baa352b9e8d53c495eebc49dbf..426fdefdfe7324a93fedb1a65a63d7f714d72687 100644 --- a/src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/filter/JWTAuthenticationFilter.java @@ -1,13 +1,14 @@ -package org.micai.platform.auth.filter; +package org.micai.platform.authserver.filter; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import io.jsonwebtoken.*; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.service.GrantedAuthorityImpl; +import org.micai.platform.authserver.service.impl.GrantedAuthorityImpl; +import org.micai.platform.common.base.config.MicaiPlatformTokenConfig; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.GrantedAuthority; @@ -19,7 +20,10 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; /** * 自定义JWT认证过滤器 @@ -31,17 +35,17 @@ import java.util.*; @Slf4j public class JWTAuthenticationFilter extends BasicAuthenticationFilter { - private final String signKey; + private final MicaiPlatformTokenConfig micaiPlatformTokenConfig; - public JWTAuthenticationFilter(AuthenticationManager authenticationManager, String signKey) { + public JWTAuthenticationFilter(AuthenticationManager authenticationManager, MicaiPlatformTokenConfig micaiPlatformTokenConfig) { super(authenticationManager); - this.signKey = signKey; + this.micaiPlatformTokenConfig = micaiPlatformTokenConfig; } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { - String header = request.getHeader(ConstantCode.AUTHORIZATION); - if (ObjectUtil.isEmpty(header) || !header.startsWith(ConstantCode.HEADER_BEARER)) { + String header = request.getHeader(micaiPlatformTokenConfig.getTokenName()); + if (ObjectUtil.isEmpty(header) || !header.startsWith(micaiPlatformTokenConfig.getTokenPrefix())) { chain.doFilter(request, response); return; } @@ -53,13 +57,16 @@ public class JWTAuthenticationFilter extends BasicAuthenticationFilter { private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { long start = System.currentTimeMillis(); - String token = request.getHeader(ConstantCode.AUTHORIZATION); + String token = request.getHeader(micaiPlatformTokenConfig.getTokenName()); if (ObjectUtil.isEmpty(token)) { throw new PlatformException(ConstantEnum.TOKEN_MISS); } // parse the token. String user = null; - Claims claims = Jwts.parser().setSigningKey(signKey).parseClaimsJws(token.replace(ConstantCode.HEADER_BEARER, "")).getBody(); + Claims claims = Jwts.parser() + .setSigningKey(micaiPlatformTokenConfig.getSignKey()) + .parseClaimsJws(token.replace(micaiPlatformTokenConfig.getTokenPrefix(), "")) + .getBody(); log.info("相关信息 : {}",claims.getSubject()); // token签发时间 long issuedAt = claims.getIssuedAt().getTime(); @@ -85,7 +92,7 @@ public class JWTAuthenticationFilter extends BasicAuthenticationFilter { .setSubject(claims.getSubject()) .setIssuedAt(now)//签发时间 .setExpiration(time)//过期时间 - .signWith(SignatureAlgorithm.HS512, signKey) //采用什么算法是可以自己选择的,不一定非要采用HS512 + .signWith(SignatureAlgorithm.HS512, micaiPlatformTokenConfig.getSignKey()) //采用什么算法是可以自己选择的,不一定非要采用HS512 .compact(); // 重新生成token end @@ -93,7 +100,7 @@ public class JWTAuthenticationFilter extends BasicAuthenticationFilter { response.addHeader(ConstantCode.REFRESH_TOKEN, refreshToken); } long end = System.currentTimeMillis(); - logger.info("执行时间: " + (end - start) + " 毫秒"); + log.info("执行时间: " + (end - start) + " 毫秒"); user = claims.getSubject(); if (ObjectUtil.isNotEmpty(user)) { String authStr = user.split("-")[ConstantCode.INT_TWO]; diff --git a/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/filter/JWTLoginFilter.java similarity index 78% rename from src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/filter/JWTLoginFilter.java index 366582bf34618bb886151d293795a867c9324841..59ecd4bbbc0ae5e36fc391840220645d83f87662 100644 --- a/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/filter/JWTLoginFilter.java @@ -1,15 +1,16 @@ -package org.micai.platform.auth.filter; +package org.micai.platform.authserver.filter; import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.bo.UserQueryBo; -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.handler.CustomAuthenticationFailureHandler; +import org.micai.platform.authserver.bo.UserQueryBo; +import org.micai.platform.authserver.handler.CustomAuthenticationFailureHandler; +import org.micai.platform.common.base.config.MicaiPlatformTokenConfig; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.result.Result; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -23,7 +24,13 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; -import java.util.*; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 自定义JWT登录过滤器 @@ -31,6 +38,7 @@ import java.util.*; * 该类继承自UsernamePasswordAuthenticationFilter,重写了其中的2个方法 * attemptAuthentication :接收并解析用户凭证。 * successfulAuthentication :用户成功登录后,这个方法会被调用,我们在这个方法里生成token。 + * * @author zhaoxinguo on 2017/9/12. */ @Slf4j @@ -38,22 +46,19 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { private final AuthenticationManager authenticationManager; - private final String signKey; - - private final int expirationTime; + private final MicaiPlatformTokenConfig micaiPlatformTokenConfig; private final CustomAuthenticationFailureHandler customAuthenticationFailureHandler; - public JWTLoginFilter(AuthenticationManager authenticationManager, String signKey, int expirationTime, - CustomAuthenticationFailureHandler customAuthenticationFailureHandler) { + public JWTLoginFilter(AuthenticationManager authenticationManager, MicaiPlatformTokenConfig micaiPlatformTokenConfig, CustomAuthenticationFailureHandler customAuthenticationFailureHandler) { this.authenticationManager = authenticationManager; - this.signKey = signKey; - this.expirationTime = expirationTime; + this.micaiPlatformTokenConfig = micaiPlatformTokenConfig; this.customAuthenticationFailureHandler = customAuthenticationFailureHandler; } /** * 尝试身份认证(接收并解析用户凭证) + * * @param req * @param res * @return @@ -63,7 +68,7 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse res) { Authentication authenticate = null; try { - Map requestMap = new ObjectMapper().readValue(req.getInputStream(), HashMap.class); + Map requestMap = new ObjectMapper().readValue(req.getInputStream(), HashMap.class); UserQueryBo userQueryBo = new UserQueryBo() .setUsername(requestMap.get(ConstantCode.USERNAME)) .setPassword(requestMap.get(ConstantCode.PASSWORD)); @@ -73,9 +78,9 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { userQueryBo.getPassword(), new ArrayList<>()) ); - }catch (AuthenticationException e) { + } catch (AuthenticationException e) { try { - customAuthenticationFailureHandler.onAuthenticationFailure(req,res,e); + customAuthenticationFailureHandler.onAuthenticationFailure(req, res, e); } catch (IOException ex) { log.error("IOException:", ex); } catch (ServletException ex) { @@ -101,6 +106,7 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { /** * 认证成功(用户成功登录后,这个方法会被调用,我们在这个方法里生成token) + * * @param request * @param response * @param chain @@ -122,26 +128,26 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { for (GrantedAuthority grantedAuthority : authorities) { roleList.add(grantedAuthority.getAuthority()); } - + // 生成token start Calendar calendar = Calendar.getInstance(); Date now = calendar.getTime(); // 设置签发时间 calendar.setTime(new Date()); // 设置过期时间 - calendar.add(Calendar.MINUTE, expirationTime);// 5分钟 + calendar.add(Calendar.SECOND, micaiPlatformTokenConfig.getTimeout()); Date time = calendar.getTime(); String rolesStr = JSON.toJSONString(roleList); token = Jwts.builder() .setSubject(auth.getName() + "-" + rolesStr) .setIssuedAt(now)//签发时间 .setExpiration(time)//过期时间 - .signWith(SignatureAlgorithm.HS512, signKey) //采用什么算法是可以自己选择的,不一定非要采用HS512 + .signWith(SignatureAlgorithm.HS512, micaiPlatformTokenConfig.getSignKey()) //采用什么算法是可以自己选择的,不一定非要采用HS512 .compact(); // 生成token end // 登录成功后,返回token到body里面 Map resultMap = new HashMap<>(); - resultMap.put(ConstantCode.AUTHORIZATION, ConstantCode.HEADER_BEARER + token); + resultMap.put(micaiPlatformTokenConfig.getTokenName(), micaiPlatformTokenConfig.getTokenPrefix() + " " + token); Result result = new Result(ConstantEnum.SUCCESS, resultMap); response.setContentType(ConstantCode.CONTENT_TYPE_JSON); response.setStatus(HttpServletResponse.SC_OK); @@ -150,7 +156,7 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { writer.flush(); writer.close(); } catch (Exception e) { - log.error("successfulAuthentication error:" + e); + log.error("successfulAuthentication error:{}", e.toString()); } } diff --git a/src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/handler/CustomAuthenticationFailureHandler.java similarity index 88% rename from src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/handler/CustomAuthenticationFailureHandler.java index 8e40cb27b7766c566087abf63492edd6cc572093..1b530831e8403073e803be77b7c07169770db125 100644 --- a/src/main/java/org/micai/platform/auth/handler/CustomAuthenticationFailureHandler.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/handler/CustomAuthenticationFailureHandler.java @@ -1,8 +1,8 @@ -package org.micai.platform.auth.handler; +package org.micai.platform.authserver.handler; import com.fasterxml.jackson.databind.ObjectMapper; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.result.Result; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; import org.springframework.stereotype.Component; diff --git a/src/main/java/org/micai/platform/auth/handler/Http401AuthenticationEntryPoint.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/handler/Http401AuthenticationEntryPoint.java similarity index 90% rename from src/main/java/org/micai/platform/auth/handler/Http401AuthenticationEntryPoint.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/handler/Http401AuthenticationEntryPoint.java index 07c757a3e47fad675c6d9ae6237dcef3a8c8be9e..8e96d54c322952ca7175adc5f17d1955554fbb18 100644 --- a/src/main/java/org/micai/platform/auth/handler/Http401AuthenticationEntryPoint.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/handler/Http401AuthenticationEntryPoint.java @@ -1,6 +1,6 @@ -package org.micai.platform.auth.handler; +package org.micai.platform.authserver.handler; -import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantCode; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.AuthenticationEntryPoint; diff --git a/src/main/java/org/micai/platform/auth/handler/MyMetaObjectHandler.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/handler/MyMetaObjectHandler.java similarity index 95% rename from src/main/java/org/micai/platform/auth/handler/MyMetaObjectHandler.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/handler/MyMetaObjectHandler.java index 45369f8f19b65d7e51cf28e94ccd0e0d2040510b..b665c0a832dc6f43621eab7b0d6f2e5a0415fa79 100644 --- a/src/main/java/org/micai/platform/auth/handler/MyMetaObjectHandler.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/handler/MyMetaObjectHandler.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.handler; +package org.micai.platform.authserver.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; diff --git a/src/main/java/org/micai/platform/auth/interceptor/PlusInterceptor.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/interceptor/PlusInterceptor.java similarity index 93% rename from src/main/java/org/micai/platform/auth/interceptor/PlusInterceptor.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/interceptor/PlusInterceptor.java index fa3787e1319f06152ef5f9b4b201b577d6b91fb2..ed709616486a4cad90478d37fd590ff767d789fc 100644 --- a/src/main/java/org/micai/platform/auth/interceptor/PlusInterceptor.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/interceptor/PlusInterceptor.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.interceptor; +package org.micai.platform.authserver.interceptor; import com.baomidou.mybatisplus.annotation.DbType; diff --git a/src/main/java/org/micai/platform/auth/mapper/PermissionMapper.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/PermissionMapper.java similarity index 67% rename from src/main/java/org/micai/platform/auth/mapper/PermissionMapper.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/PermissionMapper.java index c9b7a60b6ef0025022329a655549f38b8e2135f5..87f2a296364951cee4c54330989b08ec51566348 100644 --- a/src/main/java/org/micai/platform/auth/mapper/PermissionMapper.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/PermissionMapper.java @@ -1,6 +1,6 @@ -package org.micai.platform.auth.mapper; +package org.micai.platform.authserver.mapper; -import org.micai.platform.auth.entity.Permission; +import org.micai.platform.authserver.entity.Permission; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/org/micai/platform/auth/mapper/RoleMapper.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/RoleMapper.java similarity index 67% rename from src/main/java/org/micai/platform/auth/mapper/RoleMapper.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/RoleMapper.java index ab45d559f5c3e482e839623317d6374be49d9ac0..cb798890b376183f940333b8dc6a4ae0584437e7 100644 --- a/src/main/java/org/micai/platform/auth/mapper/RoleMapper.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/RoleMapper.java @@ -1,6 +1,6 @@ -package org.micai.platform.auth.mapper; +package org.micai.platform.authserver.mapper; -import org.micai.platform.auth.entity.Role; +import org.micai.platform.authserver.entity.Role; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/org/micai/platform/auth/mapper/RolePermissionMapper.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/RolePermissionMapper.java similarity index 67% rename from src/main/java/org/micai/platform/auth/mapper/RolePermissionMapper.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/RolePermissionMapper.java index a24943394a425828ca6b7d4b07d330e9554a9b8c..d8206cc59b58b8c2718a053b095cb7399b5c5e7d 100644 --- a/src/main/java/org/micai/platform/auth/mapper/RolePermissionMapper.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/RolePermissionMapper.java @@ -1,6 +1,6 @@ -package org.micai.platform.auth.mapper; +package org.micai.platform.authserver.mapper; -import org.micai.platform.auth.entity.RolePermission; +import org.micai.platform.authserver.entity.RolePermission; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/UserMapper.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/UserMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..1b421f8cda899a58b4166cf86c8103ec69084444 --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/UserMapper.java @@ -0,0 +1,8 @@ +package org.micai.platform.authserver.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.micai.platform.authserver.entity.User; + +public interface UserMapper extends BaseMapper { + +} diff --git a/src/main/java/org/micai/platform/auth/mapper/UserRoleMapper.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/UserRoleMapper.java similarity index 67% rename from src/main/java/org/micai/platform/auth/mapper/UserRoleMapper.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/UserRoleMapper.java index 6ea5897dd8933caa1a5267ed85a6b6be556dcf42..9d06a84eb73070b9b106b2f0dc0d301c0a9f5c79 100644 --- a/src/main/java/org/micai/platform/auth/mapper/UserRoleMapper.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/mapper/UserRoleMapper.java @@ -1,6 +1,6 @@ -package org.micai.platform.auth.mapper; +package org.micai.platform.authserver.mapper; -import org.micai.platform.auth.entity.UserRole; +import org.micai.platform.authserver.entity.UserRole; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/provider/CustomAuthenticationProvider.java similarity index 81% rename from src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/provider/CustomAuthenticationProvider.java index 425bd4e5f984ea3cfe24842f3f7c57240d681fc1..8e13d0121ecc411901ac1f5ae6cdcaa57c0acbdf 100644 --- a/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/provider/CustomAuthenticationProvider.java @@ -1,13 +1,14 @@ -package org.micai.platform.auth.provider; +package org.micai.platform.authserver.provider; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.exception.MyAuthException; -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.entity.*; -import org.micai.platform.auth.service.*; +import org.micai.platform.authserver.entity.*; +import org.micai.platform.authserver.service.*; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.MyAuthException; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -71,8 +72,7 @@ public class CustomAuthenticationProvider implements AuthenticationProvider { String name = authentication.getName(); String password = authentication.getCredentials().toString(); // 认证逻辑 - /*UserDetails userDetails = userDetailsService.loadUserByUsername(name);*/ - User userDetails = userService.findByUsername(name); + User userDetails = userService.getOne(new LambdaQueryWrapper().eq(User::getUsername,name)); if (ObjectUtil.isEmpty(userDetails)) { throw new MyAuthException(ConstantEnum.USER_CODE_ERROR); } @@ -87,7 +87,7 @@ public class CustomAuthenticationProvider implements AuthenticationProvider { } List roleIdList = userRoleList.stream().map(UserRole::getRoleId).collect(Collectors.toList()); List roleList = roleService.list(new QueryWrapper().lambda() - .in(Role::getId,roleIdList).eq(Role::getStatus,ConstantCode.STR_Z_ONE)); + .in(Role::getId,roleIdList).eq(Role::getStatus, ConstantCode.STR_Z_ONE)); if (ObjectUtil.isEmpty(roleList)){ throw new MyAuthException(ConstantEnum.NO_ROLE); } @@ -103,19 +103,9 @@ public class CustomAuthenticationProvider implements AuthenticationProvider { throw new MyAuthException(ConstantEnum.NO_PERMISSION); } - StringBuilder roleStr = new StringBuilder(); - for (Role role : roleList) { - roleStr.append(ConstantCode.DEFAULT_ROLE_PREFIX).append(role.getRoleCode()); - roleStr.append(ConstantCode.SEPARATOR); - } - StringBuilder permissionStr = new StringBuilder(); - for (int i = 0; i < permissionList.size(); i++) { - permissionStr.append(permissionList.get(i).getPermissionCode()); - if ((permissionList.size() - 1) != i){ - permissionStr.append(ConstantCode.SEPARATOR); - } - } - String authStr = roleStr.append(permissionStr).toString(); + String roleStr = roleList.stream().distinct().map(Role::getRoleCode).collect(Collectors.joining(",")); + String permissionStr = permissionList.stream().distinct().map(Permission::getPermissionCode).collect(Collectors.joining(",")); + String authStr = roleStr + ConstantCode.SEPARATOR + permissionStr; // 这里设置权限和角色 List grantedAuthorities = AuthorityUtils.commaSeparatedStringToAuthorityList(authStr); // 生成令牌 这里令牌里面存入了:name,password,authorities, 当然你也可以放其他内容 diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/service/PermissionService.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/PermissionService.java new file mode 100644 index 0000000000000000000000000000000000000000..4aa1885fbad4cbeab6d7cecd84af846504eb100c --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/PermissionService.java @@ -0,0 +1,17 @@ +package org.micai.platform.authserver.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.micai.platform.authserver.entity.Permission; + +/** + *

+ * 服务类 + *

+ * + * @author liucong + * @since 2021-12-04 + */ +public interface PermissionService extends IService { + + +} diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/service/RolePermissionService.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/RolePermissionService.java new file mode 100644 index 0000000000000000000000000000000000000000..aa098d41a0a953b8b3ea833488f62fb26d8be3d7 --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/RolePermissionService.java @@ -0,0 +1,17 @@ +package org.micai.platform.authserver.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.micai.platform.authserver.entity.RolePermission; + +/** + *

+ * 服务类 + *

+ * + * @author liucong + * @since 2021-12-04 + */ +public interface RolePermissionService extends IService { + + +} diff --git a/src/main/java/org/micai/platform/auth/service/SysDictService.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/RoleService.java similarity index 41% rename from src/main/java/org/micai/platform/auth/service/SysDictService.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/service/RoleService.java index 2efcd92c729723e5292ffe7aecef8a57b178b1a7..63c615d80db36995a1534d99a944ba1e9fa51bca 100644 --- a/src/main/java/org/micai/platform/auth/service/SysDictService.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/RoleService.java @@ -1,7 +1,7 @@ -package org.micai.platform.auth.service; +package org.micai.platform.authserver.service; -import org.micai.platform.auth.entity.SysDict; import com.baomidou.mybatisplus.extension.service.IService; +import org.micai.platform.authserver.entity.Role; /** *

@@ -9,8 +9,8 @@ import com.baomidou.mybatisplus.extension.service.IService; *

* * @author liucong - * @since 2021-12-06 + * @since 2021-12-04 */ -public interface SysDictService extends IService { +public interface RoleService extends IService { } diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/service/UserRoleService.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/UserRoleService.java new file mode 100644 index 0000000000000000000000000000000000000000..4c5d691fdb8268e05c31b2827ff71f42add2dff6 --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/UserRoleService.java @@ -0,0 +1,17 @@ +package org.micai.platform.authserver.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.micai.platform.authserver.entity.UserRole; + +/** + *

+ * 服务类 + *

+ * + * @author liucong + * @since 2021-12-04 + */ +public interface UserRoleService extends IService { + + +} diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/service/UserService.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/UserService.java new file mode 100644 index 0000000000000000000000000000000000000000..d6e4f2e2872611725616979f071a978cf16a3299 --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/UserService.java @@ -0,0 +1,8 @@ +package org.micai.platform.authserver.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.micai.platform.authserver.entity.User; + +public interface UserService extends IService { + +} diff --git a/src/main/java/org/micai/platform/auth/service/GrantedAuthorityImpl.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/GrantedAuthorityImpl.java similarity index 90% rename from src/main/java/org/micai/platform/auth/service/GrantedAuthorityImpl.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/GrantedAuthorityImpl.java index c3770b7b5bb60ce6dda008abbd0b3daf98fe02ce..d54f52c578f6467eee055ac086e3b9cf1231ad91 100644 --- a/src/main/java/org/micai/platform/auth/service/GrantedAuthorityImpl.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/GrantedAuthorityImpl.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.service; +package org.micai.platform.authserver.service.impl; import org.springframework.security.core.GrantedAuthority; diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/PermissionServiceImpl.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/PermissionServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..9454fbcacbd4c52a81a9fdd2826d36b2bd2737f7 --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/PermissionServiceImpl.java @@ -0,0 +1,20 @@ +package org.micai.platform.authserver.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.authserver.entity.Permission; +import org.micai.platform.authserver.mapper.PermissionMapper; +import org.micai.platform.authserver.service.PermissionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author liucong + * @since 2021-12-04 + */ +@Service +public class PermissionServiceImpl extends ServiceImpl implements PermissionService { + +} diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/RolePermissionServiceImpl.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/RolePermissionServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..05d98225a5cde428524ecbcfa9af9ecde80d452c --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/RolePermissionServiceImpl.java @@ -0,0 +1,20 @@ +package org.micai.platform.authserver.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.authserver.entity.RolePermission; +import org.micai.platform.authserver.mapper.RolePermissionMapper; +import org.micai.platform.authserver.service.RolePermissionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author liucong + * @since 2021-12-04 + */ +@Service +public class RolePermissionServiceImpl extends ServiceImpl implements RolePermissionService { + +} diff --git a/src/main/java/org/micai/platform/auth/service/impl/SysDictServiceImpl.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/RoleServiceImpl.java similarity index 37% rename from src/main/java/org/micai/platform/auth/service/impl/SysDictServiceImpl.java rename to platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/RoleServiceImpl.java index 099f0e9ab24f88c083adc9ff20255fb010dc23bf..e104f8eaa60ed8e109b11787a9e24eead6500777 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/SysDictServiceImpl.java +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/RoleServiceImpl.java @@ -1,9 +1,9 @@ -package org.micai.platform.auth.service.impl; +package org.micai.platform.authserver.service.impl; -import org.micai.platform.auth.entity.SysDict; -import org.micai.platform.auth.mapper.SysDictMapper; -import org.micai.platform.auth.service.SysDictService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.authserver.entity.Role; +import org.micai.platform.authserver.mapper.RoleMapper; +import org.micai.platform.authserver.service.RoleService; import org.springframework.stereotype.Service; /** @@ -12,9 +12,9 @@ import org.springframework.stereotype.Service; *

* * @author liucong - * @since 2021-12-06 + * @since 2021-12-04 */ @Service -public class SysDictServiceImpl extends ServiceImpl implements SysDictService { +public class RoleServiceImpl extends ServiceImpl implements RoleService { } diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/UserDetailsServiceImpl.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/UserDetailsServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..251334bd06d5807d4c644672759411a5c7b9a2fe --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/UserDetailsServiceImpl.java @@ -0,0 +1,76 @@ +package org.micai.platform.authserver.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.micai.platform.authserver.entity.*; +import org.micai.platform.authserver.service.*; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.MyAuthException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.authority.AuthorityUtils; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author liuCong + * @Date 2022/11/24 下午 1:36 + * @ClassName UserDetailsServiceImpl + * @Description + */ +public class UserDetailsServiceImpl implements UserDetailsService { + + @Autowired + private UserService userService; + + @Autowired + private UserRoleService userRoleService; + + @Autowired + private RoleService roleService; + + @Autowired + private RolePermissionService rolePermissionService; + + @Autowired + private PermissionService permissionService; + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + User user = userService.getOne(new LambdaQueryWrapper().eq(User::getUsername,username)); + if (user == null){ + throw new UsernameNotFoundException("未找到该用户"); + } + //获取用户权限 + List userRoleList = userRoleService.list(new QueryWrapper().lambda().eq(UserRole::getUserId,user.getId())); + if (ObjectUtil.isEmpty(userRoleList)){ + throw new MyAuthException(ConstantEnum.NO_ROLE); + } + List roleIdList = userRoleList.stream().map(UserRole::getRoleId).collect(Collectors.toList()); + List roleList = roleService.list(new QueryWrapper().lambda() + .in(Role::getId,roleIdList).eq(Role::getStatus, ConstantCode.STR_Z_ONE)); + if (ObjectUtil.isEmpty(roleList)){ + throw new MyAuthException(ConstantEnum.NO_ROLE); + } + List rolePermissionList = rolePermissionService.list(new QueryWrapper().lambda() + .in(RolePermission::getRoleId,roleIdList)); + if (ObjectUtil.isEmpty(rolePermissionList)){ + throw new MyAuthException(ConstantEnum.NO_PERMISSION); + } + List permissionIdList = rolePermissionList.stream().map(RolePermission::getPermissionId).collect(Collectors.toList()); + List permissionList = permissionService.list(new QueryWrapper().lambda() + .in(Permission::getId,permissionIdList).eq(Permission::getStatus,ConstantCode.STR_Z_ONE)); + if (ObjectUtil.isEmpty(permissionList)){ + throw new MyAuthException(ConstantEnum.NO_PERMISSION); + } + + String collect = permissionList.stream().map(Permission::getPermissionCode).collect(Collectors.joining(",")); + return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), AuthorityUtils.createAuthorityList(collect)); + } + +} diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/UserRoleServiceImpl.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/UserRoleServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..4dc40af9662bd2a695adfb59911d4d651cc538fd --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/UserRoleServiceImpl.java @@ -0,0 +1,21 @@ +package org.micai.platform.authserver.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.authserver.entity.UserRole; +import org.micai.platform.authserver.mapper.UserRoleMapper; +import org.micai.platform.authserver.service.UserRoleService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author liucong + * @since 2021-12-04 + */ +@Service +public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { + + +} diff --git a/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/UserServiceImpl.java b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/UserServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..ec30dd20d63d99cde1dbdaa4e65799304870bf35 --- /dev/null +++ b/platform-auth-server/src/main/java/org/micai/platform/authserver/service/impl/UserServiceImpl.java @@ -0,0 +1,19 @@ +package org.micai.platform.authserver.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.authserver.entity.User; +import org.micai.platform.authserver.mapper.UserMapper; +import org.micai.platform.authserver.service.UserService; +import org.springframework.stereotype.Service; + +/** + * @ClassName UserServiceImpl + * @Description 用户Service + * @Author zhaoxinguo + * @Date 2021/12/3 20:40 + * @Version 1.0 + */ +@Service +public class UserServiceImpl extends ServiceImpl implements UserService { + +} diff --git a/src/main/resources/application-dev.yml b/platform-auth-server/src/main/resources/application-dev.yml similarity index 55% rename from src/main/resources/application-dev.yml rename to platform-auth-server/src/main/resources/application-dev.yml index 5ce3322211ca9b40c7f860fe6f6cc09ebc516912..477da8a0f49c468badf4e746c6e29e05877f5ffb 100644 --- a/src/main/resources/application-dev.yml +++ b/platform-auth-server/src/main/resources/application-dev.yml @@ -8,7 +8,7 @@ spring: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/security?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true username: root - password: root + password: ly1218 #jwt相关配置 jwt: @@ -19,7 +19,18 @@ jwt: expiration: time: 15 -#登录是否开启图形验证码功能 -image: - code: - flag: true \ No newline at end of file +micai-platform-auth: + #jwt相关配置 + token: + #sign key + sign-key: micai-security-@Jwt!&Secret^# + #jwt 过期时间 单位:分钟 + timeout: 60 + # token名称 + token-name: Authorization + # token前缀 + token-prefix: Bearer + + oauth-auth: + #sign key + sign-key: micai-oauth2-@Jwt!&Secret^# diff --git a/src/main/resources/application-pro.yml b/platform-auth-server/src/main/resources/application-pro.yml similarity index 100% rename from src/main/resources/application-pro.yml rename to platform-auth-server/src/main/resources/application-pro.yml diff --git a/platform-auth-server/src/main/resources/application.yml b/platform-auth-server/src/main/resources/application.yml new file mode 100644 index 0000000000000000000000000000000000000000..99f2ad18f63aa0ece95f5908c054480b62c7a18e --- /dev/null +++ b/platform-auth-server/src/main/resources/application.yml @@ -0,0 +1,23 @@ +#spring +spring: + mvc: + pathmatch: + matching-strategy: ant_path_matcher + profiles: + active: dev + devtools: + restart: + enabled: true + +#mybatis-plus +mybatis-plus: + global-config: + db-config: + insert-strategy: not_empty + update-strategy: not_empty + where-strategy: not_empty + id-type: auto + table-prefix: tb_ + configuration: + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl diff --git a/platform-common/pom.xml b/platform-common/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..b94f33dd73b4d5e633f9c470fbe347aa6225ad6c --- /dev/null +++ b/platform-common/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + + org.micai.platform + micai-platform-auth + 0.0.1-SNAPSHOT + + + platform-common + + + 8 + 8 + UTF-8 + + + + + + cn.hutool + hutool-all + + + + + + org.projectlombok + lombok + + + + + \ No newline at end of file diff --git a/platform-common/src/main/java/org/micai/platform/common/base/WebStarterAutoConfig.java b/platform-common/src/main/java/org/micai/platform/common/base/WebStarterAutoConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..6924fa4dfe075f70bc92eaf825ade140183102dd --- /dev/null +++ b/platform-common/src/main/java/org/micai/platform/common/base/WebStarterAutoConfig.java @@ -0,0 +1,20 @@ +package org.micai.platform.common.base; + +import org.micai.platform.common.base.controller.ExceptionController; +import org.micai.platform.common.base.exception.GlobalExceptionHandler; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * @Author liuCong + * @Date 2022/12/12 下午 3:55 + * @ClassName WebStarterAutoConfig + * @Description + */ +@Configuration +@Import({GlobalExceptionHandler.class, ExceptionController.class}) +public class WebStarterAutoConfig { + + public WebStarterAutoConfig() { + } +} diff --git a/platform-common/src/main/java/org/micai/platform/common/base/config/MicaiPlatformOauthConfig.java b/platform-common/src/main/java/org/micai/platform/common/base/config/MicaiPlatformOauthConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..4e199a3523ce1530661c7e02bc82627b60f819d6 --- /dev/null +++ b/platform-common/src/main/java/org/micai/platform/common/base/config/MicaiPlatformOauthConfig.java @@ -0,0 +1,35 @@ +package org.micai.platform.common.base.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @Author liuCong + * @Date 2022/12/13 上午 9:38 + * @ClassName MicaiPlatformAuthConfig + * @Description + */ +@Data +@Configuration +@ConfigurationProperties(prefix = "micai-platform-auth.oauth-auth") +public class MicaiPlatformOauthConfig { + + /** JWT*/ + private String signKey; + + /** access_token的长久有效期(单位:分钟) 默认1分钟*/ + private Integer tokenTimeout = 1; + + /** refresh_token的长久有效期(单位:分钟) 默认1分钟*/ + private Integer refreshTimeout = 1; + + public Integer getTokenTimeout() { + return tokenTimeout; + } + + public Integer getRefreshTimeout() { + return refreshTimeout; + } + +} diff --git a/platform-common/src/main/java/org/micai/platform/common/base/config/MicaiPlatformResourcesConfig.java b/platform-common/src/main/java/org/micai/platform/common/base/config/MicaiPlatformResourcesConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..70ab71885851e80a4464bce74ab9ea43cff64943 --- /dev/null +++ b/platform-common/src/main/java/org/micai/platform/common/base/config/MicaiPlatformResourcesConfig.java @@ -0,0 +1,25 @@ +package org.micai.platform.common.base.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import java.util.List; + +/** + * @Author liuCong + * @Date 2022/12/13 上午 9:38 + * @ClassName MicaiPlatformAuthConfig + * @Description + */ +@Data +@Configuration +@ConfigurationProperties(prefix = "micai-platform-auth.oauth-resources") +public class MicaiPlatformResourcesConfig { + + /** JWT*/ + private String signKey; + private String resourceIds; + private List requestMatcher; + +} diff --git a/platform-common/src/main/java/org/micai/platform/common/base/config/MicaiPlatformTokenConfig.java b/platform-common/src/main/java/org/micai/platform/common/base/config/MicaiPlatformTokenConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..438671059350d0a2926278492cae8770919e0b9a --- /dev/null +++ b/platform-common/src/main/java/org/micai/platform/common/base/config/MicaiPlatformTokenConfig.java @@ -0,0 +1,31 @@ +package org.micai.platform.common.base.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @Author liuCong + * @Date 2022/12/13 上午 9:38 + * @ClassName MicaiPlatformAuthConfig + * @Description + */ +@Data +@Configuration +@ConfigurationProperties(prefix = "micai-platform-auth.token") +public class MicaiPlatformTokenConfig { + + /** JWT */ + private String signKey; + /** token的长久有效期(单位:分钟) 默认1分钟*/ + private Integer timeout = 1; + /** token名称 (同时也是cookie名称) */ + private String tokenName; + /** token前缀*/ + private String tokenPrefix; + + + public Integer getTimeout() { + return timeout * 60; + } +} diff --git a/src/main/java/org/micai/platform/auth/constant/ConstantCode.java b/platform-common/src/main/java/org/micai/platform/common/base/constant/ConstantCode.java similarity index 99% rename from src/main/java/org/micai/platform/auth/constant/ConstantCode.java rename to platform-common/src/main/java/org/micai/platform/common/base/constant/ConstantCode.java index 240702d9b483b19908972eb7aca672f5149ba689..52718ed5a0d269cd6da7c03f793d19192665872d 100644 --- a/src/main/java/org/micai/platform/auth/constant/ConstantCode.java +++ b/platform-common/src/main/java/org/micai/platform/common/base/constant/ConstantCode.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.constant; +package org.micai.platform.common.base.constant; /** * @Author liuCong diff --git a/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java b/platform-common/src/main/java/org/micai/platform/common/base/constant/ConstantEnum.java similarity index 98% rename from src/main/java/org/micai/platform/auth/constant/ConstantEnum.java rename to platform-common/src/main/java/org/micai/platform/common/base/constant/ConstantEnum.java index 4fc71faea36e30c97ea729ae5ba6980a8c4cc377..2bd94db12011aa2cfd267944e01c6c74a15d5ad6 100644 --- a/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java +++ b/platform-common/src/main/java/org/micai/platform/common/base/constant/ConstantEnum.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.constant; +package org.micai.platform.common.base.constant; import javax.servlet.http.HttpServletResponse; diff --git a/src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java b/platform-common/src/main/java/org/micai/platform/common/base/controller/ExceptionController.java similarity index 46% rename from src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java rename to platform-common/src/main/java/org/micai/platform/common/base/controller/ExceptionController.java index 7777f5e900a6e7d5c3842426254bcc10588153f6..73c6e779ba436de9fabb4c64a0df3bbaf713872b 100644 --- a/src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java +++ b/platform-common/src/main/java/org/micai/platform/common/base/controller/ExceptionController.java @@ -1,73 +1,56 @@ -package org.micai.platform.auth.controller; +package org.micai.platform.common.base.controller; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.MalformedJwtException; import io.jsonwebtoken.SignatureException; import io.jsonwebtoken.UnsupportedJwtException; -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.constant.ConstantEnum; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletRequest; /** - * @ClassName JwtExceptionController - * @Description Jwt异常处理类 - * @Author zhaoxinguo - * @Date 2021/11/26 15:58 - * @Version 1.0 + * @Author liuCong + * @Date 2022/12/12 下午 3:24 + * @ClassName ExceptionController + * @Description */ @RestController -@ApiIgnore -@Slf4j -public class JwtExceptionController { +public class ExceptionController { @RequestMapping("/expiredJwtException") - public Result expiredJwtException(HttpServletRequest request) { + public void expiredJwtException(HttpServletRequest request) throws ExpiredJwtException { if (request.getAttribute("expiredJwtException") instanceof ExpiredJwtException) { - return new Result(ConstantEnum.EXPIRED_JWT); + throw ((ExpiredJwtException) request.getAttribute("expiredJwtException")); } - return null; } @RequestMapping("/unsupportedJwtException") - public Result unsupportedJwtException(HttpServletRequest request) { + public void unsupportedJwtException(HttpServletRequest request) throws UnsupportedJwtException { if (request.getAttribute("unsupportedJwtException") instanceof UnsupportedJwtException) { - log.error("unsupportedJwtException"); - return new Result(ConstantEnum.TOKEN_ERROR); + throw ((UnsupportedJwtException) request.getAttribute("unsupportedJwtException")); } - return null; } @RequestMapping("/signatureException") - public Result signatureException(HttpServletRequest request) { + public void signatureException(HttpServletRequest request) throws SignatureException { if (request.getAttribute("signatureException") instanceof SignatureException) { - log.error("signatureException"); - return new Result(ConstantEnum.TOKEN_ERROR); + throw ((SignatureException) request.getAttribute("signatureException")); } - return null; } @RequestMapping("/illegalArgumentException") - public Result illegalArgumentException(HttpServletRequest request) { + public void illegalArgumentException(HttpServletRequest request) throws IllegalArgumentException { if (request.getAttribute("illegalArgumentException") instanceof IllegalArgumentException) { - log.error("illegalArgumentException"); - return new Result(ConstantEnum.TOKEN_ERROR); + throw ((IllegalArgumentException) request.getAttribute("illegalArgumentException")); } - return null; } - @RequestMapping("/malformedJwtException") - public Result malformedJwtException(HttpServletRequest request) { + public void malformedJwtException(HttpServletRequest request) throws MalformedJwtException { if (request.getAttribute("malformedJwtException") instanceof MalformedJwtException) { - log.error("malformedJwtException"); - return new Result(ConstantEnum.TOKEN_ERROR); + throw ((MalformedJwtException) request.getAttribute("malformedJwtException")); } - return null; } } diff --git a/src/main/java/org/micai/platform/auth/base/exception/GlobalExceptionHandler.java b/platform-common/src/main/java/org/micai/platform/common/base/exception/GlobalExceptionHandler.java similarity index 39% rename from src/main/java/org/micai/platform/auth/base/exception/GlobalExceptionHandler.java rename to platform-common/src/main/java/org/micai/platform/common/base/exception/GlobalExceptionHandler.java index db0d83613ccd8b9cfd817dd4ca7c9b2bc9d6ab56..76323ad70b1ae5009ca36ec815c77ecbeba41a25 100644 --- a/src/main/java/org/micai/platform/auth/base/exception/GlobalExceptionHandler.java +++ b/platform-common/src/main/java/org/micai/platform/common/base/exception/GlobalExceptionHandler.java @@ -1,17 +1,22 @@ -package org.micai.platform.auth.base.exception; +package org.micai.platform.common.base.exception; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.MalformedJwtException; +import io.jsonwebtoken.SignatureException; +import io.jsonwebtoken.UnsupportedJwtException; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.constant.ConstantEnum; -import org.springframework.dao.DuplicateKeyException; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.result.Result; +import org.springframework.context.support.DefaultMessageSourceResolvable; import org.springframework.security.access.AccessDeniedException; -import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.client.ResourceAccessException; import org.springframework.web.servlet.NoHandlerFoundException; import java.net.ConnectException; +import java.util.stream.Collectors; /** * @ClassName GlobalExceptionHandler @@ -20,7 +25,7 @@ import java.net.ConnectException; * @Date 2021/11/26 15:59 * @Version 1.0 */ -@ControllerAdvice +@RestControllerAdvice @Slf4j public class GlobalExceptionHandler { @@ -30,12 +35,6 @@ public class GlobalExceptionHandler { return new Result(ConstantEnum.NOT_FOUND); } - @ExceptionHandler(DuplicateKeyException.class) - public Result handleDuplicateKeyException(DuplicateKeyException e){ - log.error(e.getMessage(), e); - return new Result(ConstantEnum.DUPLICATE_KEY); - } - @ExceptionHandler(ConnectException.class) public Result connectException(ConnectException e){ log.error(e.getMessage(), e); @@ -48,10 +47,47 @@ public class GlobalExceptionHandler { return new Result(ConstantEnum.RESOURCE_ACCESS); } - @ExceptionHandler(value = AccessDeniedException.class) - @ResponseBody + @ExceptionHandler(AccessDeniedException.class) public Result accessDeniedException(AccessDeniedException e) { log.error(e.getMessage(), e); return new Result(ConstantEnum.ACCESS_DENIED); } + + @ExceptionHandler(SignatureException.class) + public Result signatureException(SignatureException e) { + log.error(e.getMessage(), e); + return new Result(ConstantEnum.SIGNATURE_EX); + } + + @ExceptionHandler(ExpiredJwtException.class) + public Result expiredJwtException(ExpiredJwtException e) { + log.error(e.getMessage(), e); + return new Result(ConstantEnum.EXPIRED_JWT); + } + + @ExceptionHandler(UnsupportedJwtException.class) + public Result unsupportedJwtException(UnsupportedJwtException e) { + log.error(e.getMessage(), e); + return new Result(ConstantEnum.TOKEN_ERROR); + } + + @ExceptionHandler(MalformedJwtException.class) + public Result MalformedJwtException(MalformedJwtException e) { + log.error(e.getMessage(), e); + return new Result(ConstantEnum.ACCESS_DENIED); + } + + @ExceptionHandler(IllegalArgumentException.class) + public Result illegalArgumentException(IllegalArgumentException e) { + log.error(e.getMessage(), e); + return new Result(ConstantEnum.ILLEGAL_ARG); + } + + + @ExceptionHandler(MethodArgumentNotValidException.class) + public Result methodArgumentNotValidException(MethodArgumentNotValidException exception) { + log.info("捕获异常MethodArgumentNotValidException"); + String message = exception.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining()); + return new Result(ConstantEnum.FAIL,message); + } } diff --git a/src/main/java/org/micai/platform/auth/base/exception/MyAuthException.java b/platform-common/src/main/java/org/micai/platform/common/base/exception/MyAuthException.java similarity index 91% rename from src/main/java/org/micai/platform/auth/base/exception/MyAuthException.java rename to platform-common/src/main/java/org/micai/platform/common/base/exception/MyAuthException.java index bb37c99327d331eadd20442a916493e7142c4192..dc796f23a1532374636279a791f2433d514d103d 100644 --- a/src/main/java/org/micai/platform/auth/base/exception/MyAuthException.java +++ b/platform-common/src/main/java/org/micai/platform/common/base/exception/MyAuthException.java @@ -1,6 +1,6 @@ -package org.micai.platform.auth.base.exception; +package org.micai.platform.common.base.exception; -import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.common.base.constant.ConstantEnum; import org.springframework.security.core.AuthenticationException; /** diff --git a/src/main/java/org/micai/platform/auth/base/exception/PlatformException.java b/platform-common/src/main/java/org/micai/platform/common/base/exception/PlatformException.java similarity index 91% rename from src/main/java/org/micai/platform/auth/base/exception/PlatformException.java rename to platform-common/src/main/java/org/micai/platform/common/base/exception/PlatformException.java index 126848c89e006e3d299f51fb3b3d51857408efb6..704f5ed37d265b0d0c1ebba42f967668c4780e55 100644 --- a/src/main/java/org/micai/platform/auth/base/exception/PlatformException.java +++ b/platform-common/src/main/java/org/micai/platform/common/base/exception/PlatformException.java @@ -1,8 +1,8 @@ -package org.micai.platform.auth.base.exception; +package org.micai.platform.common.base.exception; import lombok.Data; import lombok.EqualsAndHashCode; -import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.common.base.constant.ConstantEnum; /** * @Author liuCong diff --git a/src/main/java/org/micai/platform/auth/base/result/Result.java b/platform-common/src/main/java/org/micai/platform/common/base/result/Result.java similarity index 85% rename from src/main/java/org/micai/platform/auth/base/result/Result.java rename to platform-common/src/main/java/org/micai/platform/common/base/result/Result.java index 966f8cf42072c9aa3df4868c43c5821d68c44d18..b6fb9a0211f5db4089d7a410e047c7d4d38cd085 100644 --- a/src/main/java/org/micai/platform/auth/base/result/Result.java +++ b/platform-common/src/main/java/org/micai/platform/common/base/result/Result.java @@ -1,7 +1,7 @@ -package org.micai.platform.auth.base.result; +package org.micai.platform.common.base.result; import lombok.Data; -import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.common.base.constant.ConstantEnum; /** * 返回数据 diff --git a/src/main/java/org/micai/platform/auth/base/result/UploadResult.java b/platform-common/src/main/java/org/micai/platform/common/base/result/UploadResult.java similarity index 86% rename from src/main/java/org/micai/platform/auth/base/result/UploadResult.java rename to platform-common/src/main/java/org/micai/platform/common/base/result/UploadResult.java index 43cfba293c47164a079fac26878d5a5377d15b5a..872204fb3a7fd830adeed05c4bac6f3bdcc26f83 100644 --- a/src/main/java/org/micai/platform/auth/base/result/UploadResult.java +++ b/platform-common/src/main/java/org/micai/platform/common/base/result/UploadResult.java @@ -1,8 +1,8 @@ -package org.micai.platform.auth.base.result; +package org.micai.platform.common.base.result; import lombok.Data; import lombok.experimental.Accessors; -import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.common.base.constant.ConstantEnum; /** * @Author liuCong diff --git a/platform-common/src/main/resources/META-INF/spring.factories b/platform-common/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000000000000000000000000000000000..de58a0438dca8dce1f437e0db08dd2db86b7cbd2 --- /dev/null +++ b/platform-common/src/main/resources/META-INF/spring.factories @@ -0,0 +1,6 @@ +# Auto Configure +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +org.micai.platform.common.base.WebStarterAutoConfig,\ +org.micai.platform.common.base.config.MicaiPlatformOauthConfig,\ +org.micai.platform.common.base.config.MicaiPlatformTokenConfig,\ +org.micai.platform.common.base.config.MicaiPlatformResourcesConfig \ No newline at end of file diff --git a/platform-resources-server/pom.xml b/platform-resources-server/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..bc7620671c80e05126a2180789b3024360f48e4c --- /dev/null +++ b/platform-resources-server/pom.xml @@ -0,0 +1,122 @@ + + + 4.0.0 + + org.micai.platform + micai-platform-auth + 0.0.1-SNAPSHOT + + + platform-resources-server + + + 8 + 8 + UTF-8 + + + + + + org.micai.platform + platform-common + 0.0.1-SNAPSHOT + + + + + com.baomidou + mybatis-plus-boot-starter + + + + mysql + mysql-connector-java + + + + + com.alibaba + fastjson + + + + com.baomidou + mybatis-plus-generator + + + org.apache.velocity + velocity-engine-core + + + + org.apache.commons + commons-io + + + org.apache.commons + commons-text + + + + com.itextpdf + itextpdf + + + com.itextpdf + itext-asian + + + org.apache.poi + poi + + + org.apache.poi + poi-ooxml + + + net.coobird + thumbnailator + + + + com.upyun + java-sdk + + + + com.aliyun.oss + aliyun-sdk-oss + + + + com.qiniu + qiniu-java-sdk + + + + org.slf4j + slf4j-api + + + + + com.github.xiaoymin + + knife4j-spring-boot-starter + + + + + org.projectlombok + lombok + + + + org.springframework.boot + spring-boot-starter-validation + + + diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/ResourcesServerApplication.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/ResourcesServerApplication.java new file mode 100644 index 0000000000000000000000000000000000000000..248986eb35d411533237260b1d65cb1e44c74442 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/ResourcesServerApplication.java @@ -0,0 +1,19 @@ +package org.micai.platform.resourcesserver; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @Author liuCong + * @Date ${DATE} ${TIME} + * @ClassName ${NAME} + * @Description + */ +@SpringBootApplication +@MapperScan("org.micai.platform.resourcesserver.mapper") +public class ResourcesServerApplication { + public static void main(String[] args) { + SpringApplication.run(ResourcesServerApplication.class,args); + } +} \ No newline at end of file diff --git a/src/main/java/org/micai/platform/auth/bo/MenuDelBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/MenuDelBo.java similarity index 90% rename from src/main/java/org/micai/platform/auth/bo/MenuDelBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/MenuDelBo.java index 9aac6037f9f07df926ef80b83547be3debcff217..250322484d9bf37716f5bb0ba2130d04ddbebc07 100644 --- a/src/main/java/org/micai/platform/auth/bo/MenuDelBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/MenuDelBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/MenuSaveBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/MenuSaveBo.java similarity index 96% rename from src/main/java/org/micai/platform/auth/bo/MenuSaveBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/MenuSaveBo.java index 8441677954e570dd6fd4bf12afd5ae5d9715e225..840e094d3d2a117dcff105c7842befc03e1b2998 100644 --- a/src/main/java/org/micai/platform/auth/bo/MenuSaveBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/MenuSaveBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/MenuUpdateBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/MenuUpdateBo.java similarity index 96% rename from src/main/java/org/micai/platform/auth/bo/MenuUpdateBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/MenuUpdateBo.java index cc287e9ec22c77b030fda4decd8c9b50bfdc0407..fdb41c3c164b365dcc3733508b8d7e9474b1429c 100644 --- a/src/main/java/org/micai/platform/auth/bo/MenuUpdateBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/MenuUpdateBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/OrganDelBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganDelBo.java similarity index 73% rename from src/main/java/org/micai/platform/auth/bo/OrganDelBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganDelBo.java index c29c51598021c660b9ad2ddf2144b55b538ca9ce..827d99f391e62bbd8523e8cfaf2a45b1a5471ebb 100644 --- a/src/main/java/org/micai/platform/auth/bo/OrganDelBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganDelBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; /** * @Author zhaoxinguo diff --git a/src/main/java/org/micai/platform/auth/bo/OrganFindBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganFindBo.java similarity index 93% rename from src/main/java/org/micai/platform/auth/bo/OrganFindBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganFindBo.java index 02e27f393d70f4624da5088c2dfa6770956630cc..f33cfb596164091d5dfd241d18808645a66e666b 100644 --- a/src/main/java/org/micai/platform/auth/bo/OrganFindBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganFindBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import cn.hutool.db.Page; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/org/micai/platform/auth/bo/OrganSaveBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganSaveBo.java similarity index 73% rename from src/main/java/org/micai/platform/auth/bo/OrganSaveBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganSaveBo.java index 6c0a79477088644ad33fc6807fef5e3e64063d7a..01ea1c296e695e227871cfa822d8a2da63662686 100644 --- a/src/main/java/org/micai/platform/auth/bo/OrganSaveBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganSaveBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; /** * @Author zhaoxinguo diff --git a/src/main/java/org/micai/platform/auth/bo/OrganUpdateBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganUpdateBo.java similarity index 74% rename from src/main/java/org/micai/platform/auth/bo/OrganUpdateBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganUpdateBo.java index a715f9b910e2f4a214a0e0b227c3ee67fbd0584a..53218b46ed9a7d18008708170755d089b31bf980 100644 --- a/src/main/java/org/micai/platform/auth/bo/OrganUpdateBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/OrganUpdateBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; /** * @Author zhaoxinguo diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionDelBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionDelBo.java similarity index 92% rename from src/main/java/org/micai/platform/auth/bo/PermissionDelBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionDelBo.java index 131d3c11e6f2594d873b4a051f9137273ef3816f..0437fe43d6ed0221a0e590bc5e8a041bfefb1338 100644 --- a/src/main/java/org/micai/platform/auth/bo/PermissionDelBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionDelBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionFindBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionFindBo.java similarity index 93% rename from src/main/java/org/micai/platform/auth/bo/PermissionFindBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionFindBo.java index 7d7f0616664b4067b50e157cd0bc8c1cd6c3d0ae..6d44e17955c319bc995c9dfc5878fe080b20c859 100644 --- a/src/main/java/org/micai/platform/auth/bo/PermissionFindBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionFindBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import cn.hutool.db.Page; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionMenuDelBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionMenuDelBo.java similarity index 92% rename from src/main/java/org/micai/platform/auth/bo/PermissionMenuDelBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionMenuDelBo.java index 14e15221b08130b627ceb38bd8f5f68e8b997af3..03c20267e2135a1613fa8e7d534609e6be829b90 100644 --- a/src/main/java/org/micai/platform/auth/bo/PermissionMenuDelBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionMenuDelBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionMenuSaveBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionMenuSaveBo.java similarity index 93% rename from src/main/java/org/micai/platform/auth/bo/PermissionMenuSaveBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionMenuSaveBo.java index ac9084b0403389082ecd0519627a3925d1088f95..2cd6ad976cb8c3d90f6129cbd8ccc0ee3a6a2a25 100644 --- a/src/main/java/org/micai/platform/auth/bo/PermissionMenuSaveBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionMenuSaveBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionMenuUpdateBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionMenuUpdateBo.java similarity index 94% rename from src/main/java/org/micai/platform/auth/bo/PermissionMenuUpdateBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionMenuUpdateBo.java index 8cb2e5ffb0fb7e582524ea1d7c415da391867a40..b0fcc558acfe50a6ab38fb8cb02fc367accd8cf9 100644 --- a/src/main/java/org/micai/platform/auth/bo/PermissionMenuUpdateBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionMenuUpdateBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionSaveBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionSaveBo.java similarity index 93% rename from src/main/java/org/micai/platform/auth/bo/PermissionSaveBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionSaveBo.java index 99df3cabe7f6a1eef72d6791af80422a04faa80d..2a0f32c0ff870b7b750f5d1048bb4c34ce26bbff 100644 --- a/src/main/java/org/micai/platform/auth/bo/PermissionSaveBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionSaveBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionUpdateBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionUpdateBo.java similarity index 95% rename from src/main/java/org/micai/platform/auth/bo/PermissionUpdateBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionUpdateBo.java index a215a02819ac2613a3e3bf2e84a17c5f7ecc5879..97ed58493b6e40d23632cd3b6e2bdf1e56f4f7e4 100644 --- a/src/main/java/org/micai/platform/auth/bo/PermissionUpdateBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/PermissionUpdateBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/src/main/java/org/micai/platform/auth/bo/RoleDelBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleDelBo.java similarity index 92% rename from src/main/java/org/micai/platform/auth/bo/RoleDelBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleDelBo.java index abddc80c5e3f1f0058cac0166983680ba8f301d3..e9dd4bd5609a34aeb47bef3dccd94756741c9ddf 100644 --- a/src/main/java/org/micai/platform/auth/bo/RoleDelBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleDelBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/RoleFindBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleFindBo.java similarity index 93% rename from src/main/java/org/micai/platform/auth/bo/RoleFindBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleFindBo.java index 61160f7da52d9e2cdd787bccfc576ac9468eb687..37ff971587e3099b3a81a3261acec8ec83ff6b94 100644 --- a/src/main/java/org/micai/platform/auth/bo/RoleFindBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleFindBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import cn.hutool.db.Page; import io.swagger.annotations.ApiModel; diff --git a/src/main/java/org/micai/platform/auth/bo/RolePermissionDelBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RolePermissionDelBo.java similarity index 92% rename from src/main/java/org/micai/platform/auth/bo/RolePermissionDelBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RolePermissionDelBo.java index fece4bbed514d9898d5d10906c05be0073abe583..98c0ab9d5a957768bba00de0a2026f2c0375b66b 100644 --- a/src/main/java/org/micai/platform/auth/bo/RolePermissionDelBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RolePermissionDelBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/RolePermissionSaveBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RolePermissionSaveBo.java similarity index 93% rename from src/main/java/org/micai/platform/auth/bo/RolePermissionSaveBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RolePermissionSaveBo.java index d117fc84d885f234596b8fcb9cba5676df76bfe5..affeb3dd5fa566abc93da357b0596a84e79ef629 100644 --- a/src/main/java/org/micai/platform/auth/bo/RolePermissionSaveBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RolePermissionSaveBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/RolePermissionUpdateBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RolePermissionUpdateBo.java similarity index 94% rename from src/main/java/org/micai/platform/auth/bo/RolePermissionUpdateBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RolePermissionUpdateBo.java index 4ef8d5f92c10242e227a0f70e97fe225de86f3f2..888bb707d6ac0deb794102a2511a2d073e50d228 100644 --- a/src/main/java/org/micai/platform/auth/bo/RolePermissionUpdateBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RolePermissionUpdateBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/RoleSaveBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleSaveBo.java similarity index 91% rename from src/main/java/org/micai/platform/auth/bo/RoleSaveBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleSaveBo.java index 40952bc8932dc37addd2e37653aeddd5d97773d7..c2c52a05f6f34d012f53ffddc64fd12ce293983b 100644 --- a/src/main/java/org/micai/platform/auth/bo/RoleSaveBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleSaveBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/RoleUpdateBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleUpdateBo.java similarity index 94% rename from src/main/java/org/micai/platform/auth/bo/RoleUpdateBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleUpdateBo.java index 08e1f9f7c03ab29279a15db9db35abb3ff082310..9f98a70b1002dd9b2bea09d057ba2e34fccf6838 100644 --- a/src/main/java/org/micai/platform/auth/bo/RoleUpdateBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/RoleUpdateBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/UserDelBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserDelBo.java similarity index 92% rename from src/main/java/org/micai/platform/auth/bo/UserDelBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserDelBo.java index 5726e7b7009fff79b60e7e2cfa4561236741b6f5..e10e3a2717d77a8061e0076e955ffebb773a3b25 100644 --- a/src/main/java/org/micai/platform/auth/bo/UserDelBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserDelBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/UserFindBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserFindBo.java similarity index 93% rename from src/main/java/org/micai/platform/auth/bo/UserFindBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserFindBo.java index 172096b0cd82cf0a15bebdcd57b54a0cd873e58b..ce61d42487d917c777f86e7854e4dd7452e9fa9c 100644 --- a/src/main/java/org/micai/platform/auth/bo/UserFindBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserFindBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import cn.hutool.db.Page; import io.swagger.annotations.ApiModel; diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserQueryBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserQueryBo.java new file mode 100644 index 0000000000000000000000000000000000000000..2b2018b22062ec759f9ea24c7a98ebd8f5651b9a --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserQueryBo.java @@ -0,0 +1,26 @@ +package org.micai.platform.resourcesserver.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@ApiModel(value = "用户登录bo") +@Accessors(chain = true) +public class UserQueryBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "用户名") + private String username; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "图形验证码") + private String imageCode; + +} diff --git a/src/main/java/org/micai/platform/auth/bo/UserRoleDelBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserRoleDelBo.java similarity index 92% rename from src/main/java/org/micai/platform/auth/bo/UserRoleDelBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserRoleDelBo.java index 5e76d2178806342a1e5d4a8499533f5c2d94bfa1..253f970fdc0fdfb6eab9de1a7311eeccc823b696 100644 --- a/src/main/java/org/micai/platform/auth/bo/UserRoleDelBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserRoleDelBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/UserRoleSaveBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserRoleSaveBo.java similarity index 93% rename from src/main/java/org/micai/platform/auth/bo/UserRoleSaveBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserRoleSaveBo.java index 8239ace852971ecf035a415391e82ff44147c9cd..3d522023e1687231ba45ea8a189e5551f5d3447c 100644 --- a/src/main/java/org/micai/platform/auth/bo/UserRoleSaveBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserRoleSaveBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/UserRoleUpdateBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserRoleUpdateBo.java similarity index 94% rename from src/main/java/org/micai/platform/auth/bo/UserRoleUpdateBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserRoleUpdateBo.java index bea8fa2007faa62128883cb681c469ff3bee39fd..568159afd7f67375ff1ac05360de623f4e8800dc 100644 --- a/src/main/java/org/micai/platform/auth/bo/UserRoleUpdateBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserRoleUpdateBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/UserSaveBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserSaveBo.java similarity index 95% rename from src/main/java/org/micai/platform/auth/bo/UserSaveBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserSaveBo.java index 8cd030eb31193a86d0dd06d15a2192620f2a2bab..67d9535911a9247a5a7fabeff0436c78cb459999 100644 --- a/src/main/java/org/micai/platform/auth/bo/UserSaveBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserSaveBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/bo/UserUpdateBo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserUpdateBo.java similarity index 94% rename from src/main/java/org/micai/platform/auth/bo/UserUpdateBo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserUpdateBo.java index 17d70d52d5c515a8e32b63a86d60ad3be39e53a2..4da773f388312b3519b30c51e31e4e7cbb87122c 100644 --- a/src/main/java/org/micai/platform/auth/bo/UserUpdateBo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/bo/UserUpdateBo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.bo; +package org.micai.platform.resourcesserver.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/config/CodeGenerator.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/CodeGenerator.java similarity index 95% rename from src/main/java/org/micai/platform/auth/config/CodeGenerator.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/CodeGenerator.java index 235016b9c9ca7047c75fc9412b3603f4f4812ff3..e5706a7c993497f4d776154d861add13ab7dc8e7 100644 --- a/src/main/java/org/micai/platform/auth/config/CodeGenerator.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/CodeGenerator.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.config; +package org.micai.platform.resourcesserver.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.IdType; @@ -25,8 +25,7 @@ public class CodeGenerator { // 2、全局配置 GlobalConfig gc = new GlobalConfig(); - String projectPath = System.getProperty("user.dir"); - gc.setOutputDir(projectPath + "/src/main/java"); + gc.setOutputDir("D:\\AStudySpace\\springsecurity-oauth2\\oauth-sso-server\\src\\main\\java"); gc.setAuthor("liucong"); gc.setOpen(false); //生成后是否打开资源管理器 gc.setFileOverride(false); //重新生成时文件是否覆盖 diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/PasswordEncoder.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/PasswordEncoder.java new file mode 100644 index 0000000000000000000000000000000000000000..f676a956fb93579b5f41fefdd33d01f560e8932f --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/PasswordEncoder.java @@ -0,0 +1,22 @@ +package org.micai.platform.resourcesserver.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +/** + * @Author liuCong + * @Date 2022/12/8 下午 5:16 + * @ClassName PasswordEncoder + * @Description + */ +@Configuration +public class PasswordEncoder { + + @Bean + public BCryptPasswordEncoder bCryptPasswordEncoder() { + + return new BCryptPasswordEncoder(); + } + +} diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/ResourceServerConfig.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/ResourceServerConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..513ee3c993c1d96085d7f7fda642434325cd2b8d --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/ResourceServerConfig.java @@ -0,0 +1,141 @@ +package org.micai.platform.resourcesserver.config; + +import org.micai.platform.common.base.config.MicaiPlatformResourcesConfig; +import org.micai.platform.common.base.config.MicaiPlatformTokenConfig; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.resourcesserver.filter.AuthHeaderFilter; +import org.micai.platform.resourcesserver.filter.JWTAuthenticationFilter; +import org.micai.platform.resourcesserver.handler.Http401AuthenticationEntryPoint; +import org.micai.platform.resourcesserver.provider.CustomAuthenticationProvider; +import org.micai.platform.resourcesserver.service.PermissionService; +import org.micai.platform.resourcesserver.service.RolePermissionService; +import org.micai.platform.resourcesserver.service.RoleService; +import org.micai.platform.resourcesserver.service.UserRoleService; +import org.micai.platform.resourcesserver.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; +import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; +import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer; +import org.springframework.security.oauth2.provider.token.store.JwtTokenStore; +import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter; +import org.springframework.security.web.authentication.preauth.x509.X509AuthenticationFilter; + +/** + * @Author liuCong + * @Date 2022/11/24 下午 5:01 + * @ClassName ResourceServerConfigurerAdapter + * @Description + */ +@Configuration +@EnableResourceServer +public class ResourceServerConfig extends ResourceServerConfigurerAdapter { + + /** + * 需要放行的URL + */ + private static final String[] AUTH_WHITELIST = { + // -- register url + "/users/signup", + "/upload/store", + + // -- swagger ui + "/v2/api-docs", + "/swagger-resources", + "/swagger-resources/**", + "/webjars/**", + "/doc.html", + + // other public endpoints of your API may be appended to this array + }; + + @Autowired + private JwtTokenStore jwtTokenStore; + + @Autowired + private UserService userService; + + @Autowired + private BCryptPasswordEncoder bCryptPasswordEncoder; + + @Autowired + private UserRoleService userRoleService; + + @Autowired + private RoleService roleService; + + @Autowired + private RolePermissionService rolePermissionService; + + @Autowired + private PermissionService permissionService; + + @Autowired + private AuthenticationManager authenticationManager; + + @Autowired + private MicaiPlatformResourcesConfig micaiPlatformResourcesConfig; + + @Autowired + private MicaiPlatformTokenConfig micaiPlatformTokenConfig; + + /** + * 配置:设置oauth2验证规则 + * + * @param resources 资源 + * @throws Exception 异常 + */ + @Override + public void configure(ResourceServerSecurityConfigurer resources) throws Exception { + resources + .resourceId(micaiPlatformResourcesConfig.getResourceIds())//设置资源id + .tokenStore(jwtTokenStore) + ; + } + + + /** + * 设置 HTTP 验证规则 + * + * @param http + * @throws Exception + */ + @Override + public void configure(HttpSecurity http) throws Exception { + http + .cors().and().csrf().disable()//禁止跨域 + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)//session管理机制: 不会保存session状态 + + .and() + .exceptionHandling()// 自定义异常处理 + .authenticationEntryPoint(new Http401AuthenticationEntryPoint(ConstantCode.BASE_REALM)) // 未登录处理 + + .and() + // 自定义过滤器 + //.addFilter(new JWTAuthenticationFilter(authenticationManager, signKey)) + .authorizeRequests()// 验证策略 + .antMatchers(AUTH_WHITELIST).permitAll()// 无需验证路径 + .anyRequest().authenticated() // 所有请求需要身份认证 + + .and() + .logout() // 默认注销行为为logout,可以通过下面的方式来修改 + .logoutUrl("/logout") + .logoutSuccessUrl("/")// 设置注销成功后跳转页面,默认是跳转到登录页面; + .permitAll(); + + AuthHeaderFilter authHeaderFilter = new AuthHeaderFilter(); + authHeaderFilter.setAuthHeaderRequestMatcher(micaiPlatformResourcesConfig.getRequestMatcher()); + //为什么要在after + //因为OAuth2AuthenticationProcessingFilter.doFilter()包含了SecurityContextHolder.clearContext(); + http.addFilterAfter(new JWTAuthenticationFilter(authenticationManager,micaiPlatformTokenConfig), AbstractPreAuthenticatedProcessingFilter.class); + http.addFilterAfter(authHeaderFilter, X509AuthenticationFilter.class); + // 使用自定义身份验证组件 + http.authenticationProvider(new CustomAuthenticationProvider(userService, bCryptPasswordEncoder,userRoleService, + roleService,rolePermissionService,permissionService)); + } + +} diff --git a/src/main/java/org/micai/platform/auth/config/SwaggerConfig.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/SwaggerConfig.java similarity index 90% rename from src/main/java/org/micai/platform/auth/config/SwaggerConfig.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/SwaggerConfig.java index 3c7d3b8fb5e5ce6a6ad7a45227c95c0ca5907839..f61b54fc4156f42179b91ef8f6ff7b54ab173f73 100644 --- a/src/main/java/org/micai/platform/auth/config/SwaggerConfig.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/SwaggerConfig.java @@ -1,6 +1,5 @@ -package org.micai.platform.auth.config; +package org.micai.platform.resourcesserver.config; -import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.RequestMethod; @@ -30,7 +29,6 @@ import static cn.hutool.core.collection.CollUtil.newArrayList; */ @Configuration @EnableSwagger2 -@EnableSwaggerBootstrapUI public class SwaggerConfig { // 设置默认TOKEN,方便测试 @@ -42,16 +40,15 @@ public class SwaggerConfig { List pars = new ArrayList(); tokenPar.name("Authorization").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(true).build(); pars.add(tokenPar.build()); - Docket docket = new Docket(DocumentationType.SWAGGER_2) + return new Docket(DocumentationType.SWAGGER_2) .select() - .apis(RequestHandlerSelectors.basePackage("org.micai.platform.auth.controller")) + .apis(RequestHandlerSelectors.basePackage("org.micai.platform.resourcesserver.controller")) .paths(PathSelectors.ant("/**")) .build() .globalOperationParameters(pars) .apiInfo(apiInfo()) .useDefaultResponseMessages(false) .globalResponseMessage(RequestMethod.GET, newArrayList(new ResponseMessageBuilder().code(500).message("500 queue").responseModel(new ModelRef("Error")).build(), new ResponseMessageBuilder().code(403).message("Forbidden!!!!!").build())); - return docket; } private ApiInfo apiInfo() { diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/TokenConfig.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/TokenConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..af7b49aaf377c43fec9bfe902d01013e31b1a70d --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/TokenConfig.java @@ -0,0 +1,44 @@ +package org.micai.platform.resourcesserver.config; + +import org.micai.platform.common.base.config.MicaiPlatformResourcesConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter; +import org.springframework.security.oauth2.provider.token.store.JwtTokenStore; + +/** + * @Author liuCong + * @Date 2022/11/24 下午 3:38 + * @ClassName JwtTokenConfig + * @Description 配置Jwt令牌服务,生成jwt格式的token + */ +@Configuration +public class TokenConfig { + + + // jwt模式token + @Autowired + private MicaiPlatformResourcesConfig micaiPlatformResourcesConfig; + + @Bean + public JwtTokenStore jwtTokenStore(){ + return new JwtTokenStore(jwtAccessTokenConverter()); + } + + + /** + * @Author : liuCong + * @Date : 2022/11/25 下午 4:16 + * @Description :TokenEnhancer的子类,帮助程序在JWT编码的令牌值和OAuth身份验证信息之间进行转换(在两个方向上),同时充当TokenEnhancer授予令牌的时间。 + * @Throws : // + * @Params : [] + * @Return : org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter + **/ + @Bean + public JwtAccessTokenConverter jwtAccessTokenConverter(){ + JwtAccessTokenConverter converter = new JwtAccessTokenConverter(); + converter.setSigningKey(micaiPlatformResourcesConfig.getSignKey()); + return converter; + } +} diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/WebSecurityConfig.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/WebSecurityConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..9092654c06aa6158d7a02def429619c86050cfc9 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/config/WebSecurityConfig.java @@ -0,0 +1,27 @@ +package org.micai.platform.resourcesserver.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +/** + * SpringSecurity的配置 + * 通过SpringSecurity的配置,将JWTLoginFilter,JWTAuthenticationFilter组合在一起 + * + * @author zhaoxinguo on 2017/9/13. + */ +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + + @Bean + @Override + protected AuthenticationManager authenticationManager() throws Exception { + return super.authenticationManager(); + } + +} diff --git a/src/main/java/org/micai/platform/auth/controller/BaseController.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/BaseController.java similarity index 80% rename from src/main/java/org/micai/platform/auth/controller/BaseController.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/BaseController.java index 57497c34048c5fe2b0f4790d22a374fbb34cb772..c80dc6551d2caa1e8c0d7716ba9633b1c90d3ac4 100644 --- a/src/main/java/org/micai/platform/auth/controller/BaseController.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/BaseController.java @@ -1,9 +1,7 @@ -package org.micai.platform.auth.controller; +package org.micai.platform.resourcesserver.controller; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.storage.StorageFactory; -import org.micai.platform.auth.config.SiteOptions; -import org.micai.platform.auth.service.UserService; +import org.micai.platform.resourcesserver.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; @@ -28,10 +26,6 @@ public abstract class BaseController { protected UserService userService; @Autowired protected BCryptPasswordEncoder bCryptPasswordEncoder; - @Autowired - protected StorageFactory storageFactory; - @Autowired - protected SiteOptions siteOptions; /** * 获取用户所拥有的权限列表 diff --git a/src/main/java/org/micai/platform/auth/controller/PermissionController.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/PermissionController.java similarity index 85% rename from src/main/java/org/micai/platform/auth/controller/PermissionController.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/PermissionController.java index aaed3e51ecc7ba0f7805faec55347e1dfcecc78b..48b20e45880ad633731383c548a8ff2fceac4796 100644 --- a/src/main/java/org/micai/platform/auth/controller/PermissionController.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/PermissionController.java @@ -1,19 +1,19 @@ -package org.micai.platform.auth.controller; +package org.micai.platform.resourcesserver.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.bo.PermissionDelBo; -import org.micai.platform.auth.bo.PermissionFindBo; -import org.micai.platform.auth.bo.PermissionSaveBo; -import org.micai.platform.auth.bo.PermissionUpdateBo; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.service.PermissionService; -import org.micai.platform.auth.vo.RoleListVo; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.common.base.result.Result; +import org.micai.platform.resourcesserver.bo.PermissionDelBo; +import org.micai.platform.resourcesserver.bo.PermissionFindBo; +import org.micai.platform.resourcesserver.bo.PermissionSaveBo; +import org.micai.platform.resourcesserver.bo.PermissionUpdateBo; +import org.micai.platform.resourcesserver.service.PermissionService; +import org.micai.platform.resourcesserver.vo.RoleListVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/org/micai/platform/auth/controller/RoleController.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/RoleController.java similarity index 85% rename from src/main/java/org/micai/platform/auth/controller/RoleController.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/RoleController.java index 71683456dccaa45865ff74836d60d00958af45ed..8d91f7313eaa443ebf1b3a22e1470dd36014de54 100644 --- a/src/main/java/org/micai/platform/auth/controller/RoleController.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/RoleController.java @@ -1,19 +1,19 @@ -package org.micai.platform.auth.controller; +package org.micai.platform.resourcesserver.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.bo.RoleDelBo; -import org.micai.platform.auth.bo.RoleFindBo; -import org.micai.platform.auth.bo.RoleSaveBo; -import org.micai.platform.auth.bo.RoleUpdateBo; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.service.RoleService; -import org.micai.platform.auth.vo.UserListVo; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.common.base.result.Result; +import org.micai.platform.resourcesserver.bo.RoleDelBo; +import org.micai.platform.resourcesserver.bo.RoleFindBo; +import org.micai.platform.resourcesserver.bo.RoleSaveBo; +import org.micai.platform.resourcesserver.bo.RoleUpdateBo; +import org.micai.platform.resourcesserver.service.RoleService; +import org.micai.platform.resourcesserver.vo.UserListVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/org/micai/platform/auth/controller/RolePermissionController.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/RolePermissionController.java similarity index 84% rename from src/main/java/org/micai/platform/auth/controller/RolePermissionController.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/RolePermissionController.java index acc5640bb897745f83ad15039f941012cae0c206..4e95137a1348450887713f6fecb868e5904fde66 100644 --- a/src/main/java/org/micai/platform/auth/controller/RolePermissionController.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/RolePermissionController.java @@ -1,16 +1,16 @@ -package org.micai.platform.auth.controller; +package org.micai.platform.resourcesserver.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.bo.RolePermissionDelBo; -import org.micai.platform.auth.bo.RolePermissionSaveBo; -import org.micai.platform.auth.bo.RolePermissionUpdateBo; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.service.RolePermissionService; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.common.base.result.Result; +import org.micai.platform.resourcesserver.bo.RolePermissionDelBo; +import org.micai.platform.resourcesserver.bo.RolePermissionSaveBo; +import org.micai.platform.resourcesserver.bo.RolePermissionUpdateBo; +import org.micai.platform.resourcesserver.service.RolePermissionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/org/micai/platform/auth/controller/UserController.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/UserController.java similarity index 78% rename from src/main/java/org/micai/platform/auth/controller/UserController.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/UserController.java index a36e4b59cb85f3bdcbe9494ca8b6c21098375614..70d7232fa92103718d14e0bdb8d3e4e51c5383d7 100644 --- a/src/main/java/org/micai/platform/auth/controller/UserController.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/UserController.java @@ -1,26 +1,29 @@ -package org.micai.platform.auth.controller; +package org.micai.platform.resourcesserver.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.bo.UserDelBo; -import org.micai.platform.auth.bo.UserFindBo; -import org.micai.platform.auth.bo.UserSaveBo; -import org.micai.platform.auth.bo.UserUpdateBo; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.entity.User; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.vo.UserListVo; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.common.base.result.Result; +import org.micai.platform.resourcesserver.bo.UserDelBo; +import org.micai.platform.resourcesserver.bo.UserFindBo; +import org.micai.platform.resourcesserver.bo.UserSaveBo; +import org.micai.platform.resourcesserver.bo.UserUpdateBo; +import org.micai.platform.resourcesserver.entity.User; +import org.micai.platform.resourcesserver.vo.UserListVo; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * @author zhaoxinguo on 2017/9/13. @@ -49,20 +52,6 @@ public class UserController extends BaseController { return new Result(ConstantEnum.SUCCESS,flag); } - /** - * 获取用户列表 - * @return - */ - @ApiIgnore - @ApiOperation(value = "获取用户列表old",notes = "获取用户列表old") - @GetMapping("/userList") - public Map userList(){ - List users = userService.findUserList(); - Map map = new HashMap(); - map.put("users",users); - return map; - } - /** * 获取用户权限 * @return @@ -70,9 +59,9 @@ public class UserController extends BaseController { @ApiIgnore @ApiOperation(value = "获取用户权限",notes = "获取用户权限") @GetMapping("/authorityList") + @PreAuthorize("hasAnyAuthority('sys:user:authorityList')") public List authorityList(){ - List authentication = getAuthentication(); - return authentication; + return getAuthentication(); } @@ -82,7 +71,7 @@ public class UserController extends BaseController { */ @ApiOperation(value = "获取用户列表", notes = "获取用户列表") @PostMapping("/list") - @PreAuthorize("hasAnyAuthority('sys:user:List')") + @PreAuthorize("hasAnyAuthority('sys:user:list')") public Result getUserList(@RequestBody UserFindBo bo){ Result result; try { diff --git a/src/main/java/org/micai/platform/auth/controller/UserRoleController.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/UserRoleController.java similarity index 84% rename from src/main/java/org/micai/platform/auth/controller/UserRoleController.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/UserRoleController.java index b2d7254552a04c44d036ad1152c2d10a7f606bdb..d1e7f7592cab1e17862cb9f6f89c86458fcecf1a 100644 --- a/src/main/java/org/micai/platform/auth/controller/UserRoleController.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/controller/UserRoleController.java @@ -1,16 +1,16 @@ -package org.micai.platform.auth.controller; +package org.micai.platform.resourcesserver.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.bo.UserRoleDelBo; -import org.micai.platform.auth.bo.UserRoleSaveBo; -import org.micai.platform.auth.bo.UserRoleUpdateBo; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.service.UserRoleService; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.common.base.result.Result; +import org.micai.platform.resourcesserver.bo.UserRoleDelBo; +import org.micai.platform.resourcesserver.bo.UserRoleSaveBo; +import org.micai.platform.resourcesserver.bo.UserRoleUpdateBo; +import org.micai.platform.resourcesserver.service.UserRoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/org/micai/platform/auth/dto/UserAuthenticationDto.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/dto/UserAuthenticationDto.java similarity index 90% rename from src/main/java/org/micai/platform/auth/dto/UserAuthenticationDto.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/dto/UserAuthenticationDto.java index 70b2701880cc3ca182cd7dd8ea42ada4fa422038..388380d3f635806bc0372ebc7c62f91aea58f639 100644 --- a/src/main/java/org/micai/platform/auth/dto/UserAuthenticationDto.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/dto/UserAuthenticationDto.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.dto; +package org.micai.platform.resourcesserver.dto; import io.swagger.annotations.ApiModel; import lombok.Data; diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/Permission.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/Permission.java new file mode 100644 index 0000000000000000000000000000000000000000..5bbe429a7194a2cb578701e73bd2a021bedabb42 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/Permission.java @@ -0,0 +1,65 @@ +package org.micai.platform.resourcesserver.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author liucong + * @since 2021-12-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Permission对象", description="") +public class Permission implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "权限编码") + private String permissionCode; + + @ApiModelProperty(value = "权限名称") + private String permissionName; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "状态: 01 启用 02停用") + private String status; + + @ApiModelProperty(value = "创建人") + private Long createUserId; + + @ApiModelProperty(value = "创建时间") + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @ApiModelProperty(value = "修改人") + private Long updateUserId; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + @ApiModelProperty(value = "版本") + @Version + @TableField(fill = FieldFill.UPDATE, condition = SqlCondition.EQUAL) + private Long version; + + +} diff --git a/src/main/java/org/micai/platform/auth/entity/SysDictItem.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/Role.java similarity index 70% rename from src/main/java/org/micai/platform/auth/entity/SysDictItem.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/Role.java index f16e58462832f0a3e804605ed5afe27f205a3786..aa8e8f398f9764f355eeed7c153e16235dcf7b39 100644 --- a/src/main/java/org/micai/platform/auth/entity/SysDictItem.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/Role.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.entity; +package org.micai.platform.resourcesserver.entity; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; @@ -16,34 +16,31 @@ import java.util.Date; *

* * @author liucong - * @since 2021-12-10 + * @since 2021-12-04 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="SysDictItem对象", description="") -public class SysDictItem implements Serializable { +@ApiModel(value="Role对象", description="") +public class Role implements Serializable { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键id") + @ApiModelProperty(value = "主键") @TableId(value = "id", type = IdType.AUTO) private Long id; - @ApiModelProperty(value = "字典表id") - private Long dictId; + @ApiModelProperty(value = "角色编码") + private String roleCode; - @ApiModelProperty(value = "字典项文本") - private String itemText; - - @ApiModelProperty(value = "字典项值") - private String itemValue; + @ApiModelProperty(value = "角色名称") + private String roleName; @ApiModelProperty(value = "描述") private String description; - @ApiModelProperty(value = "排序") - private Integer sn; + @ApiModelProperty(value = "状态: 01 启用 02停用") + private String status; @ApiModelProperty(value = "创建人") private Long createUserId; @@ -59,11 +56,9 @@ public class SysDictItem implements Serializable { @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; - @ApiModelProperty(value = "状态: 01 启用 02停用") - private String status; - @ApiModelProperty(value = "版本号") @Version + @TableField(fill = FieldFill.UPDATE, condition = SqlCondition.EQUAL) private Long version; diff --git a/src/main/java/org/micai/platform/auth/entity/PermissionMenu.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/RolePermission.java similarity index 82% rename from src/main/java/org/micai/platform/auth/entity/PermissionMenu.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/RolePermission.java index 3518962d513ab44bbdf39b8260bd580e48094cf5..4dafa619507a8f7d692974bfd296e92c1c291e29 100644 --- a/src/main/java/org/micai/platform/auth/entity/PermissionMenu.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/RolePermission.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.entity; +package org.micai.platform.resourcesserver.entity; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; @@ -16,25 +16,25 @@ import java.util.Date; *

* * @author liucong - * @since 2021-12-06 + * @since 2021-12-04 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="PermissionMenu对象", description="") -public class PermissionMenu implements Serializable { +@ApiModel(value="RolePermission对象", description="") +public class RolePermission implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Long id; + @ApiModelProperty(value = "角色id") + private Long roleId; + @ApiModelProperty(value = "权限id") private Long permissionId; - @ApiModelProperty(value = "菜单id") - private Long menuId; - @ApiModelProperty(value = "创建人id") private Long createUserId; diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/User.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/User.java new file mode 100644 index 0000000000000000000000000000000000000000..7f39f884820c7f362318ba10b2dc9e5d9a121dfc --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/User.java @@ -0,0 +1,68 @@ +package org.micai.platform.resourcesserver.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author liucong + * @since 2021-12-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="User对象", description="") +public class User implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "用户名") + private String username; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "手机号") + private String phone; + + @ApiModelProperty(value = "邮箱") + private String email; + + @ApiModelProperty(value = "创建人") + private Long createUserId; + + @ApiModelProperty(value = "创建时间") + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @ApiModelProperty(value = "修改人") + private Long updateUserId; + + @ApiModelProperty(value = "修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + @ApiModelProperty(value = "状态: 01 启用 02停用") + private String status; + + @ApiModelProperty(value = "版本") + @Version + @TableField(fill = FieldFill.UPDATE, condition = SqlCondition.EQUAL) + private Long version; + + +} diff --git a/src/main/java/org/micai/platform/auth/entity/OrganUser.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/UserRole.java similarity index 74% rename from src/main/java/org/micai/platform/auth/entity/OrganUser.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/UserRole.java index bd5b74d64e4402bde4f468099fec0bf8a1c7773a..2d5f44b64ea5684f568eb59c1032e9b6d2b68e3c 100644 --- a/src/main/java/org/micai/platform/auth/entity/OrganUser.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/entity/UserRole.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.entity; +package org.micai.platform.resourcesserver.entity; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; @@ -16,27 +16,28 @@ import java.util.Date; *

* * @author liucong - * @since 2021-12-06 + * @since 2021-12-04 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="OrganUser对象", description="") -public class OrganUser implements Serializable { +@ApiModel(value="UserRole对象", description="") +public class UserRole implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id") @TableId(value = "id", type = IdType.AUTO) private Long id; - @ApiModelProperty(value = "组织机构id") - private Long organId; - @ApiModelProperty(value = "用户id") private Long userId; - @ApiModelProperty(value = "创建人") - private Long createUserId; + @ApiModelProperty(value = "角色id") + private Long roleId; + + @ApiModelProperty(value = "创建用户id") + private Long creatUserId; @ApiModelProperty(value = "创建时间") @TableField(fill = FieldFill.INSERT) diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/filter/AuthHeaderFilter.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/filter/AuthHeaderFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..75c0b8a2028d90486b9244e94c81503472b5b75e --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/filter/AuthHeaderFilter.java @@ -0,0 +1,103 @@ +package org.micai.platform.resourcesserver.filter; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.common.base.constant.ConstantCode; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.util.Assert; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; +import java.util.Vector; + +/** + * @Author liuCong + * @Date 2022/12/12 上午 9:58 + * @ClassName AuthHeaderFilter + * @Description + */ +@Slf4j +public class AuthHeaderFilter implements Filter { + + //拦截接口让OAuth2AuthenticationProcessingFilter去验证 + private final List authOAuth2RequestMatcher = new ArrayList<>(); + + public void setAuthHeaderRequestMatcher(List oauth2AuthList) { + Assert.notNull(authOAuth2RequestMatcher, "authOAuth2RequestMatcher cannot be null"); + + if (ObjectUtil.isNotEmpty(oauth2AuthList)) { + for (String oauth2Auth : oauth2AuthList) { + authOAuth2RequestMatcher.add(new AntPathRequestMatcher(oauth2Auth)); + } + } + log.info("init request matcher list:==========================>>>>>>>>>>>>>>>>> \n" + + "authOAuth2RequestMatcher{} ", authOAuth2RequestMatcher); + } + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + HttpServletRequest request = (HttpServletRequest) servletRequest; + HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper((HttpServletRequest) servletRequest) { + + + /** + * 得到头 + *为了让在 + *JWTAuthenticationFilter 获取token时为空 + * @param name 名字 + * @return {@link String} + */ + @Override + public String getHeader(String name) { + if (ObjectUtil.isEmpty(authOAuth2RequestMatcher)){ + return super.getHeader(name); + } + boolean isMatcher = Boolean.TRUE; + if (ObjectUtil.isNotEmpty(authOAuth2RequestMatcher)) { + for (AntPathRequestMatcher antPathRequestMatcher : authOAuth2RequestMatcher) { + if (antPathRequestMatcher.matches(request) && ConstantCode.AUTHORIZATION.equalsIgnoreCase(name)) { + isMatcher = Boolean.FALSE; + break; + } + } + } + if (isMatcher){ + return super.getHeader(name); + }else { + return null; + } + } + + /** + * 重写得到头方法 + * 为了让在 + * OAuth2AuthenticationProcessingFilter + * org.springframework.security.oauth2.provider.authentication.BearerTokenExtractor#extractHeaderToken(javax.servlet.http.HttpServletRequest) + * 获取的token时候为空 + * @param name 名字 + * @return {@link Enumeration}<{@link String}> + */ + @Override + public Enumeration getHeaders(String name) { + if (ObjectUtil.isNotEmpty(authOAuth2RequestMatcher)) { + for (AntPathRequestMatcher antPathRequestMatcher : authOAuth2RequestMatcher) { + if (antPathRequestMatcher.matches(request) && ConstantCode.AUTHORIZATION.equalsIgnoreCase(name)) { + return super.getHeaders(name); + } + } + } + return new Vector().elements(); + } + }; + filterChain.doFilter(requestWrapper, servletResponse); + } +} diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/filter/JWTAuthenticationFilter.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/filter/JWTAuthenticationFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..aecfc42a83658e2c84f0b25b634bb97d25201b20 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/filter/JWTAuthenticationFilter.java @@ -0,0 +1,149 @@ +package org.micai.platform.resourcesserver.filter; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.MalformedJwtException; +import io.jsonwebtoken.SignatureAlgorithm; +import io.jsonwebtoken.SignatureException; +import io.jsonwebtoken.UnsupportedJwtException; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.common.base.config.MicaiPlatformTokenConfig; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.resourcesserver.service.impl.GrantedAuthorityImpl; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * 自定义JWT认证过滤器 + * 该类继承自BasicAuthenticationFilter,在doFilterInternal方法中, + * 从http头的Authorization 项读取token数据,然后用Jwts包提供的方法校验token的合法性。 + * 如果校验通过,就认为这是一个取得授权的合法请求 + * @author zhaoxinguo on 2017/9/13. + */ +@Slf4j +public class JWTAuthenticationFilter extends BasicAuthenticationFilter { + + private final MicaiPlatformTokenConfig micaiPlatformTokenConfig; + + public JWTAuthenticationFilter(AuthenticationManager authenticationManager, MicaiPlatformTokenConfig micaiPlatformTokenConfig) { + super(authenticationManager); + this.micaiPlatformTokenConfig = micaiPlatformTokenConfig; + } + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { + String header = request.getHeader(micaiPlatformTokenConfig.getTokenName()); + if (ObjectUtil.isEmpty(header) || !header.startsWith(micaiPlatformTokenConfig.getTokenPrefix())) { + chain.doFilter(request, response); + return; + } + UsernamePasswordAuthenticationToken authentication = getAuthentication(request, response); + SecurityContextHolder.getContext().setAuthentication(authentication); + chain.doFilter(request, response); + } + + private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + try { + long start = System.currentTimeMillis(); + String token = request.getHeader(micaiPlatformTokenConfig.getTokenName()); + if (ObjectUtil.isEmpty(token)) { + throw new PlatformException(ConstantEnum.TOKEN_MISS); + } + // parse the token. + String user = null; + Claims claims = Jwts.parser() + .setSigningKey(micaiPlatformTokenConfig.getSignKey()) + .parseClaimsJws(token.replace(micaiPlatformTokenConfig.getTokenPrefix(), "")) + .getBody(); + log.info("相关信息 : {}",claims.getSubject()); + // token签发时间 + long issuedAt = claims.getIssuedAt().getTime(); + // 当前时间 + long currentTimeMillis = System.currentTimeMillis(); + // token过期时间 + long expirationTime = claims.getExpiration().getTime(); + // 1. 签发时间 < 当前时间 < (签发时间+((token过期时间-token签发时间)/2)) 不刷新token + // 2. (签发时间+((token过期时间-token签发时间)/2)) < 当前时间 < token过期时间 刷新token并返回给前端 + // 3. tokne过期时间 < 当前时间 跳转登录,重新登录获取token + // 验证token时间有效性 + if ((issuedAt + ((expirationTime - issuedAt) / 2)) < currentTimeMillis && currentTimeMillis < expirationTime) { + + // 重新生成token start + Calendar calendar = Calendar.getInstance(); + Date now = calendar.getTime(); + // 设置签发时间 + calendar.setTime(new Date()); + // 设置过期时间 + calendar.add(Calendar.MINUTE, Long.bitCount(expirationTime)); + Date time = calendar.getTime(); + String refreshToken = Jwts.builder() + .setSubject(claims.getSubject()) + .setIssuedAt(now)//签发时间 + .setExpiration(time)//过期时间 + .signWith(SignatureAlgorithm.HS512, micaiPlatformTokenConfig.getSignKey()) //采用什么算法是可以自己选择的,不一定非要采用HS512 + .compact(); + // 重新生成token end + + // 主动刷新token,并返回给前端 + response.addHeader(ConstantCode.REFRESH_TOKEN, refreshToken); + } + long end = System.currentTimeMillis(); + log.info("执行时间: " + (end - start) + " 毫秒"); + user = claims.getSubject(); + if (ObjectUtil.isNotEmpty(user)) { + String authStr = user.split("-")[ConstantCode.INT_TWO]; + List authList = JSON.parseArray(authStr, String.class); + ArrayList authorities = new ArrayList<>(); + for (String auth : authList) { + authorities.add(new GrantedAuthorityImpl(auth)); + } + return new UsernamePasswordAuthenticationToken(user, null, authorities); + } + } catch (ExpiredJwtException e) { + // 异常捕获、发送到ExpiredJwtException + request.setAttribute("expiredJwtException", e); + // 将异常分发到ExpiredJwtException控制器 + request.getRequestDispatcher("/expiredJwtException").forward(request, response); + } catch (UnsupportedJwtException e) { + // 异常捕获、发送到UnsupportedJwtException + request.setAttribute("unsupportedJwtException", e); + // 将异常分发到UnsupportedJwtException控制器 + request.getRequestDispatcher("/unsupportedJwtException").forward(request, response); + } catch (MalformedJwtException e) { + // 异常捕获、发送到MalformedJwtException + request.setAttribute("malformedJwtException", e); + // 将异常分发到MalformedJwtException控制器 + request.getRequestDispatcher("/malformedJwtException").forward(request, response); + } catch (SignatureException e) { + // 异常捕获、发送到SignatureException + request.setAttribute("signatureException", e); + // 将异常分发到SignatureException控制器 + request.getRequestDispatcher("/signatureException").forward(request, response); + } catch (IllegalArgumentException e) { + // 异常捕获、发送到IllegalArgumentException + request.setAttribute("illegalArgumentException", e); + // 将异常分发到IllegalArgumentException控制器 + request.getRequestDispatcher("/illegalArgumentException").forward(request, response); + } + return null; + } + +} diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/handler/Http401AuthenticationEntryPoint.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/handler/Http401AuthenticationEntryPoint.java new file mode 100644 index 0000000000000000000000000000000000000000..ca77a9a7401408a6ace512e124a7c2ef88a0d0b2 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/handler/Http401AuthenticationEntryPoint.java @@ -0,0 +1,31 @@ +package org.micai.platform.resourcesserver.handler; + +import org.micai.platform.common.base.constant.ConstantCode; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * @Auther: zhaoxinguo + * @Date: 2018/9/20 14:55 + * @Description: 自定义认证拦截器 + */ +public class Http401AuthenticationEntryPoint implements AuthenticationEntryPoint { + + private final String headerValue; + + public Http401AuthenticationEntryPoint(String headerValue) { + this.headerValue = headerValue; + } + + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { + response.setHeader(ConstantCode.AUTHORIZATION, this.headerValue); + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getMessage()); + } + +} diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/handler/MyMetaObjectHandler.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/handler/MyMetaObjectHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..c99cdb36f132282e101a19b020e4e8fac79728c7 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/handler/MyMetaObjectHandler.java @@ -0,0 +1,39 @@ +package org.micai.platform.resourcesserver.handler; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * @Author liuCong + * @Date 2021/12/11 11:36 + * @ClassName MyMetaObjectHandler + * @Description + */ +@Component +public class MyMetaObjectHandler implements MetaObjectHandler { + + private final String CREATE_TIME = "createTime"; + private final String UPDATE_TIME = "updateTime"; + private final String VERSION = "version"; + /** + * 插入时的填充策略 + * @param metaObject + */ + @Override + public void insertFill(MetaObject metaObject) { + this.setFieldValByName(CREATE_TIME, new Date(), metaObject); + this.setFieldValByName(UPDATE_TIME, new Date(), metaObject); + } + + /** + * 更新时的填充策略 + * @param metaObject + */ + @Override + public void updateFill(MetaObject metaObject) { + this.setFieldValByName(UPDATE_TIME, new Date(), metaObject); + } +} diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/interceptor/PlusInterceptor.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/interceptor/PlusInterceptor.java new file mode 100644 index 0000000000000000000000000000000000000000..e5e0dce90ddd9f8ffe0006052b48d32a40d0b3a0 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/interceptor/PlusInterceptor.java @@ -0,0 +1,25 @@ +package org.micai.platform.resourcesserver.interceptor; + + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; + +/** + * @Author liuCong + * @Date 2021/12/13 16:06 + * @ClassName MybatisPlusInterceptor + * @Description + */ +@Configuration +public class PlusInterceptor { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } +} diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/PermissionMapper.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/PermissionMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..81a2f504da08ccdda2e6582cef58d3c8602df9a7 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/PermissionMapper.java @@ -0,0 +1,16 @@ +package org.micai.platform.resourcesserver.mapper; + +import org.micai.platform.resourcesserver.entity.Permission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author liucong + * @since 2021-12-04 + */ +public interface PermissionMapper extends BaseMapper { + +} diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/RoleMapper.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/RoleMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..9a2b7f97244605a9f8353ec6b28d1179be657c9d --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/RoleMapper.java @@ -0,0 +1,16 @@ +package org.micai.platform.resourcesserver.mapper; + +import org.micai.platform.resourcesserver.entity.Role; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author liucong + * @since 2021-12-04 + */ +public interface RoleMapper extends BaseMapper { + +} diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/RolePermissionMapper.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/RolePermissionMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..e77154b1655124d4429b124a7ec0349839ac9bf7 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/RolePermissionMapper.java @@ -0,0 +1,16 @@ +package org.micai.platform.resourcesserver.mapper; + +import org.micai.platform.resourcesserver.entity.RolePermission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author liucong + * @since 2021-12-04 + */ +public interface RolePermissionMapper extends BaseMapper { + +} diff --git a/src/main/java/org/micai/platform/auth/mapper/UserMapper.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/UserMapper.java similarity index 59% rename from src/main/java/org/micai/platform/auth/mapper/UserMapper.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/UserMapper.java index 966c526359930d94320fc50f99bd2817941d9edc..082527b6b6726aa07f9ba2d2cf898db7b9191bdf 100644 --- a/src/main/java/org/micai/platform/auth/mapper/UserMapper.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/UserMapper.java @@ -1,7 +1,7 @@ -package org.micai.platform.auth.mapper; +package org.micai.platform.resourcesserver.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.micai.platform.auth.entity.User; +import org.micai.platform.resourcesserver.entity.User; public interface UserMapper extends BaseMapper { diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/UserRoleMapper.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/UserRoleMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..6c1ea3f2ca1c639dbe3b4e691698009b2e7a2731 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/mapper/UserRoleMapper.java @@ -0,0 +1,16 @@ +package org.micai.platform.resourcesserver.mapper; + +import org.micai.platform.resourcesserver.entity.UserRole; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author liucong + * @since 2021-12-04 + */ +public interface UserRoleMapper extends BaseMapper { + +} diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/provider/CustomAuthenticationProvider.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/provider/CustomAuthenticationProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..eb5e1da8fc81c948b9566b26173c1170d6e8746b --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/provider/CustomAuthenticationProvider.java @@ -0,0 +1,127 @@ +package org.micai.platform.resourcesserver.provider; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.MyAuthException; +import org.micai.platform.resourcesserver.entity.*; +import org.micai.platform.resourcesserver.service.*; +import org.springframework.security.authentication.AuthenticationProvider; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.AuthorityUtils; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 自定义身份认证验证组件 + * + * @author zhaoxinguo on 2017/9/12. + */ +@Slf4j +public class CustomAuthenticationProvider implements AuthenticationProvider { + + private UserService userService; + + private BCryptPasswordEncoder bCryptPasswordEncoder; + + private UserRoleService userRoleService; + + private RoleService roleService; + + private RolePermissionService rolePermissionService; + + private PermissionService permissionService; + + + public CustomAuthenticationProvider(UserService userService, BCryptPasswordEncoder bCryptPasswordEncoder, UserRoleService userRoleService, + RoleService roleService, RolePermissionService rolePermissionService, PermissionService permissionService) { + this.userService = userService; + this.bCryptPasswordEncoder = bCryptPasswordEncoder; + this.userRoleService = userRoleService; + this.roleService = roleService; + this.rolePermissionService = rolePermissionService; + this.permissionService = permissionService; + } + + /** + *执行与以下合同相同的身份验证 + * {@link org.springframework.security.authentication.AuthenticationManager#authenticate(Authentication)} + *。 + * + * @param authentication 身份验证请求对象。 + * + * @返回包含凭证的经过完全认证的对象。 可能会回来 + * null (如果 AuthenticationProvider 无法支持) + * 对传递的 Authentication 对象的身份验证。 在这种情况下, + * 支持所提供的下一个 AuthenticationProvider + * 将尝试 Authentication 类。 + * + * @throws AuthenticationException 如果身份验证失败。 + */ + @Override + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + // 获取认证的用户名 & 密码 + String name = authentication.getName(); + String password = authentication.getCredentials().toString(); + // 认证逻辑 + User userDetails = userService.getOne(new LambdaQueryWrapper().eq(User::getUsername,name)); + if (ObjectUtil.isEmpty(userDetails)) { + throw new MyAuthException(ConstantEnum.USER_CODE_ERROR); + } + + if (!bCryptPasswordEncoder.matches(password, userDetails.getPassword())) { + throw new MyAuthException(ConstantEnum.USER_CODE_ERROR); + } + //获取用户权限 + List userRoleList = userRoleService.list(new QueryWrapper().lambda().eq(UserRole::getUserId,userDetails.getId())); + if (ObjectUtil.isEmpty(userRoleList)){ + throw new MyAuthException(ConstantEnum.NO_ROLE); + } + List roleIdList = userRoleList.stream().map(UserRole::getRoleId).collect(Collectors.toList()); + List roleList = roleService.list(new QueryWrapper().lambda() + .in(Role::getId,roleIdList).eq(Role::getStatus, ConstantCode.STR_Z_ONE)); + if (ObjectUtil.isEmpty(roleList)){ + throw new MyAuthException(ConstantEnum.NO_ROLE); + } + List rolePermissionList = rolePermissionService.list(new QueryWrapper().lambda() + .in(RolePermission::getRoleId,roleIdList)); + if (ObjectUtil.isEmpty(rolePermissionList)){ + throw new MyAuthException(ConstantEnum.NO_PERMISSION); + } + List permissionIdList = rolePermissionList.stream().map(RolePermission::getPermissionId).collect(Collectors.toList()); + List permissionList = permissionService.list(new QueryWrapper().lambda() + .in(Permission::getId,permissionIdList).eq(Permission::getStatus,ConstantCode.STR_Z_ONE)); + if (ObjectUtil.isEmpty(permissionList)){ + throw new MyAuthException(ConstantEnum.NO_PERMISSION); + } + + String roleStr = roleList.stream().distinct().map(Role::getRoleCode).collect(Collectors.joining(",")); + String permissionStr = permissionList.stream().distinct().map(Permission::getPermissionCode).collect(Collectors.joining(",")); + String authStr = roleStr + ConstantCode.SEPARATOR + permissionStr; + // 这里设置权限和角色 + List grantedAuthorities = AuthorityUtils.commaSeparatedStringToAuthorityList(authStr); + // 生成令牌 这里令牌里面存入了:name,password,authorities, 当然你也可以放其他内容 + name = userDetails.getId() + "-" + name; + log.info("authStr:{} , 用户:{}", authStr, name); + return new UsernamePasswordAuthenticationToken(name, password, grantedAuthorities); + } + + /** + * 是否可以提供输入类型的认证服务 + * @param authentication + * @return + */ + @Override + public boolean supports(Class authentication) { + return authentication.equals(UsernamePasswordAuthenticationToken.class); + } + +} diff --git a/src/main/java/org/micai/platform/auth/service/PermissionService.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/PermissionService.java similarity index 56% rename from src/main/java/org/micai/platform/auth/service/PermissionService.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/PermissionService.java index 7d213f47cf8da1ac36ec73e197de47ce0d369954..ca8a3cbd3748829f4e5b0c522b69500d6b422f94 100644 --- a/src/main/java/org/micai/platform/auth/service/PermissionService.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/PermissionService.java @@ -1,13 +1,13 @@ -package org.micai.platform.auth.service; +package org.micai.platform.resourcesserver.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import org.micai.platform.auth.bo.PermissionDelBo; -import org.micai.platform.auth.bo.PermissionFindBo; -import org.micai.platform.auth.bo.PermissionSaveBo; -import org.micai.platform.auth.bo.PermissionUpdateBo; -import org.micai.platform.auth.entity.Permission; -import org.micai.platform.auth.vo.RoleListVo; +import org.micai.platform.resourcesserver.bo.PermissionDelBo; +import org.micai.platform.resourcesserver.bo.PermissionFindBo; +import org.micai.platform.resourcesserver.bo.PermissionSaveBo; +import org.micai.platform.resourcesserver.bo.PermissionUpdateBo; +import org.micai.platform.resourcesserver.entity.Permission; +import org.micai.platform.resourcesserver.vo.RoleListVo; /** *

diff --git a/src/main/java/org/micai/platform/auth/service/RolePermissionService.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/RolePermissionService.java similarity index 55% rename from src/main/java/org/micai/platform/auth/service/RolePermissionService.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/RolePermissionService.java index e1697c83ed266cb28c859389e89f56d70b071086..4a17ca55f1280220d94c12e1084bd20323525ac5 100644 --- a/src/main/java/org/micai/platform/auth/service/RolePermissionService.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/RolePermissionService.java @@ -1,9 +1,9 @@ -package org.micai.platform.auth.service; +package org.micai.platform.resourcesserver.service; -import org.micai.platform.auth.bo.RolePermissionDelBo; -import org.micai.platform.auth.bo.RolePermissionSaveBo; -import org.micai.platform.auth.bo.RolePermissionUpdateBo; -import org.micai.platform.auth.entity.RolePermission; +import org.micai.platform.resourcesserver.bo.RolePermissionDelBo; +import org.micai.platform.resourcesserver.bo.RolePermissionSaveBo; +import org.micai.platform.resourcesserver.bo.RolePermissionUpdateBo; +import org.micai.platform.resourcesserver.entity.RolePermission; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/src/main/java/org/micai/platform/auth/service/RoleService.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/RoleService.java similarity index 55% rename from src/main/java/org/micai/platform/auth/service/RoleService.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/RoleService.java index 9a925dc3a9e962f35d0a34b329a8d0d101aeb66c..ffe069699e31152eeaa1ac370c3aa752785dfb01 100644 --- a/src/main/java/org/micai/platform/auth/service/RoleService.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/RoleService.java @@ -1,13 +1,13 @@ -package org.micai.platform.auth.service; +package org.micai.platform.resourcesserver.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.micai.platform.auth.bo.RoleDelBo; -import org.micai.platform.auth.bo.RoleFindBo; -import org.micai.platform.auth.bo.RoleSaveBo; -import org.micai.platform.auth.bo.RoleUpdateBo; -import org.micai.platform.auth.entity.Role; +import org.micai.platform.resourcesserver.bo.RoleDelBo; +import org.micai.platform.resourcesserver.bo.RoleFindBo; +import org.micai.platform.resourcesserver.bo.RoleSaveBo; +import org.micai.platform.resourcesserver.bo.RoleUpdateBo; +import org.micai.platform.resourcesserver.entity.Role; import com.baomidou.mybatisplus.extension.service.IService; -import org.micai.platform.auth.vo.UserListVo; +import org.micai.platform.resourcesserver.vo.UserListVo; /** *

diff --git a/src/main/java/org/micai/platform/auth/service/UserRoleService.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/UserRoleService.java similarity index 55% rename from src/main/java/org/micai/platform/auth/service/UserRoleService.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/UserRoleService.java index 45ce2f08ed177b87894796689db90aa21236dc10..8d3c12bb37df96719e2e32251a75c5ebfee1c7ce 100644 --- a/src/main/java/org/micai/platform/auth/service/UserRoleService.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/UserRoleService.java @@ -1,9 +1,9 @@ -package org.micai.platform.auth.service; +package org.micai.platform.resourcesserver.service; -import org.micai.platform.auth.bo.UserRoleDelBo; -import org.micai.platform.auth.bo.UserRoleSaveBo; -import org.micai.platform.auth.bo.UserRoleUpdateBo; -import org.micai.platform.auth.entity.UserRole; +import org.micai.platform.resourcesserver.bo.UserRoleDelBo; +import org.micai.platform.resourcesserver.bo.UserRoleSaveBo; +import org.micai.platform.resourcesserver.bo.UserRoleUpdateBo; +import org.micai.platform.resourcesserver.entity.UserRole; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/src/main/java/org/micai/platform/auth/service/UserService.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/UserService.java similarity index 56% rename from src/main/java/org/micai/platform/auth/service/UserService.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/UserService.java index 68ff57d87d80466f88a85bddd0404acd7b8ea433..3027e0648bb8ff4972fb72cd5365dc7f25c92c6f 100644 --- a/src/main/java/org/micai/platform/auth/service/UserService.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/UserService.java @@ -1,13 +1,13 @@ -package org.micai.platform.auth.service; +package org.micai.platform.resourcesserver.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import org.micai.platform.auth.bo.UserDelBo; -import org.micai.platform.auth.bo.UserFindBo; -import org.micai.platform.auth.bo.UserSaveBo; -import org.micai.platform.auth.bo.UserUpdateBo; -import org.micai.platform.auth.entity.User; -import org.micai.platform.auth.vo.UserListVo; +import org.micai.platform.resourcesserver.bo.UserDelBo; +import org.micai.platform.resourcesserver.bo.UserFindBo; +import org.micai.platform.resourcesserver.bo.UserSaveBo; +import org.micai.platform.resourcesserver.bo.UserUpdateBo; +import org.micai.platform.resourcesserver.entity.User; +import org.micai.platform.resourcesserver.vo.UserListVo; import java.util.List; diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/GrantedAuthorityImpl.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/GrantedAuthorityImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..551c06f36c808a48c6d256d4e6dd0392548200b2 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/GrantedAuthorityImpl.java @@ -0,0 +1,26 @@ +package org.micai.platform.resourcesserver.service.impl; + +import org.springframework.security.core.GrantedAuthority; + +/** + * 权限类型,负责存储权限和角色 + * + * @author zhaoxinguo on 2017/9/12. + */ +public class GrantedAuthorityImpl implements GrantedAuthority { + + private String authority; + + public GrantedAuthorityImpl(String authority) { + this.authority = authority; + } + + public void setAuthority(String authority) { + this.authority = authority; + } + + @Override + public String getAuthority() { + return this.authority; + } +} diff --git a/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/PermissionServiceImpl.java similarity index 78% rename from src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/PermissionServiceImpl.java index b5aa464d9ec55b2912b4f849b41f14d19786d7d6..d948a3a9ef6b9257468632cc21a1f459df85be23 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/PermissionServiceImpl.java @@ -1,23 +1,23 @@ -package org.micai.platform.auth.service.impl; +package org.micai.platform.resourcesserver.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.bo.PermissionDelBo; -import org.micai.platform.auth.bo.PermissionFindBo; -import org.micai.platform.auth.bo.PermissionSaveBo; -import org.micai.platform.auth.bo.PermissionUpdateBo; -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.dto.UserAuthenticationDto; -import org.micai.platform.auth.entity.Permission; -import org.micai.platform.auth.mapper.PermissionMapper; -import org.micai.platform.auth.service.PermissionService; -import org.micai.platform.auth.utils.AuthenticationManger; -import org.micai.platform.auth.vo.RoleListVo; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.resourcesserver.bo.PermissionDelBo; +import org.micai.platform.resourcesserver.bo.PermissionFindBo; +import org.micai.platform.resourcesserver.bo.PermissionSaveBo; +import org.micai.platform.resourcesserver.bo.PermissionUpdateBo; +import org.micai.platform.resourcesserver.dto.UserAuthenticationDto; +import org.micai.platform.resourcesserver.entity.Permission; +import org.micai.platform.resourcesserver.mapper.PermissionMapper; +import org.micai.platform.resourcesserver.service.PermissionService; +import org.micai.platform.resourcesserver.utils.AuthenticationManger; +import org.micai.platform.resourcesserver.vo.RoleListVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/micai/platform/auth/service/impl/RolePermissionServiceImpl.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/RolePermissionServiceImpl.java similarity index 77% rename from src/main/java/org/micai/platform/auth/service/impl/RolePermissionServiceImpl.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/RolePermissionServiceImpl.java index 9e36ca867016634eb5d68fba1802e405e34b2936..bb91cd946af2a0aa87ef6381527616642eec2b3c 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/RolePermissionServiceImpl.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/RolePermissionServiceImpl.java @@ -1,19 +1,19 @@ -package org.micai.platform.auth.service.impl; +package org.micai.platform.resourcesserver.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.bo.RolePermissionDelBo; -import org.micai.platform.auth.bo.RolePermissionSaveBo; -import org.micai.platform.auth.bo.RolePermissionUpdateBo; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.dto.UserAuthenticationDto; -import org.micai.platform.auth.entity.RolePermission; -import org.micai.platform.auth.mapper.RolePermissionMapper; -import org.micai.platform.auth.service.RolePermissionService; -import org.micai.platform.auth.utils.AuthenticationManger; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.resourcesserver.bo.RolePermissionDelBo; +import org.micai.platform.resourcesserver.bo.RolePermissionSaveBo; +import org.micai.platform.resourcesserver.bo.RolePermissionUpdateBo; +import org.micai.platform.resourcesserver.dto.UserAuthenticationDto; +import org.micai.platform.resourcesserver.entity.RolePermission; +import org.micai.platform.resourcesserver.mapper.RolePermissionMapper; +import org.micai.platform.resourcesserver.service.RolePermissionService; +import org.micai.platform.resourcesserver.utils.AuthenticationManger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/micai/platform/auth/service/impl/RoleServiceImpl.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/RoleServiceImpl.java similarity index 78% rename from src/main/java/org/micai/platform/auth/service/impl/RoleServiceImpl.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/RoleServiceImpl.java index 4f7d4126a7a5c6e51464cd094dfdccf8b89c1e02..4388d94dc13100dd22c7146be3ba61728d665283 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/RoleServiceImpl.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/RoleServiceImpl.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.service.impl; +package org.micai.platform.resourcesserver.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; @@ -6,19 +6,19 @@ import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.micai.platform.auth.bo.RoleDelBo; -import org.micai.platform.auth.bo.RoleFindBo; -import org.micai.platform.auth.bo.RoleSaveBo; -import org.micai.platform.auth.bo.RoleUpdateBo; -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.dto.UserAuthenticationDto; -import org.micai.platform.auth.entity.Role; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.mapper.RoleMapper; -import org.micai.platform.auth.service.RoleService; -import org.micai.platform.auth.utils.AuthenticationManger; -import org.micai.platform.auth.vo.UserListVo; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.resourcesserver.bo.RoleDelBo; +import org.micai.platform.resourcesserver.bo.RoleFindBo; +import org.micai.platform.resourcesserver.bo.RoleSaveBo; +import org.micai.platform.resourcesserver.bo.RoleUpdateBo; +import org.micai.platform.resourcesserver.dto.UserAuthenticationDto; +import org.micai.platform.resourcesserver.entity.Role; +import org.micai.platform.resourcesserver.mapper.RoleMapper; +import org.micai.platform.resourcesserver.service.RoleService; +import org.micai.platform.resourcesserver.utils.AuthenticationManger; +import org.micai.platform.resourcesserver.vo.UserListVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/UserDetailsServiceImpl.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/UserDetailsServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..cc9659a61d50b7c45e5cf3ddd62e9d8e0b519779 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/UserDetailsServiceImpl.java @@ -0,0 +1,76 @@ +package org.micai.platform.resourcesserver.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.MyAuthException; +import org.micai.platform.resourcesserver.entity.*; +import org.micai.platform.resourcesserver.service.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.authority.AuthorityUtils; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author liuCong + * @Date 2022/11/24 下午 1:36 + * @ClassName UserDetailsServiceImpl + * @Description + */ +public class UserDetailsServiceImpl implements UserDetailsService { + + @Autowired + private UserService userService; + + @Autowired + private UserRoleService userRoleService; + + @Autowired + private RoleService roleService; + + @Autowired + private RolePermissionService rolePermissionService; + + @Autowired + private PermissionService permissionService; + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + User user = userService.getOne(new LambdaQueryWrapper().eq(User::getUsername,username)); + if (user == null){ + throw new UsernameNotFoundException("未找到该用户"); + } + //获取用户权限 + List userRoleList = userRoleService.list(new QueryWrapper().lambda().eq(UserRole::getUserId,user.getId())); + if (ObjectUtil.isEmpty(userRoleList)){ + throw new MyAuthException(ConstantEnum.NO_ROLE); + } + List roleIdList = userRoleList.stream().map(UserRole::getRoleId).collect(Collectors.toList()); + List roleList = roleService.list(new QueryWrapper().lambda() + .in(Role::getId,roleIdList).eq(Role::getStatus, ConstantCode.STR_Z_ONE)); + if (ObjectUtil.isEmpty(roleList)){ + throw new MyAuthException(ConstantEnum.NO_ROLE); + } + List rolePermissionList = rolePermissionService.list(new QueryWrapper().lambda() + .in(RolePermission::getRoleId,roleIdList)); + if (ObjectUtil.isEmpty(rolePermissionList)){ + throw new MyAuthException(ConstantEnum.NO_PERMISSION); + } + List permissionIdList = rolePermissionList.stream().map(RolePermission::getPermissionId).collect(Collectors.toList()); + List permissionList = permissionService.list(new QueryWrapper().lambda() + .in(Permission::getId,permissionIdList).eq(Permission::getStatus,ConstantCode.STR_Z_ONE)); + if (ObjectUtil.isEmpty(permissionList)){ + throw new MyAuthException(ConstantEnum.NO_PERMISSION); + } + + String collect = permissionList.stream().map(Permission::getPermissionCode).collect(Collectors.joining(",")); + return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), AuthorityUtils.createAuthorityList(collect)); + } + +} diff --git a/src/main/java/org/micai/platform/auth/service/impl/UserRoleServiceImpl.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/UserRoleServiceImpl.java similarity index 76% rename from src/main/java/org/micai/platform/auth/service/impl/UserRoleServiceImpl.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/UserRoleServiceImpl.java index c9d7a45570fe4d79b562199a7062655375623f49..4fdfa8e3f38c1d137361894c1c3e4568a304ead1 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/UserRoleServiceImpl.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/UserRoleServiceImpl.java @@ -1,19 +1,19 @@ -package org.micai.platform.auth.service.impl; +package org.micai.platform.resourcesserver.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.bo.UserRoleDelBo; -import org.micai.platform.auth.bo.UserRoleSaveBo; -import org.micai.platform.auth.bo.UserRoleUpdateBo; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.dto.UserAuthenticationDto; -import org.micai.platform.auth.entity.UserRole; -import org.micai.platform.auth.mapper.UserRoleMapper; -import org.micai.platform.auth.service.UserRoleService; -import org.micai.platform.auth.utils.AuthenticationManger; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.resourcesserver.bo.UserRoleDelBo; +import org.micai.platform.resourcesserver.bo.UserRoleSaveBo; +import org.micai.platform.resourcesserver.bo.UserRoleUpdateBo; +import org.micai.platform.resourcesserver.dto.UserAuthenticationDto; +import org.micai.platform.resourcesserver.entity.UserRole; +import org.micai.platform.resourcesserver.mapper.UserRoleMapper; +import org.micai.platform.resourcesserver.service.UserRoleService; +import org.micai.platform.resourcesserver.utils.AuthenticationManger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/UserServiceImpl.java similarity index 83% rename from src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/UserServiceImpl.java index a81eed7cdbe9c24fe5475878df7cc2c917b0762d..6f6753615b387c0cd1960a886fd3afb726a89f94 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/service/impl/UserServiceImpl.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.service.impl; +package org.micai.platform.resourcesserver.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; @@ -7,19 +7,19 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.micai.platform.auth.bo.UserDelBo; -import org.micai.platform.auth.bo.UserFindBo; -import org.micai.platform.auth.bo.UserSaveBo; -import org.micai.platform.auth.bo.UserUpdateBo; -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.dto.UserAuthenticationDto; -import org.micai.platform.auth.entity.User; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.mapper.UserMapper; -import org.micai.platform.auth.service.UserService; -import org.micai.platform.auth.utils.AuthenticationManger; -import org.micai.platform.auth.vo.UserListVo; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantEnum; +import org.micai.platform.common.base.exception.PlatformException; +import org.micai.platform.resourcesserver.bo.UserDelBo; +import org.micai.platform.resourcesserver.bo.UserFindBo; +import org.micai.platform.resourcesserver.bo.UserSaveBo; +import org.micai.platform.resourcesserver.bo.UserUpdateBo; +import org.micai.platform.resourcesserver.dto.UserAuthenticationDto; +import org.micai.platform.resourcesserver.entity.User; +import org.micai.platform.resourcesserver.mapper.UserMapper; +import org.micai.platform.resourcesserver.service.UserService; +import org.micai.platform.resourcesserver.utils.AuthenticationManger; +import org.micai.platform.resourcesserver.vo.UserListVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; diff --git a/src/main/java/org/micai/platform/auth/utils/ApplicationUtil.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/ApplicationUtil.java similarity index 97% rename from src/main/java/org/micai/platform/auth/utils/ApplicationUtil.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/ApplicationUtil.java index 4d7d882293018012ef6d103671127a49cd8fe9cc..62d073b4c3cef6bc0cccb2562cc8a7d1b5dc00f8 100644 --- a/src/main/java/org/micai/platform/auth/utils/ApplicationUtil.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/ApplicationUtil.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.utils; +package org.micai.platform.resourcesserver.utils; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; diff --git a/src/main/java/org/micai/platform/auth/utils/AuthenticationManger.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/AuthenticationManger.java similarity index 90% rename from src/main/java/org/micai/platform/auth/utils/AuthenticationManger.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/AuthenticationManger.java index 89e180fdb6b3d373e1881c8499d1680fa0720446..89555c9a7511856fc3d18db95e4573ae74378b9a 100644 --- a/src/main/java/org/micai/platform/auth/utils/AuthenticationManger.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/AuthenticationManger.java @@ -1,8 +1,8 @@ -package org.micai.platform.auth.utils; +package org.micai.platform.resourcesserver.utils; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.dto.UserAuthenticationDto; -import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.common.base.constant.ConstantCode; +import org.micai.platform.resourcesserver.dto.UserAuthenticationDto; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContextHolder; diff --git a/src/main/java/org/micai/platform/auth/utils/ImageUtils.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/ImageUtils.java similarity index 99% rename from src/main/java/org/micai/platform/auth/utils/ImageUtils.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/ImageUtils.java index 0b14bcbbf129f86bdede44ba11937396e39cabb0..8c7edd2754f00348cf43898dc8ab3631942c0d6a 100644 --- a/src/main/java/org/micai/platform/auth/utils/ImageUtils.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/ImageUtils.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.utils; +package org.micai.platform.resourcesserver.utils; import lombok.extern.slf4j.Slf4j; import net.coobird.thumbnailator.Thumbnails; diff --git a/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/JwtHelper.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/JwtHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..cc37c4de6d423b5568bba3958e1a53ee34ec61e4 --- /dev/null +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/JwtHelper.java @@ -0,0 +1,106 @@ +//package org.micai.platform.resourcesserver.utils; +// +//import io.jsonwebtoken.Claims; +//import io.jsonwebtoken.JwtBuilder; +//import io.jsonwebtoken.Jwts; +//import io.jsonwebtoken.SignatureAlgorithm; +//import org.springframework.beans.factory.annotation.Value; +// +//import javax.crypto.spec.SecretKeySpec; +//import javax.xml.bind.DatatypeConverter; +//import java.security.Key; +//import java.util.Date; +// +///** +// * @FileName: JwtHelper +// * @Author: zhaoxinguo +// * @Date: 2018/12/10 19:39 +// * @Description: 实现Jwt +// */ +//public class JwtHelper { +// +// //token超时时间 +// @Value("${jwt.expiration}") +// public long expiration; +// +// //生成token的秘钥 +// @Value("${jwt.secret}") +// public String base64Security; +// +// /** +// * 解析token +// * @param jsonWebToken +// * @return +// */ +// public Claims parseToken(String jsonWebToken) { +// Claims claims = Jwts.parser().setSigningKey(DatatypeConverter.parseBase64Binary(base64Security)).parseClaimsJws(jsonWebToken).getBody(); +// return claims; +// } +// +// /** +// * 新建token +// * @param audience +// * @param issuer +// * @return +// */ +// public String createToken(String audience, String issuer) { +// SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; +// +// long nowMillis = System.currentTimeMillis(); +// Date now = new Date(nowMillis); +// +// // 生成签名密钥 +// byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(base64Security); +// Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName()); +// +// // 添加构成JWT的参数 +// JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JWT").setIssuer(issuer).setAudience(audience) +// .signWith(signatureAlgorithm, signingKey); +// +// // 添加Token签发时间 +// builder.setIssuedAt(now); +// // 添加Token过期时间 +// if (expiration >= 0) { +// long expMillis = nowMillis + expiration; +// Date exp = new Date(expMillis); +// builder.setExpiration(exp).setNotBefore(now); +// } +// +// // 生成JWT +// return builder.compact(); +// } +// +// /** +// * 刷新令牌 +// * +// * @param claims +// * @return +// */ +// public String refreshToken(Claims claims) { +// SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; +// +// long nowMillis = System.currentTimeMillis(); +// Date now = new Date(nowMillis); +// +// // 生成签名密钥 +// byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(base64Security); +// Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName()); +// +// // 添加构成JWT的参数 +// JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JWT") +// .setIssuer((String) claims.get("iss")).setAudience((String) claims.get("aud")) +// .signWith(signatureAlgorithm, signingKey); +// +// // 添加Token签发时间 +// builder.setIssuedAt(now); +// // 添加Token过期时间 +// if (expiration >= 0) { +// long expMillis = nowMillis + expiration; +// Date exp = new Date(expMillis); +// builder.setExpiration(exp).setNotBefore(now); +// } +// +// // 生成Token +// return builder.compact(); +// } +//} diff --git a/src/main/java/org/micai/platform/auth/utils/MD5.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/MD5.java similarity index 90% rename from src/main/java/org/micai/platform/auth/utils/MD5.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/MD5.java index 5a3ecc8647628765ad9d8154c1b0c02c4c67c84d..92b172b1b2faed8ae953c2740a2da6c3f2bbf49e 100644 --- a/src/main/java/org/micai/platform/auth/utils/MD5.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/utils/MD5.java @@ -1,7 +1,7 @@ -package org.micai.platform.auth.utils; +package org.micai.platform.resourcesserver.utils; import org.apache.commons.lang3.StringUtils; -import org.micai.platform.auth.base.exception.PlatformException; +import org.micai.platform.common.base.exception.PlatformException; import java.math.BigInteger; import java.security.MessageDigest; diff --git a/src/main/java/org/micai/platform/auth/vo/OrganListVo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/OrganListVo.java similarity index 95% rename from src/main/java/org/micai/platform/auth/vo/OrganListVo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/OrganListVo.java index c799fe9d9fdfb0bea17561543ccac441a3de31ca..e3fc46c876e8d516d234041b7bbdac5b0ad675c7 100644 --- a/src/main/java/org/micai/platform/auth/vo/OrganListVo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/OrganListVo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.vo; +package org.micai.platform.resourcesserver.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/vo/PermissionListVo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/PermissionListVo.java similarity index 95% rename from src/main/java/org/micai/platform/auth/vo/PermissionListVo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/PermissionListVo.java index 282c771b988c6470b8d0b16a32224c2442717611..9e5fd09ceb10075a1a024e283a1d87717e992385 100644 --- a/src/main/java/org/micai/platform/auth/vo/PermissionListVo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/PermissionListVo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.vo; +package org.micai.platform.resourcesserver.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/vo/RoleListVo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/RoleListVo.java similarity index 95% rename from src/main/java/org/micai/platform/auth/vo/RoleListVo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/RoleListVo.java index d0d1d36642f03e15808aad933041cfd3eeeb28b6..0dcb67d49454ec72cb3eebe05f4e727cb0ad9645 100644 --- a/src/main/java/org/micai/platform/auth/vo/RoleListVo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/RoleListVo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.vo; +package org.micai.platform.resourcesserver.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/org/micai/platform/auth/vo/UserListVo.java b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/UserListVo.java similarity index 95% rename from src/main/java/org/micai/platform/auth/vo/UserListVo.java rename to platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/UserListVo.java index d4796ec9bbcaacf8fa628b991b07b689b093e9e0..ad824c30474483c379f4abfb3f7eddfd533d8c4f 100644 --- a/src/main/java/org/micai/platform/auth/vo/UserListVo.java +++ b/platform-resources-server/src/main/java/org/micai/platform/resourcesserver/vo/UserListVo.java @@ -1,4 +1,4 @@ -package org.micai.platform.auth.vo; +package org.micai.platform.resourcesserver.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/platform-resources-server/src/main/resources/application-dev.yml b/platform-resources-server/src/main/resources/application-dev.yml new file mode 100644 index 0000000000000000000000000000000000000000..91dde2b08682fa4999810744af333f7c417f57f6 --- /dev/null +++ b/platform-resources-server/src/main/resources/application-dev.yml @@ -0,0 +1,33 @@ +#dev 开发环境 +#服务 +server: + port: 8081 +#spring +spring: + datasource: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://localhost:3306/security?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true + username: root + password: ly1218 + +micai-platform-auth: + #jwt相关配置 + token: + #sign key + sign-key: micai-security-@Jwt!&Secret^# + #jwt 过期时间 单位:分钟 + timeout: 60 + # token名称 + token-name: Authorization + # token前缀 + token-prefix: Bearer + + oauth-resources: + #sign key + sign-key: micai-oauth2-@Jwt!&Secret^# + #资源id + resource-ids: resources-server + #过滤器匹配路径 可以使用** + request-matcher: + - /demo + - /user/list diff --git a/platform-resources-server/src/main/resources/application-pro.yml b/platform-resources-server/src/main/resources/application-pro.yml new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/main/resources/application.yml b/platform-resources-server/src/main/resources/application.yml similarity index 83% rename from src/main/resources/application.yml rename to platform-resources-server/src/main/resources/application.yml index 7d5311584f65f23b5275edd230bdc3589400c492..91113168c57e797ecebbd8b518138b170e2d7d7b 100644 --- a/src/main/resources/application.yml +++ b/platform-resources-server/src/main/resources/application.yml @@ -22,12 +22,6 @@ mybatis-plus: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl -#jwt config -jwt: - header: Authorization - secret: NDU0NTY4amhmc3NkeHp6eGNxdzIlMjFAJTIxQCUyM2ZmNQ== - expiration: 7200000 - site: location: ${user.dir} options: diff --git a/platform-resources-server/src/main/resources/logback-spring.xml b/platform-resources-server/src/main/resources/logback-spring.xml new file mode 100644 index 0000000000000000000000000000000000000000..b02d2b726ae372eb59b0871db91d5cb2f08bc3e2 --- /dev/null +++ b/platform-resources-server/src/main/resources/logback-spring.xml @@ -0,0 +1,51 @@ + + + + + + + + logback + + + + + + + + + + + + + + debug + + + + ${PATTERN_COLOR} + + UTF-8 + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index 20e3007e99f9843cda7c0777c0482738b627c137..1cfbc9f04f027be66535d4b63757563f8899ea12 100644 --- a/pom.xml +++ b/pom.xml @@ -11,14 +11,21 @@ org.micai.platform micai-platform-auth 0.0.1-SNAPSHOT - micai-platform-auth + pom + micai-platform-auth Micai platform project for Spring Boot - - 1.8 + + platform-auth-server + platform-resources-server + platform-common + + + 8 + 8 + UTF-8 5.1.30 0.7.0 1.2.78 - 5.7.16 2.7.0 1.3.2 1.3 @@ -29,15 +36,21 @@ 2.8.3 7.2.18 3.4.3.4 - 1.9.2 3.4.0 - 3.4.0 3.16 3.16 2.0 + 1.7.30 + 2.2.6.RELEASE + 2.0.9 + 1.18.24 + 2.6.6 + 5.7.16 + 2.7.5 - - + + + org.springframework.boot spring-boot-starter @@ -52,137 +65,176 @@ org.springframework.boot spring-boot-starter-web - - - com.baomidou - mybatis-plus-boot-starter - ${mybatis-plus-boot-starter.version} - - - - mysql - mysql-connector-java - ${mysql.version} - - - - org.springframework.boot - spring-boot-starter-security - + io.jsonwebtoken jjwt - ${jjwt.version} - - - - com.alibaba - fastjson - ${fastjson.version} - - - - cn.hutool - hutool-all - ${hutool.version} - - - - io.springfox - springfox-swagger2 - ${springfox-swagger2.version} - - - - org.projectlombok - lombok - - - com.baomidou - mybatis-plus-generator - ${mybatis-plus-generator.version} - - - com.baomidou - mybatis-plus - ${mybatis-plus.version} - - - org.apache.velocity - velocity-engine-core - ${velocity-engine-core.version} + org.springframework.boot - spring-boot-starter-validation - - - com.github.xiaoymin - swagger-bootstrap-ui - ${swagger-bootstrap-ui.version} - - - org.apache.commons - commons-io - ${commons.io} - - - org.apache.commons - commons-text - ${commons.text} - - - - com.itextpdf - itextpdf - ${commons.itextpdf} - - - com.itextpdf - itext-asian - ${commons.itext-asian} - - - org.apache.poi - poi - ${poi.version} - - - org.apache.poi - poi-ooxml - ${poi-ooxml.version} - - - net.coobird - thumbnailator - ${coobird.thumbnailator} - - - - com.upyun - java-sdk - ${upyun.sdk.version} - - - - com.aliyun.oss - aliyun-sdk-oss - ${aliyun.sdk.version} - - - - com.qiniu - qiniu-java-sdk - ${qiniu.sdk.version} + spring-boot-starter-security + - org.springframework.boot - spring-boot-devtools - true + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus-boot-starter.version} + + + + mysql + mysql-connector-java + ${mysql.version} + + + + org.springframework.boot + spring-boot-starter-security + ${security.version} + + + + io.jsonwebtoken + jjwt + ${jjwt.version} + + + + com.alibaba + fastjson + ${fastjson.version} + + + + io.springfox + springfox-swagger2 + ${springfox-swagger2.version} + + + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + + com.baomidou + mybatis-plus-generator + ${mybatis-plus-generator.version} + + + org.apache.velocity + velocity-engine-core + ${velocity-engine-core.version} + + + org.springframework.boot + spring-boot-starter-validation + ${validation.version} + + + org.apache.commons + commons-io + ${commons.io} + + + org.apache.commons + commons-text + ${commons.text} + + + + com.itextpdf + itextpdf + ${commons.itextpdf} + + + com.itextpdf + itext-asian + ${commons.itext-asian} + + + org.apache.poi + poi + ${poi.version} + + + org.apache.poi + poi-ooxml + ${poi-ooxml.version} + + + net.coobird + thumbnailator + ${coobird.thumbnailator} + + + + com.upyun + java-sdk + ${upyun.sdk.version} + + + + com.aliyun.oss + aliyun-sdk-oss + ${aliyun.sdk.version} + + + + com.qiniu + qiniu-java-sdk + ${qiniu.sdk.version} + + + org.springframework.boot + spring-boot-devtools + true + + + + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + ${oauth2.version} + + + org.slf4j + slf4j-api + ${slf4j-api.version} + + + + + com.github.xiaoymin + + knife4j-spring-boot-starter + ${knife4j.version} + + + + + cn.hutool + hutool-all + ${hutool.version} + + + + + @@ -191,7 +243,7 @@ - + spring-milestones diff --git a/src/main/java/org/micai/platform/auth/base/exception/DefaultException.java b/src/main/java/org/micai/platform/auth/base/exception/DefaultException.java deleted file mode 100644 index 2d70094a17417247c57e10fe94d8a49cb47a0243..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/exception/DefaultException.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.micai.platform.auth.base.exception; - -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.base.result.Result; -import org.springframework.context.support.DefaultMessageSourceResolvable; -import org.springframework.web.bind.MethodArgumentNotValidException; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -import java.util.stream.Collectors; - -@RestControllerAdvice -@Slf4j -public class DefaultException { - - @ExceptionHandler(MethodArgumentNotValidException.class) - @ResponseBody - public Result methodArgumentNotValidException(MethodArgumentNotValidException exception) { - log.info("捕获异常MethodArgumentNotValidException"); - String message = exception.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining()); - return new Result(ConstantEnum.FAIL,message); - } - -} diff --git a/src/main/java/org/micai/platform/auth/base/sms/Sms.java b/src/main/java/org/micai/platform/auth/base/sms/Sms.java deleted file mode 100644 index 1a43c9cc26a1fd3e3f962f4a6821a76aa3ff7f4a..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/sms/Sms.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.micai.platform.auth.base.sms; - -/** - * @Author zhaoxinguo - * @Date 2021-12-10 13:26 - * @ClassName Sms - * @Description 短信发送接口 - */ -public interface Sms { - - /** - * 发送短信 - * @param messageContent 短信内容 - * @param receiveNumber 接收人手机号 - * @return - */ - String sendSms(String messageContent, String receiveNumber); -} diff --git a/src/main/java/org/micai/platform/auth/base/sms/impl/AbstractSms.java b/src/main/java/org/micai/platform/auth/base/sms/impl/AbstractSms.java deleted file mode 100644 index 79f5a1082362228540c48f759de80d5bb94cdd1c..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/sms/impl/AbstractSms.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.micai.platform.auth.base.sms.impl; - -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.sms.Sms; - -/** - * 系统短信接口抽象实现类 - */ -@Slf4j -public abstract class AbstractSms implements Sms { - - -} diff --git a/src/main/java/org/micai/platform/auth/base/sms/impl/QiniuSmsImpl.java b/src/main/java/org/micai/platform/auth/base/sms/impl/QiniuSmsImpl.java deleted file mode 100644 index d8e3f6af1e6f361e3ade6bee24e947176606b8b9..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/sms/impl/QiniuSmsImpl.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.micai.platform.auth.base.sms.impl; - -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.sms.Sms; -import org.springframework.stereotype.Component; - -/** - * 七牛云-短信接口抽象实现类 - */ -@Slf4j -@Component -public class QiniuSmsImpl extends AbstractSms implements Sms { - - @Override - public String sendSms(String messageContent, String receiveNumber) { - - return null; - } -} diff --git a/src/main/java/org/micai/platform/auth/base/storage/Storage.java b/src/main/java/org/micai/platform/auth/base/storage/Storage.java deleted file mode 100644 index f794eab0b3c044ec15a453ff24580805e6940dd2..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/storage/Storage.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.micai.platform.auth.base.storage; - -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; - -/** - * 系统存储接口 - */ -public interface Storage { - - /** - * 存储图片 - * - * @param file - * @param basePath - * @return - * @throws IOException - */ - String store(MultipartFile file, String basePath) throws Exception; - - /** - * 存储压缩图片 - * - * @param file - * @param basePath - * @return - * @throws IOException - */ - String storeScale(MultipartFile file, String basePath, int maxWidth) throws Exception; - - /** - * 存储压缩图片 - * - * @param file - * @param basePath - * @return - * @throws IOException - */ - String storeScale(MultipartFile file, String basePath, int width, int height) throws Exception; - - /** - * 存储路径 - * - * @param storePath - */ - void deleteFile(String storePath); - - /** - * 写入字节到指定的目录文件 - * - * @param bytes - * @param pathAndFileName - * @return - * @throws Exception - */ - String writeToStore(byte[] bytes, String pathAndFileName) throws Exception; -} diff --git a/src/main/java/org/micai/platform/auth/base/storage/StorageFactory.java b/src/main/java/org/micai/platform/auth/base/storage/StorageFactory.java deleted file mode 100644 index ac8e0d19460857d0d066d247d232736d9ce4c65a..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/storage/StorageFactory.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.micai.platform.auth.base.storage; - -import org.apache.commons.lang3.StringUtils; -import org.micai.platform.auth.base.storage.impl.NativeStorageImpl; -import org.micai.platform.auth.base.storage.impl.OssStorageImpl; -import org.micai.platform.auth.config.SiteOptions; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Component; -import java.util.HashMap; -import java.util.Map; - -@Component -public class StorageFactory implements InitializingBean { - - @Autowired - private ApplicationContext applicationContext; - @Autowired - private SiteOptions siteOptions; - private Map fileRepoMap = new HashMap<>(); - - @Override - public void afterPropertiesSet() throws Exception { - fileRepoMap.put("native", applicationContext.getBean(NativeStorageImpl.class)); - fileRepoMap.put("aliyun", applicationContext.getBean(OssStorageImpl.class)); - } - - public boolean registry(String key, Storage storage) { - if (fileRepoMap.containsKey(key)) { - return false; - } - fileRepoMap.put(key, storage); - return true; - } - - public Storage get() { - String scheme = siteOptions.getValue("storage_scheme"); - if (StringUtils.isBlank(scheme)) { - scheme = "native"; - } - return fileRepoMap.get(scheme); - } -} diff --git a/src/main/java/org/micai/platform/auth/base/storage/impl/AbstractStorage.java b/src/main/java/org/micai/platform/auth/base/storage/impl/AbstractStorage.java deleted file mode 100644 index fec60bb6282b72600d1cc330c76b4e4bded22490..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/storage/impl/AbstractStorage.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.micai.platform.auth.base.storage.impl; - -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.storage.Storage; -import org.micai.platform.auth.config.SiteOptions; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.utils.FileKit; -import org.micai.platform.auth.utils.FilePathUtils; -import org.micai.platform.auth.utils.ImageUtils; -import org.micai.platform.auth.utils.MD5; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.multipart.MultipartFile; - -/** - * 系统存储接口抽象实现类 - */ -@Slf4j -public abstract class AbstractStorage implements Storage { - - @Autowired - protected SiteOptions siteOptions; - - /** - * 验证文件 - * - * @param file - */ - protected void validateFile(MultipartFile file) { - if (file == null || file.isEmpty()) { - throw new PlatformException(ConstantEnum.NO_FILE); - } - if (!FileKit.checkFileType(file.getOriginalFilename())) { - throw new PlatformException(ConstantEnum.TYPE); - } - } - - /** - * 存储图片 - * @param file - * @param basePath - * @return - * @throws Exception - */ - @Override - public String store(MultipartFile file, String basePath) throws Exception { - validateFile(file); - return writeToStore(file.getBytes(), basePath, file.getOriginalFilename()); - } - - /** - * 存储压缩图片 - * @param file - * @param basePath - * @param maxWidth - * @return - * @throws Exception - */ - @Override - public String storeScale(MultipartFile file, String basePath, int maxWidth) throws Exception { - validateFile(file); - byte[] bytes = ImageUtils.scaleByWidth(file, maxWidth); - return writeToStore(bytes, basePath, file.getOriginalFilename()); - } - - /** - * 存储压缩图片 - * @param file - * @param basePath - * @param width - * @param height - * @return - * @throws Exception - */ - @Override - public String storeScale(MultipartFile file, String basePath, int width, int height) throws Exception { - validateFile(file); - byte[] bytes = ImageUtils.screenshot(file, width, height); - return writeToStore(bytes, basePath, file.getOriginalFilename()); - } - - public String writeToStore(byte[] bytes, String src, String originalFilename) throws Exception { - String md5 = MD5.md5(bytes); - /*Resource resource = resourceRepository.findByMd5(md5); - if (resource != null){ - return resource.getPath(); - }*/ - String path = FilePathUtils.wholePathName(src, originalFilename, md5); - path = writeToStore(bytes, path); - - // 图片入库 - /*resource = new Resource(); - resource.setMd5(md5); - resource.setPath(path); - resource.setCreateTime(LocalDateTime.now()); - resourceRepository.save(resource);*/ - return path; - } - -} diff --git a/src/main/java/org/micai/platform/auth/base/storage/impl/MinioStorageImpl.java b/src/main/java/org/micai/platform/auth/base/storage/impl/MinioStorageImpl.java deleted file mode 100644 index c167acfa3efc167185b1a88ea77966beb1869873..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/storage/impl/MinioStorageImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.micai.platform.auth.base.storage.impl; - -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.storage.Storage; -import org.springframework.stereotype.Component; - -/** - * MinIO-存储接口抽象实现类 - */ -@Slf4j -@Component -public class MinioStorageImpl extends AbstractStorage implements Storage { - - @Override - public void deleteFile(String storePath) { - - } - - @Override - public String writeToStore(byte[] bytes, String pathAndFileName) throws Exception { - return null; - } -} diff --git a/src/main/java/org/micai/platform/auth/base/storage/impl/NativeStorageImpl.java b/src/main/java/org/micai/platform/auth/base/storage/impl/NativeStorageImpl.java deleted file mode 100644 index 69399bc434b033aad4574f81d3094f642841f9e8..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/storage/impl/NativeStorageImpl.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.micai.platform.auth.base.storage.impl; - -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.storage.Storage; -import org.micai.platform.auth.utils.FileKit; -import org.springframework.stereotype.Component; - -import java.io.File; - -/** - * 本地-存储接口抽象实现类 - */ -@Slf4j -@Component -public class NativeStorageImpl extends AbstractStorage implements Storage { - - @Override - public void deleteFile(String storePath) { - File file = new File(getStoragePath() + storePath); - - // 文件存在, 且不是目录 - if (file.exists() && !file.isDirectory()) { - file.delete(); - log.info("fileRepo delete " + storePath); - } - } - - @Override - public String writeToStore(byte[] bytes, String pathAndFileName) throws Exception { - String dest = getStoragePath() + pathAndFileName; - FileKit.writeByteArrayToFile(bytes, dest); - return pathAndFileName; - } - - private String getStoragePath() { - return siteOptions.getLocation(); - } -} diff --git a/src/main/java/org/micai/platform/auth/base/storage/impl/OssStorageImpl.java b/src/main/java/org/micai/platform/auth/base/storage/impl/OssStorageImpl.java deleted file mode 100644 index b1a02bf1cc79d2c19cf863d2150dfa222bbcfd73..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/storage/impl/OssStorageImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.micai.platform.auth.base.storage.impl; - -import com.aliyun.oss.OSSClient; -import com.upyun.UpYunUtils; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.micai.platform.auth.base.storage.Storage; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.utils.FileKit; -import org.springframework.stereotype.Component; -import java.io.ByteArrayInputStream; - -/** - * 阿里云OSS-存储接口抽象实现类 - */ -@Slf4j -@Component -public class OssStorageImpl extends AbstractStorage implements Storage { - - private static final String oss_endpoint = "aliyun_oss_endpoint"; - private static final String oss_bucket = "aliyun_oss_bucket"; - private static final String oss_key = "aliyun_oss_key"; - private static final String oss_secret = "aliyun_oss_secret"; - private static final String oss_src = "aliyun_oss_src"; - - @Override - public void deleteFile(String storePath) { - String bucket = siteOptions.getValue(oss_bucket); - String endpoint = siteOptions.getValue(oss_endpoint); - String path = StringUtils.remove(storePath, "//" + bucket.trim() + "." + endpoint.trim() + "/"); - OSSClient client = builder(); - try { - client.doesObjectExist(bucket, path); - } catch (Exception e) { - log.error(e.getMessage(), e); - } - } - - @Override - public String writeToStore(byte[] bytes, String pathAndFileName) throws Exception { - String endpoint = siteOptions.getValue(oss_endpoint); - String bucket = siteOptions.getValue(oss_bucket); - String src = siteOptions.getValue(oss_src); - - if (StringUtils.isAnyBlank(endpoint, bucket)) { - throw new PlatformException(ConstantEnum.NO_ALIYUN_CONFIG); - } - - if (StringUtils.isBlank(src)) { - src = ""; - } else { - if (src.startsWith("/")) { - src = src.substring(1); - } - - if (!src.endsWith("/")) { - src = src + "/"; - } - } - - String key = UpYunUtils.md5(bytes); - String path = src + key + FileKit.getSuffix(pathAndFileName); - OSSClient client = builder(); - client.putObject(bucket, path, new ByteArrayInputStream(bytes)); - return "//" + bucket.trim() + "." + endpoint.trim() + "/" + path; - } - - private OSSClient builder() { - String endpoint = siteOptions.getValue(oss_endpoint); - String accessKeyId = siteOptions.getValue(oss_key); - String accessKeySecret = siteOptions.getValue(oss_secret); - - if (StringUtils.isAnyBlank(endpoint, accessKeyId, accessKeySecret)) { - throw new PlatformException(ConstantEnum.NO_ALIYUN_CONFIG); - } - return new OSSClient(endpoint, accessKeyId, accessKeySecret); - } -} diff --git a/src/main/java/org/micai/platform/auth/base/storage/impl/QiniuStorageImpl.java b/src/main/java/org/micai/platform/auth/base/storage/impl/QiniuStorageImpl.java deleted file mode 100644 index 4d441935c2e8a92e3b5cbbe19bee0a4f65d7ef96..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/storage/impl/QiniuStorageImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.micai.platform.auth.base.storage.impl; - -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.storage.Storage; -import org.springframework.stereotype.Component; - -/** - * 七牛云OSS-存储接口抽象实现类 - */ -@Slf4j -@Component -public class QiniuStorageImpl extends AbstractStorage implements Storage { - - @Override - public void deleteFile(String storePath) { - - } - - @Override - public String writeToStore(byte[] bytes, String pathAndFileName) throws Exception { - return null; - } -} diff --git a/src/main/java/org/micai/platform/auth/base/storage/impl/UpYunStorageImpl.java b/src/main/java/org/micai/platform/auth/base/storage/impl/UpYunStorageImpl.java deleted file mode 100644 index a3895cac3a54f5964baae66beb38740d3d1e0beb..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/base/storage/impl/UpYunStorageImpl.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.micai.platform.auth.base.storage.impl; - -import org.micai.platform.auth.base.storage.Storage; - -public class UpYunStorageImpl extends AbstractStorage implements Storage { - - @Override - public void deleteFile(String storePath) { - - } - - @Override - public String writeToStore(byte[] bytes, String pathAndFileName) throws Exception { - return null; - } -} diff --git a/src/main/java/org/micai/platform/auth/config/SiteOptions.java b/src/main/java/org/micai/platform/auth/config/SiteOptions.java deleted file mode 100644 index 391e61bc68901d8e39dc3b18661cd2487b326634..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/config/SiteOptions.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.micai.platform.auth.config; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author : langhsu - * @version : 1.0 - * @date : 2019/01/18 - */ -@Component -@ConfigurationProperties(prefix = "site") -public class SiteOptions { - - /** - * 运行文件存储路径 - */ - private String location; - - /** - * 属性配置 - */ - private Map options = new HashMap<>(); - - public String getLocation() { - return location; - } - - public void setLocation(String location) { - this.location = location; - } - - public Integer[] getIntegerArrayValue(String key, String separator) { - String value = getValue(key); - String[] array = value.split(separator); - Integer[] ret = new Integer[array.length]; - for (int i = 0; i < array.length; i ++) { - ret[i] = Integer.parseInt(array[i]); - } - return ret; - } - - public Integer getIntegerValue(String key) { - return Integer.parseInt(options.get(key)); - } - - public String getValue(String key) { - String value = options.get(key); - return null != value ? value.trim() : null; - } - - public boolean hasValue(String key) { - return StringUtils.isNotBlank(options.get(key)); - } - -} diff --git a/src/main/java/org/micai/platform/auth/config/ThreadConfig.java b/src/main/java/org/micai/platform/auth/config/ThreadConfig.java deleted file mode 100644 index 5135f45cc91b5e63c37c659cf20a951b23d53eb9..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/config/ThreadConfig.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.micai.platform.auth.config; - -import org.micai.platform.auth.utils.ApplicationUtil; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; - -/** - * @FileName: ThreadConfig - * @Author: zhaoxinguo - * @Date: 2019/3/20 18:24 - * @Description: 线程池配置 - */ -@Configuration -public class ThreadConfig { - - @Bean - public ThreadPoolTaskExecutor taskExecutor() { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setCorePoolSize(20); - executor.setMaxPoolSize(100); - executor.setKeepAliveSeconds(30000); - executor.setQueueCapacity(100); - executor.setThreadNamePrefix("default_task_executor_thread"); - executor.initialize(); - return executor; - } - - @Bean - public BCryptPasswordEncoder bCryptPasswordEncoder() { - return new BCryptPasswordEncoder(); - } - - @Bean - public ApplicationUtil applicationUtil() { - return new ApplicationUtil(); - } - -} diff --git a/src/main/java/org/micai/platform/auth/controller/ImageCodeController.java b/src/main/java/org/micai/platform/auth/controller/ImageCodeController.java deleted file mode 100644 index 64bbe2bfc5977cf477144e52985d430f8cbd970f..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/controller/ImageCodeController.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.micai.platform.auth.controller; - -import cn.hutool.captcha.CaptchaUtil; -import cn.hutool.captcha.LineCaptcha; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.constant.ConstantCode; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * @Author liuCong - * @Date 2022/1/4 10:53 - * @ClassName ImageCodeController - * @Description - */ -@Controller -@Api(tags = "图形验证码", value = "图形验证码") -@RequestMapping("/image") -@Slf4j -public class ImageCodeController extends BaseController { - - - @GetMapping("/code") - @ApiOperation(value = "获取图形验证码", notes = "获取图形验证码") - public void getImage(HttpServletRequest request, HttpServletResponse response) { - try { - LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(ConstantCode.INT_TWO_HUNDRED, ConstantCode.INT_ONE_HUNDRED); - String code = lineCaptcha.getCode(); - log.info("code info:{}", code); - request.getSession().setAttribute(ConstantCode.SESSION_KEY, code); - ServletOutputStream outputStream = response.getOutputStream(); - lineCaptcha.write(outputStream); - outputStream.flush(); - outputStream.close(); - } catch (Exception e) { - log.error("error info:", e); - } - } - -} diff --git a/src/main/java/org/micai/platform/auth/controller/OrganInfoController.java b/src/main/java/org/micai/platform/auth/controller/OrganInfoController.java deleted file mode 100644 index 1a1cd034d6103bb444d9209c0c581f9a737c606f..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/controller/OrganInfoController.java +++ /dev/null @@ -1,112 +0,0 @@ -package org.micai.platform.auth.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.bo.*; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.service.OrganInfoService; -import org.micai.platform.auth.vo.OrganListVo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.validation.Valid; - -/** - *

- * 前端控制器 - *

- * - * @author liucong - * @since 2021-12-06 - */ -@RestController -@RequestMapping("/organ") -@Api(tags = "组织管理", value = "组织管理") -@Slf4j -public class OrganInfoController { - - @Autowired - private OrganInfoService organInfoService; - - @ApiOperation(value = "获取组织列表", notes = "获取组织列表") - @PostMapping("/getOrganList") - @PreAuthorize("hasAnyAuthority('root')") - public Result getOrganList(@RequestBody OrganFindBo bo){ - Result result; - try { - Page page = organInfoService.getOrganList(bo); - result = new Result(ConstantEnum.SUCCESS,page); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } - - - @ApiOperation(value = "更新组织信息", notes = "更新组织信息") - @PostMapping("/updateOrgan") - @PreAuthorize("hasAnyAuthority('root')") - public Result updateOrgan(@RequestBody @Valid OrganUpdateBo bo){ - Result result; - try { - organInfoService.updateOrgan(bo); - result = new Result(ConstantEnum.SUCCESS); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } - - @ApiOperation(value = "新增组织", notes = "新增组织") - @PostMapping("/saveOrgan") - @PreAuthorize("hasAnyAuthority('root')") - public Result saveOrgan(@RequestBody @Valid OrganSaveBo bo){ - Result result; - try { - organInfoService.saveOrgan(bo); - result = new Result(ConstantEnum.SUCCESS); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } - - @ApiOperation(value = "删除组织", notes = "删除组织") - @PostMapping("/delOrgan") - @PreAuthorize("hasAnyAuthority('root')") - public Result delOrgan(@RequestBody @Valid OrganDelBo bo){ - Result result; - try { - organInfoService.delOrgan(bo); - result = new Result(ConstantEnum.SUCCESS); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } -} - diff --git a/src/main/java/org/micai/platform/auth/controller/OrganUserController.java b/src/main/java/org/micai/platform/auth/controller/OrganUserController.java deleted file mode 100644 index b7afab99dd6fa18b973fad32b4850bf0231da081..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/controller/OrganUserController.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.micai.platform.auth.controller; - - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - *

- * 前端控制器 - *

- * - * @author liucong - * @since 2022-01-13 - */ -@RestController -@RequestMapping("/Tb/organUser") -public class OrganUserController { - -} - diff --git a/src/main/java/org/micai/platform/auth/controller/PermissionMenuController.java b/src/main/java/org/micai/platform/auth/controller/PermissionMenuController.java deleted file mode 100644 index 17a87072cde53c5042632d3ce785e8b433374694..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/controller/PermissionMenuController.java +++ /dev/null @@ -1,89 +0,0 @@ -package org.micai.platform.auth.controller; - - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.bo.*; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.service.PermissionMenuService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import javax.validation.Valid; - -/** - *

- * 前端控制器 - *

- * - * @author liucong - * @since 2022-01-13 - */ -@RestController -@RequestMapping("/permissionMenu") -@Slf4j -@Api(tags = "权限菜单管理", value = "权限菜单管理") -public class PermissionMenuController extends BaseController{ - @Autowired - private PermissionMenuService permissionMenuService; - - - @ApiOperation(value = "更新角色菜单权限", notes = "更新角色菜单权限") - @PostMapping("/update") - @PreAuthorize("hasAnyAuthority('sys:permissionMenu:update')") - public Result updatePM(@RequestBody @Valid PermissionMenuUpdateBo bo){ - Result result; - try { - permissionMenuService.updatePM(bo); - result = new Result(ConstantEnum.SUCCESS); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } - - @ApiOperation(value = "新增角色菜单权限", notes = "新增角色菜单权限") - @PostMapping("/save") - @PreAuthorize("hasAnyAuthority('sys:permissionMenu:save')") - public Result savePM(@RequestBody @Valid PermissionMenuSaveBo bo){ - Result result; - try { - permissionMenuService.savePM(bo); - result = new Result(ConstantEnum.SUCCESS); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } - - @ApiOperation(value = "删除角色菜单权限", notes = "删除角色菜单权限") - @DeleteMapping("/del") - @PreAuthorize("hasAnyAuthority('sys:permissionMenu:del')") - public Result delPM(@RequestBody @Valid PermissionMenuDelBo bo){ - Result result; - try { - permissionMenuService.delPM(bo); - result = new Result(ConstantEnum.SUCCESS); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } -} - diff --git a/src/main/java/org/micai/platform/auth/controller/SysDictController.java b/src/main/java/org/micai/platform/auth/controller/SysDictController.java deleted file mode 100644 index ef77b8ae517119de0837cab9f50598a9e2066b97..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/controller/SysDictController.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.micai.platform.auth.controller; - - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - *

- * 前端控制器 - *

- * - * @author liucong - * @since 2021-12-06 - */ -@RestController -@RequestMapping("/Tb/sysDict") -public class SysDictController { - -} - diff --git a/src/main/java/org/micai/platform/auth/controller/SysMenuController.java b/src/main/java/org/micai/platform/auth/controller/SysMenuController.java deleted file mode 100644 index d593be81c3a4ebd5fc57450dafeef0681439ce30..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/controller/SysMenuController.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.micai.platform.auth.controller; - - -import cn.hutool.core.lang.tree.Tree; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.bo.MenuDelBo; -import org.micai.platform.auth.bo.MenuSaveBo; -import org.micai.platform.auth.bo.MenuUpdateBo; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.service.SysMenuService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import javax.validation.Valid; -import java.util.List; - -/** - *

- * 前端控制器 - *

- * - * @author liucong - * @since 2021-12-06 - */ -@RestController -@RequestMapping("/sysMenu") -@Api(tags = "菜单管理", value = "菜单管理") -@Slf4j -public class SysMenuController extends BaseController{ - - @Autowired - private SysMenuService sysMenuService; - - - @PostMapping("/list") - @PreAuthorize("hasAnyAuthority('sys:sysMenu:list')") - @ApiOperation(value = "查询菜单", notes = "登录后查询菜单列表") - public Result find() { - Result result; - try { - List> treeList = sysMenuService.find(); - result = new Result(ConstantEnum.SUCCESS,treeList); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } - - - @ApiOperation(value = "更新菜单", notes = "更新菜单") - @PostMapping("/update") - @PreAuthorize("hasAnyAuthority('sys:sysMenu:update')") - public Result updateMenu(@RequestBody @Valid MenuUpdateBo bo){ - Result result; - try { - sysMenuService.updateMenu(bo); - result = new Result(ConstantEnum.SUCCESS); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } - - @ApiOperation(value = "新增菜单", notes = "新增菜单") - @PostMapping("/save") - @PreAuthorize("hasAnyAuthority('sys:sysMenu:save')") - public Result saveMenu(@RequestBody @Valid MenuSaveBo bo){ - Result result; - try { - sysMenuService.saveMenu(bo); - result = new Result(ConstantEnum.SUCCESS); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } - - @ApiOperation(value = "删除菜单", notes = "删除菜单") - @DeleteMapping("/del") - @PreAuthorize("hasAnyAuthority('sys:sysMenu:del')") - public Result delMenu(@RequestBody @Valid MenuDelBo bo){ - Result result; - try { - sysMenuService.delMenu(bo); - result = new Result(ConstantEnum.SUCCESS); - } catch (PlatformException e) { - log.error("error info:",e); - result = new Result(e.getErrorCode(), e.getErrorMessage()); - } catch (Exception e) { - log.error("error info:",e); - result = new Result(ConstantEnum.FAIL); - } - return result; - } -} - diff --git a/src/main/java/org/micai/platform/auth/controller/SysRegionController.java b/src/main/java/org/micai/platform/auth/controller/SysRegionController.java deleted file mode 100644 index 75bc2aba7cf06f1f23c6a525b3334336add2c3f8..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/controller/SysRegionController.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.micai.platform.auth.controller; - - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.base.result.Result; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.entity.SysRegion; -import org.micai.platform.auth.entity.User; -import org.micai.platform.auth.service.SysRegionService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 区域管理控制层 - * @author yangtao - * @since 2021-12-31 - */ -@Slf4j -@Api(tags = "区域管理", value = "区域管理") -@RestController -@RequestMapping("/sysRegion") -public class SysRegionController { - - @Autowired - private SysRegionService sysRegionService; - - @ApiOperation(value = "根据区域用户名查询",notes = "根据区域用户名查询") - @PostMapping("/findByRegionName") - public Result findByRegionName(@RequestBody SysRegion sysRegion) throws Exception { - SysRegion sysRegion1 = sysRegionService.findByRegionName(sysRegion.getRegionName()); - return new Result(ConstantEnum.SUCCESS); - } - - - @ApiOperation(value = "获取区域列表",notes = "获取区域列表") - @GetMapping("/sysRegionList") - public Map sysRegionList() throws Exception{ - List sysRegions = sysRegionService.findSysRegionList(); - Map map = new HashMap(); - map.put("sysRegions",sysRegions); - return map; - } - - - - - -} - diff --git a/src/main/java/org/micai/platform/auth/controller/UploadController.java b/src/main/java/org/micai/platform/auth/controller/UploadController.java deleted file mode 100644 index cc6ff85ddddc570e64931072715797e8b83b543a..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/controller/UploadController.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.micai.platform.auth.controller; - -import cn.hutool.core.util.ObjectUtil; -import io.swagger.annotations.Api; -import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.base.result.UploadResult; -import org.micai.platform.auth.utils.FileKit; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.ServletRequestUtils; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; - -/** - * 文件上传 - * - */ -@Controller -@RequestMapping("/upload") -@Api(tags = "文件上传", value = "文件上传") -@Slf4j -public class UploadController extends BaseController { - - @PostMapping("/store") - @ResponseBody - public UploadResult store(@RequestParam(value = "file", required = false) MultipartFile file, - HttpServletRequest request){ - // 检查空 - if (ObjectUtil.isEmpty(file)) { - return new UploadResult(ConstantEnum.NO_FILE); - } - - String fileName = file.getOriginalFilename(); - - // 检查类型 - if (!FileKit.checkFileType(fileName)) { - return new UploadResult(ConstantEnum.TYPE); - } - - // 检查大小 - String limitSize = siteOptions.getValue(ConstantCode.STORAGE_LIMIT_SIZE); - if (ObjectUtil.isEmpty(limitSize)) { - limitSize = ConstantCode.STR_TWO; - } - if (file.getSize() > (Long.parseLong(limitSize) * ConstantCode.DING * ConstantCode.DING)) { - return new UploadResult(ConstantEnum.SIZE); - } - - // 保存图片 - try { - String path = storageFactory.get().store(file, ConstantCode.thumbnailPath); - return new UploadResult(ConstantEnum.SUCCESS).setName(fileName).setPath(path).setSize(file.getSize()); - } catch (Exception e) { - log.error("error info:",e); - return new UploadResult(ConstantEnum.UNKNOWN); - } - } - - @PostMapping("/storeScale") - @ResponseBody - public UploadResult storeScale(@RequestParam(value = "file", required = false) MultipartFile file, - HttpServletRequest request) { - String crop = request.getParameter("crop"); - int size = ServletRequestUtils.getIntParameter(request, ConstantCode.SIZE, siteOptions.getIntegerValue(ConstantCode.STORAGE_MAX_WIDTH)); - - // 检查空 - if (ObjectUtil.isEmpty(file)) { - return new UploadResult(ConstantEnum.NO_FILE); - } - - String fileName = file.getOriginalFilename(); - - // 检查类型 - if (!FileKit.checkFileType(fileName)) { - return new UploadResult(ConstantEnum.TYPE); - } - - // 检查大小 - String limitSize = siteOptions.getValue(ConstantCode.STORAGE_LIMIT_SIZE); - if (ObjectUtil.isEmpty(limitSize)) { - limitSize = ConstantCode.STR_TWO; - } - if (file.getSize() > (Long.parseLong(limitSize) * ConstantCode.DING * ConstantCode.DING)) { - return new UploadResult(ConstantEnum.SIZE); - } - - // 保存图片 - try { - String path; - if (ObjectUtil.isEmpty(crop)) { - Integer[] imageSize = siteOptions.getIntegerArrayValue(crop, ConstantCode.SEPARATOR_X); - int width = ServletRequestUtils.getIntParameter(request, ConstantCode.WIDTH, imageSize[ConstantCode.INT_ZERO]); - int height = ServletRequestUtils.getIntParameter(request, ConstantCode.HEIGHT, imageSize[ConstantCode.INT_ONE]); - path = storageFactory.get().storeScale(file, ConstantCode.thumbnailPath, width, height); - } else { - path = storageFactory.get().storeScale(file, ConstantCode.thumbnailPath, size); - } - return new UploadResult(ConstantEnum.SUCCESS).setName(fileName).setPath(path).setSize(file.getSize()); - } catch (Exception e) { - log.error("error info:",e); - return new UploadResult(ConstantEnum.UNKNOWN); - } - } -} diff --git a/src/main/java/org/micai/platform/auth/entity/OrganInfo.java b/src/main/java/org/micai/platform/auth/entity/OrganInfo.java deleted file mode 100644 index 9064c2153bc92e1f8f4058bd750e55bef97d9f78..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/entity/OrganInfo.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.micai.platform.auth.entity; - -import com.baomidou.mybatisplus.annotation.*; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * - *

- * - * @author liucong - * @since 2021-12-06 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="OrganInfo对象", description="") -public class OrganInfo implements Serializable { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "主键id") - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - @ApiModelProperty(value = "机构编码") - private String code; - - @ApiModelProperty(value = "机构名称") - private String name; - - @ApiModelProperty(value = "机构类型") - private String type; - - @ApiModelProperty(value = "创建人") - private Long createUserId; - - @ApiModelProperty(value = "创建时间") - @TableField(fill = FieldFill.INSERT) - private Date createTime; - - @ApiModelProperty(value = "修改人") - private Long updateUserId; - - @ApiModelProperty(value = "修改时间") - @TableField(fill = FieldFill.INSERT_UPDATE) - private Date updateTime; - - @ApiModelProperty(value = "状态 默认01 启用") - private String status; - - @ApiModelProperty(value = "版本号") - @Version - private Long version; - - -} diff --git a/src/main/java/org/micai/platform/auth/entity/SysDict.java b/src/main/java/org/micai/platform/auth/entity/SysDict.java deleted file mode 100644 index 59dc14bf505117044349dd5e9115373b0b4e33db..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/entity/SysDict.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.micai.platform.auth.entity; - -import com.baomidou.mybatisplus.annotation.*; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * - *

- * - * @author liucong - * @since 2021-12-10 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="SysDict对象", description="") -public class SysDict implements Serializable { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "主键id") - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - @ApiModelProperty(value = "字段名称") - private String dictName; - - @ApiModelProperty(value = "字段编码") - private String dictCode; - - @ApiModelProperty(value = "创建人id") - private Long createUserId; - - @ApiModelProperty(value = "创建时间") - @TableField(fill = FieldFill.INSERT) - private Date createTime; - - @ApiModelProperty(value = "修改人id") - private Long updateUserId; - - @ApiModelProperty(value = "修改时间") - @TableField(fill = FieldFill.INSERT_UPDATE) - private Date updateTime; - - @ApiModelProperty(value = "状态: 01 启用 02停用") - private String status; - - @ApiModelProperty(value = "版本号") - @Version - private Long version; - - -} diff --git a/src/main/java/org/micai/platform/auth/entity/SysMenu.java b/src/main/java/org/micai/platform/auth/entity/SysMenu.java deleted file mode 100644 index 21698c7c05ec08a62318e434f6a96d48e539cded..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/entity/SysMenu.java +++ /dev/null @@ -1,85 +0,0 @@ -package org.micai.platform.auth.entity; - -import com.baomidou.mybatisplus.annotation.*; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * - *

- * - * @author liucong - * @since 2021-12-06 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="SysMenu对象", description="") -public class SysMenu implements Serializable { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "主键id") - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - @ApiModelProperty(value = "菜单编码") - private String menuCode; - - @ApiModelProperty(value = "菜单名称") - private String menuName; - - @ApiModelProperty(value = "业务系统标识,区分不同业务系统菜单") - private String systemCode; - - @ApiModelProperty(value = "业务系统名称") - private String systemName; - - @ApiModelProperty(value = "终端类型,00:平台") - private String application; - - @ApiModelProperty(value = "父级菜单编码") - private String parentCode; - - @ApiModelProperty(value = "菜单图标") - private String menuIcon; - - @ApiModelProperty(value = "菜单访问路径") - private String url; - - @ApiModelProperty(value = "菜单打开类型,1:路由 2:新标签页 3:iframe") - private String openType; - - @ApiModelProperty(value = "序号") - private Integer sn; - - @ApiModelProperty(value = "创建时间") - @TableField(fill = FieldFill.INSERT) - private Date createTime; - - @ApiModelProperty(value = "创建人") - private Long createUserId; - - @ApiModelProperty(value = "修改人") - private Long updateUserId; - - @ApiModelProperty(value = "修改时间") - @TableField(fill = FieldFill.INSERT_UPDATE) - private Date updateTime; - - @ApiModelProperty(value = "启用标识 01 启用") - private String status; - - @ApiModelProperty(value = "版本号") - @Version - private Long version; - - -} diff --git a/src/main/java/org/micai/platform/auth/entity/SysRegion.java b/src/main/java/org/micai/platform/auth/entity/SysRegion.java deleted file mode 100644 index f3f98e70809ab32e22c8b0a85a2063699a45af8c..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/entity/SysRegion.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.micai.platform.auth.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.Version; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 区域地址表 - *

- * - * @author yangtao - * @since 2021-12-31 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="SysRegion对象", description="区域地址表") -public class SysRegion implements Serializable { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "区域主键编号") - @TableId(value = "region_id", type = IdType.AUTO) - private String regionId; - - @ApiModelProperty(value = "区域名称") - private String regionName; - - @ApiModelProperty(value = "区域缩写") - private String regionShortName; - - @ApiModelProperty(value = "行政区域编号") - private String regionCode; - - @ApiModelProperty(value = "区域父id") - private String regionParentId; - - @ApiModelProperty(value = "区域级别 1-省、自治区、直辖市 2-地级市、地区、自治州、盟 3-市辖区、县级市、县") - private Integer regionLevel; - - @ApiModelProperty(value = "创建人") - private Long createUserId; - - @ApiModelProperty(value = "创建时间") - private Date createTime; - - @ApiModelProperty(value = "修改人") - private Long updateUserId; - - @ApiModelProperty(value = "修改时间") - private Date updateTime; - - @ApiModelProperty(value = "版本号") - @Version - private Long version; - - -} diff --git a/src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java b/src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java deleted file mode 100644 index 6d733b8e23396f9df12c2eeba59f1177196b4da9..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/filter/ImageCodeValidateFilter.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.micai.platform.auth.filter; - -import cn.hutool.core.util.ObjectUtil; -import org.micai.platform.auth.base.exception.MyAuthException; -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.handler.CustomAuthenticationFailureHandler; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; -import org.springframework.web.filter.OncePerRequestFilter; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -/** - * @Author liuCong - * @Date 2022/1/4 11:25 - * @ClassName ImageCodeValidateFilter - * @Description - */ -@Component -public class ImageCodeValidateFilter extends OncePerRequestFilter { - @Autowired - private CustomAuthenticationFailureHandler customAuthenticationFailureHandler; - - @Value("${image.code.flag}") - private boolean imageCodeFlag; - - @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { - try { - if (imageCodeFlag){ - String code = request.getParameter(ConstantCode.IMAGE_CODE); - if (ObjectUtil.isEmpty(code)) { - throw new MyAuthException(ConstantEnum.IMAGE_ERROR); - } - String imageCode = (String) request.getSession().getAttribute(ConstantCode.SESSION_KEY); - if (ObjectUtil.isEmpty(imageCode) && !imageCode.equals(code)){ - throw new MyAuthException(ConstantEnum.IMAGE_ERROR); - } - } - } catch (MyAuthException e) { - customAuthenticationFailureHandler.onAuthenticationFailure(request,response,e); - } - - filterChain.doFilter(request,response); - } -} diff --git a/src/main/java/org/micai/platform/auth/mapper/OrganInfoMapper.java b/src/main/java/org/micai/platform/auth/mapper/OrganInfoMapper.java deleted file mode 100644 index 1c8a58d7581b8ec0463cfcbd1d1ae4d7959ac82d..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/mapper/OrganInfoMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.micai.platform.auth.mapper; - -import org.micai.platform.auth.entity.OrganInfo; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author liucong - * @since 2021-12-06 - */ -public interface OrganInfoMapper extends BaseMapper { - -} diff --git a/src/main/java/org/micai/platform/auth/mapper/OrganUserMapper.java b/src/main/java/org/micai/platform/auth/mapper/OrganUserMapper.java deleted file mode 100644 index bc426d37ac73a788d9dd88fdbaac4e8066523bb3..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/mapper/OrganUserMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.micai.platform.auth.mapper; - -import org.micai.platform.auth.entity.OrganUser; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author liucong - * @since 2021-12-06 - */ -public interface OrganUserMapper extends BaseMapper { - -} diff --git a/src/main/java/org/micai/platform/auth/mapper/PermissionMenuMapper.java b/src/main/java/org/micai/platform/auth/mapper/PermissionMenuMapper.java deleted file mode 100644 index 501110a4492697625896f03003a6e1a9bf6b00ff..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/mapper/PermissionMenuMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.micai.platform.auth.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.micai.platform.auth.entity.PermissionMenu; - -/** - *

- * Mapper 接口 - *

- * - * @author liucong - * @since 2021-12-06 - */ -public interface PermissionMenuMapper extends BaseMapper { - -} diff --git a/src/main/java/org/micai/platform/auth/mapper/SysDictItemMapper.java b/src/main/java/org/micai/platform/auth/mapper/SysDictItemMapper.java deleted file mode 100644 index 78b16fdda9a3cc1e054566f6d6a0a356b05ec4a7..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/mapper/SysDictItemMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.micai.platform.auth.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.micai.platform.auth.entity.SysDictItem; - -/** - *

- * Mapper 接口 - *

- * - * @author liucong - * @since 2021-12-10 - */ -public interface SysDictItemMapper extends BaseMapper { - -} diff --git a/src/main/java/org/micai/platform/auth/mapper/SysDictMapper.java b/src/main/java/org/micai/platform/auth/mapper/SysDictMapper.java deleted file mode 100644 index 26a634adf60b440be0f6a5886d82cc9e40b664b7..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/mapper/SysDictMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.micai.platform.auth.mapper; - -import org.micai.platform.auth.entity.SysDict; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author liucong - * @since 2021-12-06 - */ -public interface SysDictMapper extends BaseMapper { - -} diff --git a/src/main/java/org/micai/platform/auth/mapper/SysMenuMapper.java b/src/main/java/org/micai/platform/auth/mapper/SysMenuMapper.java deleted file mode 100644 index 7c90b05a8636358233a32798c3161761f71a1cb6..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/mapper/SysMenuMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.micai.platform.auth.mapper; - -import org.micai.platform.auth.entity.SysMenu; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author liucong - * @since 2021-12-06 - */ -public interface SysMenuMapper extends BaseMapper { - -} diff --git a/src/main/java/org/micai/platform/auth/mapper/SysRegionMapper.java b/src/main/java/org/micai/platform/auth/mapper/SysRegionMapper.java deleted file mode 100644 index 91ce6511d76e0acd4bb1483c3bab33695d4d7e52..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/mapper/SysRegionMapper.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.micai.platform.auth.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.micai.platform.auth.entity.SysRegion; - - -/** - *

- * 区域地址表 Mapper 接口 - *

- * - * @author yangtao - * @since 2021-12-31 - */ -public interface SysRegionMapper extends BaseMapper { - - SysRegion findByRegionName(String regionName); - -} diff --git a/src/main/java/org/micai/platform/auth/service/OrganInfoService.java b/src/main/java/org/micai/platform/auth/service/OrganInfoService.java deleted file mode 100644 index 5016f2fd37023816776621d50595f472d11800c3..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/service/OrganInfoService.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.micai.platform.auth.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.micai.platform.auth.bo.OrganDelBo; -import org.micai.platform.auth.bo.OrganFindBo; -import org.micai.platform.auth.bo.OrganSaveBo; -import org.micai.platform.auth.bo.OrganUpdateBo; -import org.micai.platform.auth.entity.OrganInfo; -import com.baomidou.mybatisplus.extension.service.IService; -import org.micai.platform.auth.vo.OrganListVo; - -/** - *

- * 服务类 - *

- * - * @author liucong - * @since 2021-12-06 - */ -public interface OrganInfoService extends IService { - - Page getOrganList(OrganFindBo bo); - - void updateOrgan(OrganUpdateBo bo); - - void saveOrgan(OrganSaveBo bo); - - void delOrgan(OrganDelBo bo); -} diff --git a/src/main/java/org/micai/platform/auth/service/PermissionMenuService.java b/src/main/java/org/micai/platform/auth/service/PermissionMenuService.java deleted file mode 100644 index 68688ce6398bab193075995596531064ff8e0e5e..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/service/PermissionMenuService.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.micai.platform.auth.service; - -import org.micai.platform.auth.bo.PermissionMenuDelBo; -import org.micai.platform.auth.bo.PermissionMenuSaveBo; -import org.micai.platform.auth.bo.PermissionMenuUpdateBo; - -/** - * @Author liuCong - * @Date 2022/1/13 16:54 - * @ClassName PermissionMenuService - * @Description - */ -public interface PermissionMenuService { - void updatePM(PermissionMenuUpdateBo bo) throws Exception; - - void savePM(PermissionMenuSaveBo bo) throws Exception; - - void delPM(PermissionMenuDelBo bo) throws Exception; -} diff --git a/src/main/java/org/micai/platform/auth/service/SysMenuService.java b/src/main/java/org/micai/platform/auth/service/SysMenuService.java deleted file mode 100644 index e9bccda623925552ba2f59184e747c115e643aed..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/service/SysMenuService.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.micai.platform.auth.service; - -import cn.hutool.core.lang.tree.Tree; -import com.baomidou.mybatisplus.extension.service.IService; -import org.micai.platform.auth.bo.MenuDelBo; -import org.micai.platform.auth.bo.MenuSaveBo; -import org.micai.platform.auth.bo.MenuUpdateBo; -import org.micai.platform.auth.entity.SysMenu; - -import java.util.List; - -/** - *

- * 服务类 - *

- * - * @author liucong - * @since 2021-12-06 - */ -public interface SysMenuService extends IService { - - List> find() throws Exception; - - void updateMenu(MenuUpdateBo bo) throws Exception; - - void saveMenu(MenuSaveBo bo) throws Exception; - - void delMenu(MenuDelBo bo) throws Exception; -} diff --git a/src/main/java/org/micai/platform/auth/service/SysRegionService.java b/src/main/java/org/micai/platform/auth/service/SysRegionService.java deleted file mode 100644 index df1b2340cbbc0630bdebbba3d633a012af72775f..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/service/SysRegionService.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.micai.platform.auth.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import org.micai.platform.auth.entity.SysRegion; -import org.micai.platform.auth.entity.User; - -import java.util.List; - -/** - *

- * 区域地址表 服务类 - *

- * - * @author yangtao - * @since 2021-12-31 - */ -public interface SysRegionService extends IService { - /** - * 根据区域名称进行查询 - * @param regionName - * @return - */ - SysRegion findByRegionName(String regionName) throws Exception; - - /** - * 获取区域列表 - * @return - */ - List findSysRegionList() throws Exception; - -} diff --git a/src/main/java/org/micai/platform/auth/service/impl/OrganInfoServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/OrganInfoServiceImpl.java deleted file mode 100644 index 4960b044539eae614fccf17de52ac944956bfca2..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/service/impl/OrganInfoServiceImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.micai.platform.auth.service.impl; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.micai.platform.auth.bo.OrganDelBo; -import org.micai.platform.auth.bo.OrganFindBo; -import org.micai.platform.auth.bo.OrganSaveBo; -import org.micai.platform.auth.bo.OrganUpdateBo; -import org.micai.platform.auth.entity.OrganInfo; -import org.micai.platform.auth.mapper.OrganInfoMapper; -import org.micai.platform.auth.service.OrganInfoService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.micai.platform.auth.vo.OrganListVo; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author liucong - * @since 2021-12-06 - */ -@Service -public class OrganInfoServiceImpl extends ServiceImpl implements OrganInfoService { - - @Override - public Page getOrganList(OrganFindBo bo) { - return null; - } - - @Override - public void updateOrgan(OrganUpdateBo bo) { - - } - - @Override - public void saveOrgan(OrganSaveBo bo) { - - } - - @Override - public void delOrgan(OrganDelBo bo) { - - } -} diff --git a/src/main/java/org/micai/platform/auth/service/impl/PermissionMenuServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/PermissionMenuServiceImpl.java deleted file mode 100644 index 5bf5a2fbd605d447d10a0b5463752101e9a5a0f6..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/service/impl/PermissionMenuServiceImpl.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.micai.platform.auth.service.impl; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.bo.PermissionMenuDelBo; -import org.micai.platform.auth.bo.PermissionMenuSaveBo; -import org.micai.platform.auth.bo.PermissionMenuUpdateBo; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.dto.UserAuthenticationDto; -import org.micai.platform.auth.entity.PermissionMenu; -import org.micai.platform.auth.mapper.PermissionMenuMapper; -import org.micai.platform.auth.service.PermissionMenuService; -import org.micai.platform.auth.utils.AuthenticationManger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * @Author liuCong - * @Date 2022/1/13 16:54 - * @ClassName PermissionMenuServiceImpl - * @Description - */ -@Service -public class PermissionMenuServiceImpl extends ServiceImpl implements PermissionMenuService { - @Autowired - private PermissionMenuMapper permissionMenuMapper; - - @Override - public void updatePM(PermissionMenuUpdateBo bo) throws Exception { - PermissionMenu permissionMenu = BeanUtil.copyProperties(bo, PermissionMenu.class); - UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); - permissionMenu.setUpdateUserId(authentication.getId()); - PermissionMenu permissionMenuEn = permissionMenuMapper.selectById(permissionMenu.getId()); - permissionMenu.setVersion(permissionMenuEn.getVersion()); - permissionMenuMapper.updateById(permissionMenu); - } - - @Override - public void savePM(PermissionMenuSaveBo bo) throws Exception { - PermissionMenu permissionMenu = BeanUtil.copyProperties(bo, PermissionMenu.class); - - //不能有重复的 - List permissionMenus = permissionMenuMapper.selectList(new QueryWrapper().lambda() - .eq(PermissionMenu::getPermissionId, bo.getPermissionId()) - .eq(PermissionMenu::getMenuId, bo.getMenuId())); - - if (ObjectUtil.isNotEmpty(permissionMenus)) { - throw new PlatformException(ConstantEnum.DATA_DUPLICATION); - } - - UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); - permissionMenu - .setCreateUserId(authentication.getId()) - .setUpdateUserId(authentication.getId()); - permissionMenuMapper.insert(permissionMenu); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delPM(PermissionMenuDelBo bo) throws Exception { - List idList = bo.getIdList(); - int deleteBatchIds = permissionMenuMapper.deleteBatchIds(idList); - if (idList.size() != deleteBatchIds){ - throw new PlatformException(ConstantEnum.UPDATE_ERROR); - } - } -} diff --git a/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java deleted file mode 100644 index 8edcb2d4a9bed483734d9afc6fa1c64b6822bcb3..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java +++ /dev/null @@ -1,128 +0,0 @@ -package org.micai.platform.auth.service.impl; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.lang.tree.Tree; -import cn.hutool.core.lang.tree.TreeNodeConfig; -import cn.hutool.core.lang.tree.TreeUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.RandomUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.micai.platform.auth.bo.MenuDelBo; -import org.micai.platform.auth.bo.MenuSaveBo; -import org.micai.platform.auth.bo.MenuUpdateBo; -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantEnum; -import org.micai.platform.auth.dto.UserAuthenticationDto; -import org.micai.platform.auth.entity.Permission; -import org.micai.platform.auth.entity.PermissionMenu; -import org.micai.platform.auth.entity.SysMenu; -import org.micai.platform.auth.base.exception.PlatformException; -import org.micai.platform.auth.mapper.PermissionMapper; -import org.micai.platform.auth.mapper.PermissionMenuMapper; -import org.micai.platform.auth.mapper.SysMenuMapper; -import org.micai.platform.auth.service.SysMenuService; -import org.micai.platform.auth.utils.AuthenticationManger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.stream.Collectors; - -/** - *

- * 服务实现类 - *

- * - * @author liucong - * @since 2021-12-06 - */ -@Service -public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService { - - @Autowired - private PermissionMapper permissionMapper; - - @Autowired - private PermissionMenuMapper permissionMenuMapper; - - @Autowired - private SysMenuMapper sysMenuMapper; - - @Override - public List> find() throws Exception{ - UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); - List permissions = authentication.getPermissions(); - List permissionList = permissionMapper.selectList(new QueryWrapper().lambda().in(Permission::getPermissionCode, permissions)); - List permissionCodeList = permissionList.stream().map(Permission::getId).collect(Collectors.toList()); - List permissionMenus = permissionMenuMapper.selectList(new QueryWrapper().in("permission_id",permissionCodeList)); - if (ObjectUtil.isEmpty(permissionMenus)){ - return null; - } - List menuIds = permissionMenus.stream().map(PermissionMenu::getMenuId).collect(Collectors.toList()); - List menuList = sysMenuMapper.selectList(new QueryWrapper().in("id", menuIds).eq("status", ConstantCode.STR_Z_ONE)); - if (ObjectUtil.isNotEmpty(menuList)){ - //配置 - TreeNodeConfig treeNodeConfig = new TreeNodeConfig(); - // 自定义属性名 都要默认值的 - treeNodeConfig.setWeightKey("order"); - treeNodeConfig.setIdKey("rid"); - // 最大递归深度 - treeNodeConfig.setDeep(ConstantCode.INT_THREE); - //转换器 00代表根目录 - return TreeUtil.build(menuList, ConstantCode.STR_DOUBLE_ZONE, treeNodeConfig, - (treeNode, tree) -> { - tree.setId(treeNode.getMenuCode()); - tree.setParentId(treeNode.getParentCode()); - tree.setWeight(treeNode.getSn()); - // 扩展属性 ... - tree.putExtra("menuIcon", treeNode.getMenuIcon()); - tree.putExtra("url", treeNode.getUrl()); - tree.putExtra("openType", treeNode.getOpenType()); - tree.putExtra("sn", treeNode.getSn()); - tree.putExtra("menuName", treeNode.getMenuName()); - tree.putExtra("menuCode", treeNode.getMenuCode()); - }); - } - - return null; - } - - @Override - public void updateMenu(MenuUpdateBo bo) throws Exception { - SysMenu sysMenu = BeanUtil.copyProperties(bo, SysMenu.class); - UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); - sysMenu.setUpdateUserId(authentication.getId()); - SysMenu sysMenuEn = sysMenuMapper.selectById(sysMenu.getId()); - sysMenu.setVersion(sysMenuEn.getVersion()); - int i = sysMenuMapper.updateById(sysMenu); - if (ConstantCode.INT_ONE != i){ - throw new PlatformException(ConstantEnum.UPDATE_ERROR); - } - } - - @Override - public void saveMenu(MenuSaveBo bo) throws Exception { - SysMenu sysMenu = BeanUtil.copyProperties(bo, SysMenu.class); - UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); - sysMenu.setMenuCode(RandomUtil.randomString(ConstantCode.INT_TEN)) - .setCreateUserId(authentication.getId()) - .setUpdateUserId(authentication.getId()) - .setStatus(ConstantCode.STR_Z_ONE); - int i = sysMenuMapper.insert(sysMenu); - if (ConstantCode.INT_ONE != i){ - throw new PlatformException(ConstantEnum.UPDATE_ERROR); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delMenu(MenuDelBo bo) throws Exception { - List idList = bo.getIdList(); - int deleteBatchIds = permissionMapper.deleteBatchIds(idList); - if (idList.size() != deleteBatchIds){ - throw new PlatformException(ConstantEnum.UPDATE_ERROR); - } - } -} diff --git a/src/main/java/org/micai/platform/auth/service/impl/SysRegionServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/SysRegionServiceImpl.java deleted file mode 100644 index cc2de03de2d506eb949fcc0fd83e078517d1a4ea..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/service/impl/SysRegionServiceImpl.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.micai.platform.auth.service.impl; - -import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.micai.platform.auth.entity.SysRegion; -import org.micai.platform.auth.entity.User; -import org.micai.platform.auth.mapper.SysRegionMapper; -import org.micai.platform.auth.service.SysRegionService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - *

- * 区域地址表 服务实现类 - *

- * - * @author yangtao - * @since 2021-12-31 - */ -@Service -public class SysRegionServiceImpl extends ServiceImpl implements SysRegionService { - - @Autowired - private SysRegionMapper sysRegionMapper; - - @Override - public SysRegion findByRegionName(String regionName) { - if (ObjectUtil.isNotEmpty(regionName)){ - SysRegion sysRegion = sysRegionMapper.selectOne(new QueryWrapper().lambda().eq(SysRegion::getRegionName, regionName)); - return sysRegion; - } - return null; - } - - @Override - public List findSysRegionList() { - List sysRegionList = sysRegionMapper.selectList(Wrappers.lambdaQuery()); - return sysRegionList; - } -} diff --git a/src/main/java/org/micai/platform/auth/utils/FileKit.java b/src/main/java/org/micai/platform/auth/utils/FileKit.java deleted file mode 100644 index 0b7b03c90af07bdd648869d4873ecfe85ef29f04..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/utils/FileKit.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.micai.platform.auth.utils; - -import com.sun.istack.internal.NotNull; -import org.apache.commons.io.FileUtils; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; - -/** - * @author - langhsu - * @create - 2018/3/9 - */ -public class FileKit { - - // 文件允许格式 - private final static List allowFiles = Arrays.asList(".gif", ".png", ".jpg", ".jpeg", ".bmp"); - private final static String PREFIX_VIDEO = "video/"; - private final static String PREFIX_IMAGE = "image/"; - - /** - * 文件类型判断 - * - * @param fileName - * @return - */ - public static boolean checkFileType(String fileName) { - Iterator type = allowFiles.iterator(); - while (type.hasNext()) { - String ext = type.next(); - if (fileName.toLowerCase().endsWith(ext)) { - return true; - } - } - return false; - } - - public static String getFilename(@NotNull String filename) { - int pos = filename.lastIndexOf("."); - return filename.substring(0, pos); - } - - public static String getSuffix(String filename) { - int pos = filename.lastIndexOf("."); - return filename.substring(pos); - } - - public static void writeByteArrayToFile(byte[] bytes, String dest) throws IOException { - FileUtils.writeByteArrayToFile(new File(dest), bytes); - } - -} diff --git a/src/main/java/org/micai/platform/auth/utils/FilePathUtils.java b/src/main/java/org/micai/platform/auth/utils/FilePathUtils.java deleted file mode 100644 index 5c49ce5cbec1b04d2ca825aab79d7c818ebb2f25..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/utils/FilePathUtils.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.micai.platform.auth.utils; - -import org.apache.commons.text.RandomStringGenerator; - -/** - * @author langhsu - */ -public class FilePathUtils { - private static final int[] AVATAR_GRIDS = new int[]{3, 3, 3}; - private static final int AVATAR_LENGTH = 9; - private static final String Y = "/yyyy/"; - private static RandomStringGenerator randomString = new RandomStringGenerator.Builder().withinRange('a', 'z').build(); - - public static String getAvatar(long key) { - String r = String.format("%09d", key); - StringBuffer buf = new StringBuffer(32); - int pos = 0; - for (int t : AVATAR_GRIDS) { - buf.append(r.substring(pos, pos + t)); - pos += t; - if (pos < AVATAR_LENGTH) { - buf.append('/'); - } - } - return buf.toString(); - } - - /** - * 生成路径和文件名 - * 以当前时间开头加4位随机数的文件名 - * - * @param originalFilename 原始文件名 - * @return 10位长度文件名+文件后缀 - */ - public static String wholePathName(String originalFilename, String key) { - StringBuilder builder = new StringBuilder(52); - builder.append("/_signature/"); - builder.append(key); - builder.append(FileKit.getSuffix(originalFilename)); - return builder.toString(); - } - - public static String wholePathName(String basePath, String ext, String key) { - return basePath + wholePathName(ext, key); - } - - public static void main(String[] args) { - String base = FilePathUtils.getAvatar(50); - System.out.println(String.format("/%s_%d.jpg", base, 100)); - System.out.println(FilePathUtils.wholePathName("a.jpg", "123")); - } - -} diff --git a/src/main/java/org/micai/platform/auth/utils/JwtHelper.java b/src/main/java/org/micai/platform/auth/utils/JwtHelper.java deleted file mode 100644 index 0e05aec2fee83e798e750d1a3bade6da610a8cbb..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/utils/JwtHelper.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.micai.platform.auth.utils; - -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtBuilder; -import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.SignatureAlgorithm; -import org.springframework.beans.factory.annotation.Value; - -import javax.crypto.spec.SecretKeySpec; -import javax.xml.bind.DatatypeConverter; -import java.security.Key; -import java.util.Date; - -/** - * @FileName: JwtHelper - * @Author: zhaoxinguo - * @Date: 2018/12/10 19:39 - * @Description: 实现Jwt - */ -public class JwtHelper { - - //token超时时间 - @Value("${jwt.expiration}") - public long expiration; - - //生成token的秘钥 - @Value("${jwt.secret}") - public String base64Security; - - /** - * 解析token - * @param jsonWebToken - * @return - */ - public Claims parseToken(String jsonWebToken) { - Claims claims = Jwts.parser().setSigningKey(DatatypeConverter.parseBase64Binary(base64Security)).parseClaimsJws(jsonWebToken).getBody(); - return claims; - } - - /** - * 新建token - * @param audience - * @param issuer - * @return - */ - public String createToken(String audience, String issuer) { - SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; - - long nowMillis = System.currentTimeMillis(); - Date now = new Date(nowMillis); - - // 生成签名密钥 - byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(base64Security); - Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName()); - - // 添加构成JWT的参数 - JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JWT").setIssuer(issuer).setAudience(audience) - .signWith(signatureAlgorithm, signingKey); - - // 添加Token签发时间 - builder.setIssuedAt(now); - // 添加Token过期时间 - if (expiration >= 0) { - long expMillis = nowMillis + expiration; - Date exp = new Date(expMillis); - builder.setExpiration(exp).setNotBefore(now); - } - - // 生成JWT - return builder.compact(); - } - - /** - * 刷新令牌 - * - * @param claims - * @return - */ - public String refreshToken(Claims claims) { - SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; - - long nowMillis = System.currentTimeMillis(); - Date now = new Date(nowMillis); - - // 生成签名密钥 - byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(base64Security); - Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName()); - - // 添加构成JWT的参数 - JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JWT") - .setIssuer((String) claims.get("iss")).setAudience((String) claims.get("aud")) - .signWith(signatureAlgorithm, signingKey); - - // 添加Token签发时间 - builder.setIssuedAt(now); - // 添加Token过期时间 - if (expiration >= 0) { - long expMillis = nowMillis + expiration; - Date exp = new Date(expMillis); - builder.setExpiration(exp).setNotBefore(now); - } - - // 生成Token - return builder.compact(); - } -} diff --git a/src/main/java/org/micai/platform/auth/utils/PdfMergeUtils.java b/src/main/java/org/micai/platform/auth/utils/PdfMergeUtils.java deleted file mode 100644 index 343c65800562f065170fff8c8a7dc9bd0484ad94..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/utils/PdfMergeUtils.java +++ /dev/null @@ -1,103 +0,0 @@ -package org.micai.platform.auth.utils; - -import com.itextpdf.text.Document; -import com.itextpdf.text.pdf.PdfContentByte; -import com.itextpdf.text.pdf.PdfImportedPage; -import com.itextpdf.text.pdf.PdfReader; -import com.itextpdf.text.pdf.PdfWriter; - -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -/** - * @ClassName PdfMergeUtils - * @Description This class is used to merge two or more existing pdf file using iText jar. - * @Author zhaoxinguo - * @Date 2021/11/23 17:33 - * @Version 1.0 - */ -public class PdfMergeUtils { - - /** - * 合并多个pdf到一个pdf - * @param inputPdfList - * @param outputStream - * @throws Exception - */ - public static void mergePdfFiles(List inputPdfList, OutputStream outputStream) throws Exception{ - //Create document and pdfReader objects. - Document document = new Document(); - List readers = - new ArrayList(); - int totalPages = 0; - - //Create pdf Iterator object using inputPdfList. - Iterator pdfIterator = - inputPdfList.iterator(); - - // Create reader list for the input pdf files. - while (pdfIterator.hasNext()) { - InputStream pdf = pdfIterator.next(); - PdfReader pdfReader = new PdfReader(pdf); - readers.add(pdfReader); - totalPages = totalPages + pdfReader.getNumberOfPages(); - } - - // Create writer for the outputStream - PdfWriter writer = PdfWriter.getInstance(document, outputStream); - - //Open document. - document.open(); - - //Contain the pdf data. - PdfContentByte pageContentByte = writer.getDirectContent(); - - PdfImportedPage pdfImportedPage; - int currentPdfReaderPage = 1; - Iterator iteratorPDFReader = readers.iterator(); - - // Iterate and process the reader list. - while (iteratorPDFReader.hasNext()) { - PdfReader pdfReader = iteratorPDFReader.next(); - //Create page and add content. - while (currentPdfReaderPage <= pdfReader.getNumberOfPages()) { - document.newPage(); - pdfImportedPage = writer.getImportedPage( - pdfReader,currentPdfReaderPage); - pageContentByte.addTemplate(pdfImportedPage, 0, 0); - currentPdfReaderPage++; - } - currentPdfReaderPage = 1; - } - - //Close document and outputStream. - outputStream.flush(); - document.close(); - outputStream.close(); - - System.out.println("Pdf files merged successfully."); - } - - public static void main(String args[]){ - try { - //Prepare input pdf file list as list of input stream. - List inputPdfList = new ArrayList(); - inputPdfList.add(new FileInputStream("E:\\BaiduNetdiskDownload\\批示件系统内-打印审核 - 副本.pdf")); - inputPdfList.add(new FileInputStream("E:\\BaiduNetdiskDownload\\批示件系统内-打印审核.pdf")); - - //Prepare output stream for merged pdf file. - OutputStream outputStream = - new FileOutputStream("E:\\BaiduNetdiskDownload\\批示件系统内-打印审核-MergeFile.pdf"); - - //call method to merge pdf files. - mergePdfFiles(inputPdfList, outputStream); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/src/main/java/org/micai/platform/auth/utils/WatermarkOffice.java b/src/main/java/org/micai/platform/auth/utils/WatermarkOffice.java deleted file mode 100644 index 36bb9f253c6515289033c8f368439f1f82318750..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/utils/WatermarkOffice.java +++ /dev/null @@ -1,158 +0,0 @@ -package org.micai.platform.auth.utils; - -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import org.apache.poi.EncryptedDocumentException; -import org.apache.poi.hssf.usermodel.HSSFClientAnchor; -import org.apache.poi.hssf.usermodel.HSSFFont; -import org.apache.poi.hssf.usermodel.HSSFPatriarch; -import org.apache.poi.hssf.usermodel.HSSFRichTextString; -import org.apache.poi.hssf.usermodel.HSSFShape; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFTextbox; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.apache.poi.ss.usermodel.WorkbookFactory; -import org.apache.poi.xssf.usermodel.XSSFClientAnchor; -import org.apache.poi.xssf.usermodel.XSSFDrawing; -import org.apache.poi.xssf.usermodel.XSSFFont; -import org.apache.poi.xssf.usermodel.XSSFRichTextString; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFTextBox; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; -import org.apache.poi.xwpf.usermodel.XWPFDocument; - -public final class WatermarkOffice { - - public static void main(String[] args) throws IOException, EncryptedDocumentException, InvalidFormatException { - try { - String src = "D:\\test.docx"; - String target = "D:\\test-watermark.docx"; - String text = "YLIYUN"; - word(src, target, text); - System.out.println("ok"); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - public static void word(String src, String target, String text) throws IOException { - XWPFDocument doc = null; - OutputStream out = null; - try { - doc = new XWPFDocument(new FileInputStream(src)); - XWPFHeaderFooterPolicy footer = new XWPFHeaderFooterPolicy(doc); - footer.createWatermark(text); - out = new FileOutputStream(target); - doc.write(out); - } finally { - if (doc != null) { - doc.close(); - } - if (out != null) { - out.close(); - } - } - - } - - public static void excel2003(String src, String target, String text) - throws IOException, EncryptedDocumentException, InvalidFormatException { - HSSFWorkbook wb = null; - OutputStream out = null; - try { - InputStream input = new FileInputStream(src); - - wb = (HSSFWorkbook) WorkbookFactory.create(input); - HSSFSheet sheet = null; - - int sheetNumbers = wb.getNumberOfSheets(); - - // sheet - for (int i = 0; i < sheetNumbers; i++) { - sheet = wb.getSheetAt(i); - // sheet.createDrawingPatriarch(); - - HSSFPatriarch dp = sheet.createDrawingPatriarch(); - HSSFClientAnchor anchor = new HSSFClientAnchor(0, 255, 550, 0, (short) 0, 1, (short) 6, 5); - - // HSSFComment comment = dp.createComment(anchor); - HSSFTextbox txtbox = dp.createTextbox(anchor); - - HSSFRichTextString rtxt = new HSSFRichTextString(text); - HSSFFont draftFont = (HSSFFont) wb.createFont(); - // 水印颜色 - draftFont.setColor((short) 55); - draftFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); - // 字体大小 - draftFont.setFontHeightInPoints((short) 30); - draftFont.setFontName("Verdana"); - rtxt.applyFont(draftFont); - txtbox.setString(rtxt); - // 倾斜度 - txtbox.setRotationDegree((short) 315); - txtbox.setLineWidth(600); - txtbox.setLineStyle(HSSFShape.LINESTYLE_NONE); - txtbox.setNoFill(true); - } - - out = new FileOutputStream(target); - wb.write(out); - } finally { - if (wb != null) { - wb.close(); - } - if (out != null) { - out.close(); - } - } - - } - - public static void excel2007(String src, String target, String text) - throws IOException, EncryptedDocumentException, InvalidFormatException { - XSSFWorkbook wb = null; - OutputStream out = null; - try { - InputStream input = new FileInputStream(src); - wb = (XSSFWorkbook) WorkbookFactory.create(input); - - XSSFSheet sheet = null; - int sheetNumbers = wb.getNumberOfSheets(); - for (int i = 0; i < sheetNumbers; i++) { - sheet = wb.getSheetAt(i); - XSSFDrawing dp = sheet.createDrawingPatriarch(); - XSSFClientAnchor anchor = new XSSFClientAnchor(0, 550, 550, 0, (short) 0, 1, (short) 6, 5); - XSSFTextBox txtbox = dp.createTextbox(anchor); - XSSFRichTextString rtxt = new XSSFRichTextString(text); - XSSFFont draftFont = (XSSFFont) wb.createFont(); - draftFont.setColor((short) 55); - draftFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); - draftFont.setFontHeightInPoints((short) 30); - draftFont.setFontName("Verdana"); - rtxt.applyFont(draftFont); - txtbox.setText(rtxt); - // 倾斜度 - txtbox.setLineWidth(600); - txtbox.setLineStyle(HSSFShape.LINESTYLE_NONE); - txtbox.setNoFill(true); - } - - out = new FileOutputStream(target); - wb.write(out); - } finally { - if (wb != null) { - wb.close(); - } - if (out != null) { - out.close(); - } - } - } - -} \ No newline at end of file diff --git a/src/main/java/org/micai/platform/auth/utils/WatermarkPdf.java b/src/main/java/org/micai/platform/auth/utils/WatermarkPdf.java deleted file mode 100644 index 0085e1b4e0285aeb7d98c8360bf4fe46a1571bda..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/utils/WatermarkPdf.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.micai.platform.auth.utils; - -import java.io.FileOutputStream; -import java.io.IOException; - -import com.itextpdf.text.BaseColor; -import com.itextpdf.text.DocumentException; -import com.itextpdf.text.Element; -import com.itextpdf.text.Rectangle; -import com.itextpdf.text.pdf.BaseFont; -import com.itextpdf.text.pdf.PdfContentByte; -import com.itextpdf.text.pdf.PdfGState; -import com.itextpdf.text.pdf.PdfReader; -import com.itextpdf.text.pdf.PdfStamper; - -public class WatermarkPdf { - - public static void main(String[] args) { - try { - String src = "E:\\BaiduNetdiskDownload\\Learn Microservices with Spring Boot.pdf"; - String target = "E:\\BaiduNetdiskDownload\\Learn Microservices with Spring Boot-watermark.pdf"; - String text = "YLIYUN"; - watermark(src, target, text); - System.out.println("ok"); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - public static void watermark(String src, String target, String text) throws IOException, DocumentException { - PdfReader reader = null; - PdfStamper pdfStamper = null; - try { - reader = new PdfReader(src); - pdfStamper = new PdfStamper(reader, new FileOutputStream(target)); - - addWatermark(pdfStamper, text); - } finally { - if (pdfStamper != null) { - pdfStamper.close(); - } - } - } - - private static void addWatermark(PdfStamper pdfStamper, String watermark) throws DocumentException, IOException { - PdfGState gs = new PdfGState(); - // 设置透明度为0.4 - gs.setFillOpacity(0.4f); - gs.setStrokeOpacity(0.4f); - - // 设置字体 - BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.EMBEDDED); - - int toPage = pdfStamper.getReader().getNumberOfPages(); - - PdfContentByte content = null; - Rectangle pageRect = null; - for (int i = 1; i <= toPage; i++) { - pageRect = pdfStamper.getReader().getPageSizeWithRotation(i); - // 计算水印X,Y坐标 - float x = pageRect.getWidth() / 2; - float y = pageRect.getHeight() / 2; - //获得PDF最顶层 - content = pdfStamper.getOverContent(i); - content.saveState(); - // set Transparency - content.setGState(gs); - content.beginText(); - content.setColorFill(BaseColor.GRAY); - content.setFontAndSize(base, 100); - // 水印文字成45度角倾斜 - content.showTextAligned(Element.ALIGN_CENTER, watermark, x, y, 315); - content.endText(); - } - } -} \ No newline at end of file diff --git a/src/main/java/org/micai/platform/auth/utils/WatermarkUtils.java b/src/main/java/org/micai/platform/auth/utils/WatermarkUtils.java deleted file mode 100644 index 87fd700110649225318e7348e0707d1a45534c8d..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/utils/WatermarkUtils.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.micai.platform.auth.utils; - -/** - * @ClassName WatermarkUtils - * @Description 水印工具类 - * @Author zhaoxinguo - * @Date 2021/11/23 17:33 - * @Version 1.0 - */ -public class WatermarkUtils { - - public static boolean watermark(String src, String target, String text) throws Exception { - String ext = getFileExt(src); - if ("pdf".equalsIgnoreCase(ext)) { - WatermarkPdf.watermark(src, target, text); - return true; - } else if ("docx".equalsIgnoreCase(ext)) { - WatermarkOffice.word(src, target, text); - return true; - } else if ("xlsx".equalsIgnoreCase(ext)) { - WatermarkOffice.excel2007(src, target, text); - return true; - } else if ("xls".equalsIgnoreCase(ext)) { - WatermarkOffice.excel2003(src, target, text); - return true; - } - return false; - } - - private static String getFileExt(String file) { - int index = file.lastIndexOf("."); - if (index != -1) { - return file.substring(index + 1); - } - return ""; - } - - public static void main(String[] args) { - if (args == null || args.length < 3) { - System.exit(1); - } - - String src = args[0]; - String target = args[1]; - String text = args[2]; - - try { - boolean b = watermark(src, target, text); - if (b) { - System.exit(0); - } - } catch (Exception ex) { - ex.printStackTrace(); - } - - System.exit(1); - } -} diff --git a/src/test/java/org/micai/platform/auth/LogTests.java b/src/test/java/org/micai/platform/auth/LogTests.java deleted file mode 100644 index c9d5418e23dbd2f2b28aa1e6d2c7600af20e138c..0000000000000000000000000000000000000000 --- a/src/test/java/org/micai/platform/auth/LogTests.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.micai.platform.auth; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -/** - * @Author zhaoxinguo - * @Date 2021-12-13 15:34 - * @ClassName LogTests - * @Description 日志输出测试类 - */ -@SpringBootTest -@RunWith(SpringJUnit4ClassRunner.class) -public class LogTests { - - Logger logger = LoggerFactory.getLogger(Logger.class); - - @Test - public void contextLoad() { - // 可以调整日志级别、日志的输出会按照这个配置的级别及以上的级别生效 - // 日志级别从低到高分为:TRACE < DEBUG < INFO < WARN < ERROR < FATAL - logger.trace("这是trace日志......"); - logger.debug("这是debug日志......"); - logger.info("这是info日志......"); - logger.warn("这是warn日志......"); - logger.error("这是error日志......"); - } - - -} diff --git a/src/test/java/org/micai/platform/auth/MicaiPlatformAuthApplicationTests.java b/src/test/java/org/micai/platform/auth/MicaiPlatformAuthApplicationTests.java deleted file mode 100644 index 6a6b48f14cfdf8bf9dfef962e38b823b03c339ac..0000000000000000000000000000000000000000 --- a/src/test/java/org/micai/platform/auth/MicaiPlatformAuthApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.micai.platform.auth; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class MicaiPlatformAuthApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties deleted file mode 100644 index c92166330255f909afcecc127f53648643bb1dfb..0000000000000000000000000000000000000000 --- a/src/test/resources/application.properties +++ /dev/null @@ -1,42 +0,0 @@ -# MySQL -spring.datasource.driverClassName=com.mysql.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/security?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true -spring.datasource.username=root -spring.datasource.password=root - -# JPA -#spring.jpa.hibernate.ddl-auto=update -#spring.jpa.show-sql=true -#spring.jackson.serialization.indent_output=true -spring.mvc.pathmatch.matching-strategy=ant_path_matcher - -# JWT Config -jwt.header=Authorization -jwt.secret=NDU0NTY4amhmc3NkeHp6eGNxdzIlMjFAJTIxQCUyM2ZmNQ== -jwt.expiration=7200000 - -#mybatis-plus -mybatis-plus.global-config.db-config.insert-strategy=not_empty -mybatis-plus.global-config.db-config.update-strategy=not_empty -mybatis-plus.global-config.db-config.where-strategy=not_empty -#mybatis-plus.mapper-locations= -mybatis-plus.global-config.db-config.id-type=auto -mybatis-plus.configuration.map-underscore-to-camel-case=true -mybatis-plus.global-config.db-config.table-prefix=tb_ -mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl - -#log level config -logging.level.org.micai.platform.auto=warn -logging.level.org.springframework.web=debug -#logging.level.org.hibernate=error -logging.file.name=auth.log -logging.file.path=/opt/auth/logs - -site.location=${user.dir} -site.options.storage_max_width=800 -site.options.storage_limit_size=2 -site.options.thumbnail_channel_size=200x112 -site.options.thumbnail_post_size=360x200 - - -