From 5b51d5b3f1a0977853fcb15fa5b8e889e62fae10 Mon Sep 17 00:00:00 2001 From: g1307092382 <1307092382@qq.com> Date: Thu, 10 Sep 2026 10:58:43 +0800 Subject: [PATCH] feat: complete phase 02 RBAC and data scope recovery --- .gitignore | 1 + admin-web/src/layouts/MainLayout.vue | 10 +- .../modules/banner/BannerManagementView.vue | 4 +- .../modules/content/ContentManagementView.vue | 2 +- .../src/modules/counseling/CounselingView.vue | 37 +- .../service-program/ServiceProgramView.vue | 2 +- .../service-station/ServiceStationView.vue | 2 +- admin-web/src/router/index.ts | 29 +- admin-web/src/stores/auth.ts | 6 +- backend/.env.example | 16 + backend/pom.xml | 14 + .../account/controller/AccountController.java | 39 +- .../controller/AccountOperatorController.java | 20 +- .../controller/ActivityController.java | 63 ++- .../ActivityInterestController.java | 36 +- .../ActivityOperatorController.java | 47 +- .../controller/CheckinController.java | 38 +- .../ActivityMutualConsentController.java | 39 +- .../analytics/AnalyticsController.java | 2 + .../appeal/controller/AppealController.java | 27 +- .../controller/AppealOperatorController.java | 31 +- .../audit/controller/AuditLogController.java | 2 + .../auth/controller/AuthController.java | 47 +- .../controller/OperatorAuthController.java | 30 ++ .../auth/service/OperatorAuthService.java | 18 +- .../content/controller/ContentController.java | 48 +- .../controller/CounselingController.java | 76 ++- .../service/CounselingServiceApp.java | 32 +- .../controller/DiscoverController.java | 21 +- .../home/controller/HomeController.java | 19 +- .../LocalEligibilityController.java | 31 +- .../controller/RecommendationController.java | 27 +- .../MatchmakerOperatorController.java | 52 +- .../controller/MatchmakerUserController.java | 31 +- .../messaging/controller/ChatController.java | 37 +- .../controller/MessageController.java | 39 +- .../messaging/safety/MessageRiskService.java | 4 +- .../controller/NotificationController.java | 31 +- .../controller/OperatorController.java | 25 +- .../controller/OrganizationController.java | 22 +- .../photo/controller/PhotoController.java | 41 +- .../controller/InterestController.java | 23 +- .../controller/PreferenceController.java | 23 +- .../profile/controller/PrivacyController.java | 23 +- .../profile/controller/ProfileController.java | 35 +- .../controller/ReferralController.java | 36 +- .../controller/RelationshipController.java | 63 +-- .../RelationshipStatusController.java | 47 +- .../review/controller/ReviewController.java | 48 +- .../controller/UserReviewController.java | 23 +- .../risk/controller/ReportController.java | 23 +- .../controller/ReportOperatorController.java | 37 +- .../risk/controller/RiskController.java | 25 +- .../ServiceAppointmentController.java | 53 +- .../mapper/ServiceAppointmentMapper.java | 12 + .../service/ServiceAppointmentService.java | 18 +- .../controller/ServiceProgramController.java | 51 +- .../shared/config/SecurityConfig.java | 33 +- .../platform/shared/constant/Constants.java | 23 + .../controller/FeatureFlagController.java | 6 +- .../shared/crypto/EncryptionUtil.java | 6 +- .../shared/exception/BusinessException.java | 10 +- .../exception/GlobalExceptionHandler.java | 14 + .../platform/shared/filter/JwtAuthFilter.java | 31 +- .../shared/filter/PermissionFilter.java | 97 ---- .../security/AuthorizationAuditListener.java | 58 +++ .../shared/security/DataScopeGuard.java | 37 ++ .../security/principal/OperatorPrincipal.java | 21 + .../security/principal/PlatformPrincipal.java | 6 + .../security/principal/UserPrincipal.java | 10 + .../user/controller/UserController.java | 32 +- .../IdentityVerificationController.java | 29 +- .../resources/application-dev.yml.example | 37 ++ .../src/main/resources/application-docker.yml | 78 +++ ...8__add_service_location_operator_scope.sql | 12 + ...__complete_service_station_permissions.sql | 14 + .../auth/OperatorAuthServiceTest.java | 64 +++ .../auth/controller/AuthControllerTest.java | 11 +- ...ntentControllerPermissionContractTest.java | 33 ++ .../counseling/CounselingDataScopeTest.java | 93 ++++ .../deployment/MigrationValidationTest.java | 12 +- .../discover/DiscoverServiceTest.java | 7 +- .../invariants/CoreInvariantsTest.java | 2 +- .../invariants/P0FixVerificationTest.java | 13 +- .../match/MatchEligibilityServiceTest.java | 6 +- ...dationEngineBidirectionalRequiredTest.java | 9 +- .../RecommendationEngineServiceMockTest.java | 2 +- .../messaging/MessageRiskServiceTest.java | 2 +- .../platform/photo/PhotoServiceTest.java | 2 +- .../AuthorizationAuditListenerTest.java | 38 ++ ...peratorEndpointPermissionCoverageTest.java | 80 +++ .../PrincipalInjectionContractTest.java | 41 ++ .../platform/security/SecurityTests.java | 7 +- .../security/V11MethodSecurityMatrixTest.java | 109 ++++ .../V11PermissionMatrixContractTest.java | 66 +++ .../ServiceAppointmentDataScopeTest.java | 85 +++ .../controller/HealthControllerTest.java | 24 +- .../shared/filter/JwtAuthFilterTest.java | 101 ++++ .../src/test/resources/application-test.yml | 8 + docs/JIRA_BACKLOG.md | 4 +- ...1-Recovery-Completion-Report-2026-09-10.md | 55 ++ docs/STATUS.md | 15 +- ...阳 V1.1 客户需求基线增量开发与修复计划.md | 10 +- infrastructure/docker-compose.yml | 111 ++++ releases/v1.0.0-RC.1/STATUS.md | 100 ++++ releases/v1.0.0-RC.1/TECHNICAL_SPECS.md | 231 ++++++++ releases/v1.0.0-RC.2/STATUS.md | 83 +++ tests/e2e/content_e2e_test.py | 72 +++ tests/e2e/counseling_v11_test.py | 117 +++++ tests/e2e/multi_type_activity_test.py | 47 ++ tests/e2e/organization_isolation_test.py | 32 ++ tests/e2e/referral_v11_test.py | 145 ++++++ tests/e2e/run_v11_tests.py | 183 +++++++ tests/e2e/service_station_permission_test.py | 40 ++ tests/invariant_integration_test.py | 491 ++++++++++++++++++ 115 files changed, 3608 insertions(+), 1135 deletions(-) create mode 100644 backend/.env.example create mode 100644 backend/src/main/java/com/danyang/match/platform/auth/controller/OperatorAuthController.java delete mode 100644 backend/src/main/java/com/danyang/match/platform/shared/filter/PermissionFilter.java create mode 100644 backend/src/main/java/com/danyang/match/platform/shared/security/AuthorizationAuditListener.java create mode 100644 backend/src/main/java/com/danyang/match/platform/shared/security/DataScopeGuard.java create mode 100644 backend/src/main/java/com/danyang/match/platform/shared/security/principal/OperatorPrincipal.java create mode 100644 backend/src/main/java/com/danyang/match/platform/shared/security/principal/PlatformPrincipal.java create mode 100644 backend/src/main/java/com/danyang/match/platform/shared/security/principal/UserPrincipal.java create mode 100644 backend/src/main/resources/application-dev.yml.example create mode 100644 backend/src/main/resources/application-docker.yml create mode 100644 backend/src/main/resources/db/migration/V028__add_service_location_operator_scope.sql create mode 100644 backend/src/main/resources/db/migration/V029__complete_service_station_permissions.sql create mode 100644 backend/src/test/java/com/danyang/match/platform/auth/OperatorAuthServiceTest.java create mode 100644 backend/src/test/java/com/danyang/match/platform/content/ContentControllerPermissionContractTest.java create mode 100644 backend/src/test/java/com/danyang/match/platform/counseling/CounselingDataScopeTest.java create mode 100644 backend/src/test/java/com/danyang/match/platform/security/AuthorizationAuditListenerTest.java create mode 100644 backend/src/test/java/com/danyang/match/platform/security/OperatorEndpointPermissionCoverageTest.java create mode 100644 backend/src/test/java/com/danyang/match/platform/security/PrincipalInjectionContractTest.java create mode 100644 backend/src/test/java/com/danyang/match/platform/security/V11MethodSecurityMatrixTest.java create mode 100644 backend/src/test/java/com/danyang/match/platform/security/V11PermissionMatrixContractTest.java create mode 100644 backend/src/test/java/com/danyang/match/platform/service_appointment/ServiceAppointmentDataScopeTest.java create mode 100644 backend/src/test/java/com/danyang/match/platform/shared/filter/JwtAuthFilterTest.java create mode 100644 docs/Phase-02-V11-Recovery-Completion-Report-2026-09-10.md create mode 100644 infrastructure/docker-compose.yml create mode 100644 releases/v1.0.0-RC.1/STATUS.md create mode 100644 releases/v1.0.0-RC.1/TECHNICAL_SPECS.md create mode 100644 releases/v1.0.0-RC.2/STATUS.md create mode 100644 tests/e2e/content_e2e_test.py create mode 100644 tests/e2e/counseling_v11_test.py create mode 100644 tests/e2e/multi_type_activity_test.py create mode 100644 tests/e2e/organization_isolation_test.py create mode 100644 tests/e2e/referral_v11_test.py create mode 100644 tests/e2e/run_v11_tests.py create mode 100644 tests/e2e/service_station_permission_test.py create mode 100644 tests/invariant_integration_test.py diff --git a/.gitignore b/.gitignore index 391f4f5..2b612b3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ node_modules/ backend/local-maven/ backend/build-temp/ +backend/.m2/ __pycache__/ *.py[cod] *.lock diff --git a/admin-web/src/layouts/MainLayout.vue b/admin-web/src/layouts/MainLayout.vue index 9819485..de547e3 100644 --- a/admin-web/src/layouts/MainLayout.vue +++ b/admin-web/src/layouts/MainLayout.vue @@ -38,22 +38,22 @@ - + - + - + - + - + diff --git a/admin-web/src/modules/banner/BannerManagementView.vue b/admin-web/src/modules/banner/BannerManagementView.vue index a0e90a1..576853f 100644 --- a/admin-web/src/modules/banner/BannerManagementView.vue +++ b/admin-web/src/modules/banner/BannerManagementView.vue @@ -69,8 +69,8 @@ - - + +