diff --git a/admin-ui/package.json b/admin-ui/package.json index 1ae79b1c..cf375011 100644 --- a/admin-ui/package.json +++ b/admin-ui/package.json @@ -6,9 +6,9 @@ "@ant-design/icons": "^5.4.0", "@ant-design/pro-components": "^2.8.7", "@babel/standalone": "^7.25.6", - "@codingapi/flow-pc": "^0.0.39", - "@codingapi/form-pc": "^0.0.39", - "@codingapi/ui-framework": "^0.0.39", + "@codingapi/flow-pc": "^0.0.41", + "@codingapi/form-pc": "^0.0.41", + "@codingapi/ui-framework": "^0.0.41", "@dnd-kit/core": "^6.2.0", "@dnd-kit/sortable": "^9.0.0", "@handsontable/react-wrapper": "^15.0.0", diff --git a/example/example-app/example-app-cmd-domain/pom.xml b/example/example-app/example-app-cmd-domain/pom.xml index 3bec376a..5e6252ae 100644 --- a/example/example-app/example-app-cmd-domain/pom.xml +++ b/example/example-app/example-app-cmd-domain/pom.xml @@ -6,7 +6,7 @@ com.codingapi.springboot example-app - 3.4.2 + 3.4.4 ../pom.xml diff --git a/example/example-app/example-app-cmd-meta/pom.xml b/example/example-app/example-app-cmd-meta/pom.xml index 4295d9ec..0da17be4 100644 --- a/example/example-app/example-app-cmd-meta/pom.xml +++ b/example/example-app/example-app-cmd-meta/pom.xml @@ -6,7 +6,7 @@ com.codingapi.springboot example-app - 3.4.2 + 3.4.4 ../pom.xml diff --git a/example/example-app/example-app-query/pom.xml b/example/example-app/example-app-query/pom.xml index 1a78b555..a9e68348 100644 --- a/example/example-app/example-app-query/pom.xml +++ b/example/example-app/example-app-query/pom.xml @@ -6,7 +6,7 @@ com.codingapi.springboot example-app - 3.4.2 + 3.4.4 ../pom.xml diff --git a/example/example-app/pom.xml b/example/example-app/pom.xml index a80852ce..dedf666e 100644 --- a/example/example-app/pom.xml +++ b/example/example-app/pom.xml @@ -6,7 +6,7 @@ com.codingapi.springboot springboot-example - 3.4.2 + 3.4.4 ../pom.xml pom diff --git a/example/example-domain/example-domain-leave/pom.xml b/example/example-domain/example-domain-leave/pom.xml index 217ea029..38ec775a 100644 --- a/example/example-domain/example-domain-leave/pom.xml +++ b/example/example-domain/example-domain-leave/pom.xml @@ -6,7 +6,7 @@ com.codingapi.springboot example-domain - 3.4.2 + 3.4.4 ../pom.xml diff --git a/example/example-domain/example-domain-user/pom.xml b/example/example-domain/example-domain-user/pom.xml index f70f7e76..10e4e34e 100644 --- a/example/example-domain/example-domain-user/pom.xml +++ b/example/example-domain/example-domain-user/pom.xml @@ -6,7 +6,7 @@ com.codingapi.springboot example-domain - 3.4.2 + 3.4.4 ../pom.xml diff --git a/example/example-domain/pom.xml b/example/example-domain/pom.xml index 9ff75794..90f33ec8 100644 --- a/example/example-domain/pom.xml +++ b/example/example-domain/pom.xml @@ -5,7 +5,7 @@ com.codingapi.springboot springboot-example - 3.4.2 + 3.4.4 ../pom.xml 4.0.0 diff --git a/example/example-infra/example-infra-flow/pom.xml b/example/example-infra/example-infra-flow/pom.xml index 6cebb52c..768ec2e1 100644 --- a/example/example-infra/example-infra-flow/pom.xml +++ b/example/example-infra/example-infra-flow/pom.xml @@ -5,7 +5,7 @@ com.codingapi.springboot example-infra - 3.4.2 + 3.4.4 ../pom.xml diff --git a/example/example-infra/example-infra-jpa/pom.xml b/example/example-infra/example-infra-jpa/pom.xml index 8e6d6e7b..b4ed72fb 100644 --- a/example/example-infra/example-infra-jpa/pom.xml +++ b/example/example-infra/example-infra-jpa/pom.xml @@ -5,7 +5,7 @@ com.codingapi.springboot example-infra - 3.4.2 + 3.4.4 ../pom.xml diff --git a/example/example-infra/example-infra-security/pom.xml b/example/example-infra/example-infra-security/pom.xml index 22e622d7..122e166c 100644 --- a/example/example-infra/example-infra-security/pom.xml +++ b/example/example-infra/example-infra-security/pom.xml @@ -6,7 +6,7 @@ com.codingapi.springboot example-infra - 3.4.2 + 3.4.4 ../pom.xml diff --git a/example/example-infra/pom.xml b/example/example-infra/pom.xml index 82a22b8f..cee76323 100644 --- a/example/example-infra/pom.xml +++ b/example/example-infra/pom.xml @@ -6,7 +6,7 @@ com.codingapi.springboot springboot-example - 3.4.2 + 3.4.4 ../pom.xml pom diff --git a/example/example-interface/pom.xml b/example/example-interface/pom.xml index 30876bc8..9a41c37a 100644 --- a/example/example-interface/pom.xml +++ b/example/example-interface/pom.xml @@ -6,7 +6,7 @@ com.codingapi.springboot springboot-example - 3.4.2 + 3.4.4 example-interface diff --git a/example/example-server/pom.xml b/example/example-server/pom.xml index ba8bdadd..c2dcedab 100644 --- a/example/example-server/pom.xml +++ b/example/example-server/pom.xml @@ -5,7 +5,7 @@ springboot-example com.codingapi.springboot - 3.4.2 + 3.4.4 4.0.0 diff --git a/example/pom.xml b/example/pom.xml index 79ca6bc1..c303c80c 100644 --- a/example/pom.xml +++ b/example/pom.xml @@ -19,7 +19,7 @@ springboot-example - 3.4.2 + 3.4.4 springboot-example springboot-example project for Spring Boot diff --git a/mobile-ui/package.json b/mobile-ui/package.json index 12472531..92710816 100644 --- a/mobile-ui/package.json +++ b/mobile-ui/package.json @@ -4,9 +4,9 @@ "private": true, "dependencies": { "@babel/standalone": "^7.25.6", - "@codingapi/flow-mobile": "^0.0.39", - "@codingapi/form-mobile": "^0.0.39", - "@codingapi/ui-framework": "^0.0.39", + "@codingapi/flow-mobile": "^0.0.41", + "@codingapi/form-mobile": "^0.0.41", + "@codingapi/ui-framework": "^0.0.41", "@logicflow/core": "^2.0.10", "@logicflow/extension": "^2.0.14", "@reduxjs/toolkit": "^2.2.7", diff --git a/mobile-ui/src/config/flows.tsx b/mobile-ui/src/config/flows.tsx index 09c61cd2..35b1fd21 100644 --- a/mobile-ui/src/config/flows.tsx +++ b/mobile-ui/src/config/flows.tsx @@ -1,4 +1,4 @@ -import LeaveForm from "@/pages/levave/form"; +import LeaveForm from "@/pages/leave/form"; export const flowViews = { "default":LeaveForm diff --git a/mobile-ui/src/config/route.tsx b/mobile-ui/src/config/route.tsx index 11db7c6d..fd8cedf9 100644 --- a/mobile-ui/src/config/route.tsx +++ b/mobile-ui/src/config/route.tsx @@ -5,11 +5,11 @@ import HomePage from "@/pages/home"; import {Route} from "react-router"; import {RouteObject} from "react-router/dist/lib/context"; import React from "react"; -import LeaveListPage from "@/pages/levave"; -import LeaveCreatePage from "@/pages/levave/create"; +import LeaveListPage from "@/pages/leave"; +import LeaveCreatePage from "@/pages/leave/create"; import FlowListPage from "@/pages/flow"; import FlowDetailPage from "@/pages/flow/detail"; -import LeaveDetailPage from "@/pages/levave/detail"; +import LeaveDetailPage from "@/pages/leave/detail"; import FormPage from "@/pages/form"; import MircoPage from "@/pages/mirco"; diff --git a/mobile-ui/src/config/theme.tsx b/mobile-ui/src/config/theme.tsx index 603e8a70..754f9057 100644 --- a/mobile-ui/src/config/theme.tsx +++ b/mobile-ui/src/config/theme.tsx @@ -10,7 +10,7 @@ export const config = { // 主题配置 theme: theme, // 后台名称 - title: 'HR-人力资源管理系统', + title: 'Admin-UI', // 后台logo logo: 'static://assets/logo.png', // 欢迎页路径 diff --git a/mobile-ui/src/pages/levave/create.tsx b/mobile-ui/src/pages/leave/create.tsx similarity index 94% rename from mobile-ui/src/pages/levave/create.tsx rename to mobile-ui/src/pages/leave/create.tsx index 5c7c5dbf..f10ef3c6 100644 --- a/mobile-ui/src/pages/levave/create.tsx +++ b/mobile-ui/src/pages/leave/create.tsx @@ -1,7 +1,7 @@ import React from "react"; import Header from "@/layout/Header"; import {FlowView} from "@codingapi/flow-mobile"; -import LeaveForm from "@/pages/levave/form"; +import LeaveForm from "@/pages/leave/form"; import {useNavigate} from "react-router"; const LeaveCreatePage = () => { diff --git a/mobile-ui/src/pages/levave/detail.tsx b/mobile-ui/src/pages/leave/detail.tsx similarity index 92% rename from mobile-ui/src/pages/levave/detail.tsx rename to mobile-ui/src/pages/leave/detail.tsx index d836238d..4a7a0739 100644 --- a/mobile-ui/src/pages/levave/detail.tsx +++ b/mobile-ui/src/pages/leave/detail.tsx @@ -2,7 +2,7 @@ import React from "react"; import Header from "@/layout/Header"; import {useLocation} from "react-router"; import {Descriptions} from "@codingapi/form-mobile"; -import {fields} from "@/pages/levave/fields"; +import {fields} from "@/pages/leave/fields"; const LeaveDetailPage = () => { diff --git a/mobile-ui/src/pages/levave/fields.ts b/mobile-ui/src/pages/leave/fields.ts similarity index 100% rename from mobile-ui/src/pages/levave/fields.ts rename to mobile-ui/src/pages/leave/fields.ts diff --git a/mobile-ui/src/pages/levave/form.tsx b/mobile-ui/src/pages/leave/form.tsx similarity index 99% rename from mobile-ui/src/pages/levave/form.tsx rename to mobile-ui/src/pages/leave/form.tsx index 043aa6cd..724aaf3f 100644 --- a/mobile-ui/src/pages/levave/form.tsx +++ b/mobile-ui/src/pages/leave/form.tsx @@ -3,7 +3,7 @@ import {Form} from "@codingapi/form-mobile"; import {FlowFormViewProps} from "@codingapi/ui-framework"; import {Button, Toast} from "antd-mobile"; import {FlowViewReactContext} from "@codingapi/flow-mobile"; -import {fields} from "@/pages/levave/fields"; +import {fields} from "@/pages/leave/fields"; const LeaveForm: React.FC = (props) => { const flowViewReactContext = useContext(FlowViewReactContext); diff --git a/mobile-ui/src/pages/levave/index.tsx b/mobile-ui/src/pages/leave/index.tsx similarity index 100% rename from mobile-ui/src/pages/levave/index.tsx rename to mobile-ui/src/pages/leave/index.tsx diff --git a/pom.xml b/pom.xml index 552430d2..e05b1385 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ com.codingapi.springboot springboot-parent - 3.4.2 + 3.4.4 https://github.com/codingapi/springboot-framewrok springboot-parent diff --git a/springboot-starter-data-authorization/pom.xml b/springboot-starter-data-authorization/pom.xml index 727cb6b3..038ac8b5 100644 --- a/springboot-starter-data-authorization/pom.xml +++ b/springboot-starter-data-authorization/pom.xml @@ -6,7 +6,7 @@ com.codingapi.springboot springboot-parent - 3.4.2 + 3.4.4 springboot-starter-data-authorization diff --git a/springboot-starter-data-fast/pom.xml b/springboot-starter-data-fast/pom.xml index b817b201..2f317b13 100644 --- a/springboot-starter-data-fast/pom.xml +++ b/springboot-starter-data-fast/pom.xml @@ -5,7 +5,7 @@ springboot-parent com.codingapi.springboot - 3.4.2 + 3.4.4 4.0.0 diff --git a/springboot-starter-flow/pom.xml b/springboot-starter-flow/pom.xml index 1835a4e3..567a4388 100644 --- a/springboot-starter-flow/pom.xml +++ b/springboot-starter-flow/pom.xml @@ -6,7 +6,7 @@ springboot-parent com.codingapi.springboot - 3.4.2 + 3.4.4 springboot-starter-flow diff --git a/springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/service/FlowNodeService.java b/springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/service/FlowNodeService.java index b2827d3c..5cd7eebb 100644 --- a/springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/service/FlowNodeService.java +++ b/springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/service/FlowNodeService.java @@ -162,7 +162,7 @@ public void loadCustomBackNode(FlowNode flowNode, long parentRecordId) { } this.nextNode = nextNode; this.nextOperator = flowOperator; - this.backOperator = flowOperator; + this.backOperator = null; } diff --git a/springboot-starter-security/pom.xml b/springboot-starter-security/pom.xml index 7d813be7..6cc96320 100644 --- a/springboot-starter-security/pom.xml +++ b/springboot-starter-security/pom.xml @@ -6,7 +6,7 @@ springboot-parent com.codingapi.springboot - 3.4.2 + 3.4.4 springboot-starter-security diff --git a/springboot-starter-security/src/main/java/com/codingapi/springboot/security/AutoConfiguration.java b/springboot-starter-security/src/main/java/com/codingapi/springboot/security/AutoConfiguration.java index 2f40a953..fdc348df 100644 --- a/springboot-starter-security/src/main/java/com/codingapi/springboot/security/AutoConfiguration.java +++ b/springboot-starter-security/src/main/java/com/codingapi/springboot/security/AutoConfiguration.java @@ -2,6 +2,8 @@ import com.codingapi.springboot.security.configurer.HttpSecurityConfigurer; import com.codingapi.springboot.security.controller.VersionController; +import com.codingapi.springboot.security.customer.DefaultHttpSecurityCustomer; +import com.codingapi.springboot.security.customer.HttpSecurityCustomer; import com.codingapi.springboot.security.dto.request.LoginRequest; import com.codingapi.springboot.security.dto.response.LoginResponse; import com.codingapi.springboot.security.filter.*; @@ -21,6 +23,7 @@ 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.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; @@ -89,28 +92,24 @@ public AuthenticationTokenFilter authenticationTokenFilter() { }; } - @Bean @ConditionalOnMissingBean - public SecurityFilterChain filterChain(HttpSecurity security, TokenGateway tokenGateway, SecurityLoginHandler loginHandler, - CodingApiSecurityProperties properties, AuthenticationTokenFilter authenticationTokenFilter) throws Exception { - //disable basic auth - security.httpBasic(AbstractHttpConfigurer::disable); - - //before add addCorsMappings to enable cors. - security.cors(httpSecurityCorsConfigurer -> { - if (properties.isDisableCors()) { - httpSecurityCorsConfigurer.disable(); - } - }); - - security.csrf(httpSecurityCsrfConfigurer -> { - if (properties.isDisableCsrf()) { - httpSecurityCsrfConfigurer.disable(); - } - }); + public HttpSecurityCustomer httpSecurityCustomer(CodingApiSecurityProperties properties){ + return new DefaultHttpSecurityCustomer(properties); + } + @Bean + @ConditionalOnMissingBean + public SecurityFilterChain filterChain(HttpSecurity security, + HttpSecurityCustomer httpSecurityCustomer, + TokenGateway tokenGateway, + SecurityLoginHandler loginHandler, + CodingApiSecurityProperties properties, + AuthenticationTokenFilter authenticationTokenFilter) throws Exception { + httpSecurityCustomer.customize(security); + + //authentication filter security.with(new HttpSecurityConfigurer(tokenGateway, loginHandler, properties, authenticationTokenFilter), Customizer.withDefaults()); security.exceptionHandling(httpSecurityExceptionHandlingConfigurer -> httpSecurityExceptionHandlingConfigurer.authenticationEntryPoint(new MyUnAuthenticationEntryPoint()) diff --git a/springboot-starter-security/src/main/java/com/codingapi/springboot/security/customer/DefaultHttpSecurityCustomer.java b/springboot-starter-security/src/main/java/com/codingapi/springboot/security/customer/DefaultHttpSecurityCustomer.java new file mode 100644 index 00000000..dfff8208 --- /dev/null +++ b/springboot-starter-security/src/main/java/com/codingapi/springboot/security/customer/DefaultHttpSecurityCustomer.java @@ -0,0 +1,51 @@ +package com.codingapi.springboot.security.customer; + +import com.codingapi.springboot.security.properties.CodingApiSecurityProperties; +import lombok.AllArgsConstructor; +import org.springframework.security.config.Customizer; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer; + +@AllArgsConstructor +public class DefaultHttpSecurityCustomer implements HttpSecurityCustomer { + + private final CodingApiSecurityProperties properties; + + @Override + public void customize(HttpSecurity security) throws Exception { + + //disable basic auth + if (properties.isDisableBasicAuth()) { + security.httpBasic(AbstractHttpConfigurer::disable); + } + + //disable frame options + if (properties.isDisableFrameOptions()) { + security.headers(new Customizer>() { + @Override + public void customize(HeadersConfigurer httpSecurityHeadersConfigurer) { + httpSecurityHeadersConfigurer.frameOptions(new Customizer.FrameOptionsConfig>() { + @Override + public void customize(HeadersConfigurer.FrameOptionsConfig frameOptionsConfig) { + frameOptionsConfig.disable(); + } + }); + } + }); + } + + //before add addCorsMappings to enable cors. + security.cors(httpSecurityCorsConfigurer -> { + if (properties.isDisableCors()) { + httpSecurityCorsConfigurer.disable(); + } + }); + + security.csrf(httpSecurityCsrfConfigurer -> { + if (properties.isDisableCsrf()) { + httpSecurityCsrfConfigurer.disable(); + } + }); + } +} diff --git a/springboot-starter-security/src/main/java/com/codingapi/springboot/security/customer/HttpSecurityCustomer.java b/springboot-starter-security/src/main/java/com/codingapi/springboot/security/customer/HttpSecurityCustomer.java new file mode 100644 index 00000000..ddc35dd6 --- /dev/null +++ b/springboot-starter-security/src/main/java/com/codingapi/springboot/security/customer/HttpSecurityCustomer.java @@ -0,0 +1,9 @@ +package com.codingapi.springboot.security.customer; + +import org.springframework.security.config.annotation.web.builders.HttpSecurity; + +public interface HttpSecurityCustomer { + + void customize(HttpSecurity security) throws Exception; + +} diff --git a/springboot-starter-security/src/main/java/com/codingapi/springboot/security/properties/CodingApiSecurityProperties.java b/springboot-starter-security/src/main/java/com/codingapi/springboot/security/properties/CodingApiSecurityProperties.java index 4a33d91b..1798bc09 100644 --- a/springboot-starter-security/src/main/java/com/codingapi/springboot/security/properties/CodingApiSecurityProperties.java +++ b/springboot-starter-security/src/main/java/com/codingapi/springboot/security/properties/CodingApiSecurityProperties.java @@ -39,6 +39,16 @@ public class CodingApiSecurityProperties { private String aseIv = "QUNYRkdIQEVEUyNYQ1phcw=="; + /** + * 禁用Basic Auth + */ + private boolean disableBasicAuth = true; + + /** + * 禁用FrameOptions + */ + private boolean disableFrameOptions = true; + /** * 启用禁用CSRF */ diff --git a/springboot-starter/pom.xml b/springboot-starter/pom.xml index acc256de..fd60a122 100644 --- a/springboot-starter/pom.xml +++ b/springboot-starter/pom.xml @@ -5,7 +5,7 @@ com.codingapi.springboot springboot-parent - 3.4.2 + 3.4.4 springboot-starter diff --git a/springboot-starter/src/main/resources/banner.txt b/springboot-starter/src/main/resources/banner.txt index 4d7d4d37..cb247fec 100644 --- a/springboot-starter/src/main/resources/banner.txt +++ b/springboot-starter/src/main/resources/banner.txt @@ -1,4 +1,4 @@ ------------------------------------------------------ -CodingApi SpringBoot-Starter 3.4.2 +CodingApi SpringBoot-Starter 3.4.4 springboot version (${spring-boot.version}) ------------------------------------------------------