From 1a103a769f52ee37c1ddbe06b567a9660b9f247a Mon Sep 17 00:00:00 2001 From: Iliyan Angelov Date: Mon, 1 Dec 2025 01:08:39 +0200 Subject: [PATCH] updates --- .../alembic/__pycache__/env.cpython-312.pyc | Bin 0 -> 2719 bytes ...31_add_mfa_fields_to_users.cpython-312.pyc | Bin 0 -> 1439 bytes ...erms_refunds_to_page_type_.cpython-312.pyc | Bin 0 -> 1208 bytes ...tle_fields_to_page_content.cpython-312.pyc | Bin 0 -> 21992 bytes ...e93_add_page_content_table.cpython-312.pyc | Bin 0 -> 5897 bytes ...ry_section_fields_to_page_.cpython-312.pyc | Bin 0 -> 2142 bytes ...gration_create_all_tables_.cpython-312.pyc | Bin 0 -> 24795 bytes ...ty_room_size_view_to_rooms.cpython-312.pyc | Bin 0 -> 1421 bytes ..._add_system_settings_table.cpython-312.pyc | Bin 0 -> 3450 bytes ...tion_accessibility_faq_to_.cpython-312.pyc | Bin 0 -> 1266 bytes .../add_about_page_fields.cpython-312.pyc | Bin 0 -> 2044 bytes ...add_badges_to_page_content.cpython-312.pyc | Bin 0 -> 902 bytes .../add_blog_posts_table.cpython-312.pyc | Bin 0 -> 4726 bytes .../add_borica_payment_method.cpython-312.pyc | Bin 0 -> 1376 bytes ...right_text_to_page_content.cpython-312.pyc | Bin 0 -> 907 bytes .../add_enterprise_features.cpython-312.pyc | Bin 0 -> 21408 bytes .../add_group_booking_tables.cpython-312.pyc | Bin 0 -> 18482 bytes ...d_guest_profile_crm_tables.cpython-312.pyc | Bin 0 -> 12179 bytes .../add_loyalty_system_tables.cpython-312.pyc | Bin 0 -> 20228 bytes ...d_rate_plan_id_to_bookings.cpython-312.pyc | Bin 0 -> 1699 bytes ...add_sections_to_blog_posts.cpython-312.pyc | Bin 0 -> 1092 bytes .../add_stripe_payment_method.cpython-312.pyc | Bin 0 -> 1336 bytes ...omotion_fields_to_bookings.cpython-312.pyc | Bin 0 -> 1794 bytes ...ry_content_fields_to_page_.cpython-312.pyc | Bin 0 -> 4154 bytes ...dd_map_url_to_page_content.cpython-312.pyc | Bin 0 -> 928 bytes ..._add_paypal_payment_method.cpython-312.pyc | Bin 0 -> 1356 bytes ...erge_enterprise_and_borica.cpython-312.pyc | Bin 0 -> 815 bytes ...dd_is_proforma_to_invoices.cpython-312.pyc | Bin 0 -> 929 bytes ...y_sections_to_page_content.cpython-312.pyc | Bin 0 -> 2805 bytes ...nt_lockout_fields_to_users.cpython-312.pyc | Bin 0 -> 1365 bytes .../versions/add_enterprise_features.py | 218 +++++++++++++ ...bafe747c931_merge_enterprise_and_borica.py | 25 ++ Backend/requirements.txt | 9 + Backend/scripts/check_dependencies.py | 69 ++++ Backend/src/__pycache__/main.cpython-312.pyc | Bin 24060 -> 25409 bytes .../__pycache__/user_session.cpython-312.pyc | Bin 0 -> 2353 bytes Backend/src/auth/models/user_session.py | 43 +++ .../__pycache__/auth_routes.cpython-312.pyc | Bin 23159 -> 23231 bytes .../session_routes.cpython-312.pyc | Bin 0 -> 4734 bytes .../__pycache__/user_routes.cpython-312.pyc | Bin 15048 -> 15165 bytes Backend/src/auth/routes/auth_routes.py | 13 +- Backend/src/auth/routes/session_routes.py | 92 ++++++ Backend/src/auth/routes/user_routes.py | 7 +- .../__pycache__/auth_service.cpython-312.pyc | Bin 26258 -> 26348 bytes .../session_service.cpython-312.pyc | Bin 0 -> 6584 bytes Backend/src/auth/services/auth_service.py | 3 +- Backend/src/auth/services/session_service.py | 149 +++++++++ .../booking_routes.cpython-312.pyc | Bin 106341 -> 107309 bytes Backend/src/bookings/routes/booking_routes.py | 52 ++- Backend/src/compliance/__init__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 205 bytes .../__pycache__/gdpr_request.cpython-312.pyc | Bin 0 -> 2904 bytes Backend/src/compliance/models/gdpr_request.py | 58 ++++ Backend/src/compliance/routes/__init__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 212 bytes .../__pycache__/gdpr_routes.cpython-312.pyc | Bin 0 -> 13002 bytes Backend/src/compliance/routes/gdpr_routes.py | 272 ++++++++++++++++ .../__pycache__/gdpr_service.cpython-312.pyc | Bin 0 -> 14423 bytes .../src/compliance/services/gdpr_service.py | 295 +++++++++++++++++ Backend/src/integrations/__init__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 229 bytes .../__pycache__/api_key.cpython-312.pyc | Bin 0 -> 2448 bytes .../__pycache__/webhook.cpython-312.pyc | Bin 0 -> 4024 bytes Backend/src/integrations/models/api_key.py | 48 +++ Backend/src/integrations/models/webhook.py | 84 +++++ Backend/src/integrations/routes/__init__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 236 bytes .../api_key_routes.cpython-312.pyc | Bin 0 -> 5852 bytes .../webhook_routes.cpython-312.pyc | Bin 0 -> 6774 bytes .../src/integrations/routes/api_key_routes.py | 165 ++++++++++ .../src/integrations/routes/webhook_routes.py | 199 +++++++++++ .../api_key_service.cpython-312.pyc | Bin 0 -> 4873 bytes .../webhook_service.cpython-312.pyc | Bin 0 -> 7757 bytes .../integrations/services/api_key_service.py | 133 ++++++++ .../integrations/services/webhook_service.py | 218 +++++++++++++ Backend/src/main.py | 20 +- .../invoice_routes.cpython-312.pyc | Bin 14415 -> 14397 bytes Backend/src/payments/routes/invoice_routes.py | 4 +- .../__pycache__/auth.cpython-312.pyc | Bin 5992 -> 7524 bytes .../role_based_rate_limit.cpython-312.pyc | Bin 0 -> 2283 bytes Backend/src/security/middleware/auth.py | 79 ++++- .../middleware/role_based_rate_limit.py | 47 +++ .../__pycache__/settings.cpython-312.pyc | Bin 10800 -> 11311 bytes Backend/src/shared/config/settings.py | 4 + .../api_versioning.cpython-312.pyc | Bin 0 -> 2696 bytes .../src/shared/middleware/api_versioning.py | 51 +++ Backend/src/shared/utils/audit_decorator.py | 111 +++++++ .../approval_workflow.cpython-312.pyc | Bin 0 -> 2887 bytes .../src/system/models/approval_workflow.py | 59 ++++ .../approval_routes.cpython-312.pyc | Bin 0 -> 8008 bytes .../__pycache__/backup_routes.cpython-312.pyc | Bin 0 -> 6376 bytes Backend/src/system/routes/approval_routes.py | 200 ++++++++++++ .../approval_service.cpython-312.pyc | Bin 0 -> 9063 bytes .../backup_service.cpython-312.pyc | Bin 0 -> 11175 bytes .../src/system/services/approval_service.py | 231 +++++++++++++ Backend/src/system/services/backup_service.py | 240 ++++++++++++++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 302 bytes .../__pycache__/command.cpython-312.pyc | Bin 0 -> 27371 bytes .../__pycache__/config.cpython-312.pyc | Bin 0 -> 23070 bytes .../__pycache__/context.cpython-312.pyc | Bin 0 -> 381 bytes .../alembic/__pycache__/op.cpython-312.pyc | Bin 0 -> 363 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 629 bytes .../__pycache__/api.cpython-312.pyc | Bin 0 -> 22246 bytes .../__pycache__/compare.cpython-312.pyc | Bin 0 -> 48838 bytes .../__pycache__/render.cpython-312.pyc | Bin 0 -> 44953 bytes .../__pycache__/rewriter.cpython-312.pyc | Bin 0 -> 9177 bytes .../ddl/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 391 bytes .../ddl/__pycache__/base.cpython-312.pyc | Bin 0 -> 15542 bytes .../ddl/__pycache__/impl.cpython-312.pyc | Bin 0 -> 30495 bytes .../ddl/__pycache__/mssql.cpython-312.pyc | Bin 0 -> 16070 bytes .../ddl/__pycache__/mysql.cpython-312.pyc | Bin 0 -> 15902 bytes .../ddl/__pycache__/oracle.cpython-312.pyc | Bin 0 -> 8520 bytes .../__pycache__/postgresql.cpython-312.pyc | Bin 0 -> 31178 bytes .../ddl/__pycache__/sqlite.cpython-312.pyc | Bin 0 -> 7514 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 491 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 76001 bytes .../__pycache__/batch.cpython-312.pyc | Bin 0 -> 31473 bytes .../__pycache__/ops.cpython-312.pyc | Bin 0 -> 108712 bytes .../__pycache__/schemaobj.cpython-312.pyc | Bin 0 -> 11872 bytes .../__pycache__/toimpl.cpython-312.pyc | Bin 0 -> 11157 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 198 bytes .../__pycache__/environment.cpython-312.pyc | Bin 0 -> 43648 bytes .../__pycache__/migration.cpython-312.pyc | Bin 0 -> 58805 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 311 bytes .../script/__pycache__/base.cpython-312.pyc | Bin 0 -> 43592 bytes .../__pycache__/revision.cpython-312.pyc | Bin 0 -> 61907 bytes .../__pycache__/write_hooks.cpython-312.pyc | Bin 0 -> 6589 bytes .../util/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1446 bytes .../util/__pycache__/compat.cpython-312.pyc | Bin 0 -> 3233 bytes .../util/__pycache__/editor.cpython-312.pyc | Bin 0 -> 3245 bytes .../util/__pycache__/exc.cpython-312.pyc | Bin 0 -> 535 bytes .../__pycache__/langhelpers.cpython-312.pyc | Bin 0 -> 12473 bytes .../__pycache__/messaging.cpython-312.pyc | Bin 0 -> 4840 bytes .../util/__pycache__/pyfiles.cpython-312.pyc | Bin 0 -> 5142 bytes .../__pycache__/sqla_compat.cpython-312.pyc | Bin 0 -> 24767 bytes .../mako/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 216 bytes .../__pycache__/_ast_util.cpython-312.pyc | Bin 0 -> 36426 bytes .../mako/__pycache__/ast.cpython-312.pyc | Bin 0 -> 7500 bytes .../mako/__pycache__/cache.cpython-312.pyc | Bin 0 -> 8499 bytes .../mako/__pycache__/codegen.cpython-312.pyc | Bin 0 -> 59074 bytes .../mako/__pycache__/compat.cpython-312.pyc | Bin 0 -> 3076 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 14787 bytes .../mako/__pycache__/filters.cpython-312.pyc | Bin 0 -> 6708 bytes .../mako/__pycache__/lexer.cpython-312.pyc | Bin 0 -> 20347 bytes .../__pycache__/parsetree.cpython-312.pyc | Bin 0 -> 29974 bytes .../mako/__pycache__/pygen.cpython-312.pyc | Bin 0 -> 11056 bytes .../mako/__pycache__/pyparser.cpython-312.pyc | Bin 0 -> 12290 bytes .../mako/__pycache__/runtime.cpython-312.pyc | Bin 0 -> 39115 bytes .../mako/__pycache__/template.cpython-312.pyc | Bin 0 -> 26801 bytes .../mako/__pycache__/util.cpython-312.pyc | Bin 0 -> 20381 bytes .../ext/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 191 bytes .../__pycache__/pygmentplugin.cpython-312.pyc | Bin 0 -> 5921 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 20968 bytes .../__pycache__/filter.cpython-312.pyc | Bin 0 -> 3226 bytes .../__pycache__/formatter.cpython-312.pyc | Bin 0 -> 4696 bytes .../__pycache__/lexer.cpython-312.pyc | Bin 0 -> 38760 bytes .../__pycache__/regexopt.cpython-312.pyc | Bin 0 -> 4081 bytes .../__pycache__/style.cpython-312.pyc | Bin 0 -> 6705 bytes .../__pycache__/token.cpython-312.pyc | Bin 0 -> 8194 bytes .../__pycache__/unistring.cpython-312.pyc | Bin 0 -> 33011 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 37931 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 6917 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 0 -> 4215 bytes .../__pycache__/html.cpython-312.pyc | Bin 0 -> 41377 bytes .../__pycache__/_css_builtins.cpython-312.pyc | Bin 0 -> 9395 bytes .../__pycache__/_lua_builtins.cpython-312.pyc | Bin 0 -> 8397 bytes .../_scheme_builtins.cpython-312.pyc | Bin 0 -> 23183 bytes .../__pycache__/actionscript.cpython-312.pyc | Bin 0 -> 11125 bytes .../lexers/__pycache__/agile.cpython-312.pyc | Bin 0 -> 1316 bytes .../lexers/__pycache__/css.cpython-312.pyc | Bin 0 -> 22114 bytes .../lexers/__pycache__/d.cpython-312.pyc | Bin 0 -> 8343 bytes .../lexers/__pycache__/data.cpython-312.pyc | Bin 0 -> 21177 bytes .../lexers/__pycache__/factor.cpython-312.pyc | Bin 0 -> 16937 bytes .../lexers/__pycache__/html.cpython-312.pyc | Bin 0 -> 20742 bytes .../lexers/__pycache__/iolang.cpython-312.pyc | Bin 0 -> 2224 bytes .../__pycache__/javascript.cpython-312.pyc | Bin 0 -> 57008 bytes .../lexers/__pycache__/jvm.cpython-312.pyc | Bin 0 -> 63885 bytes .../lexers/__pycache__/lisp.cpython-312.pyc | Bin 0 -> 121654 bytes .../lexers/__pycache__/perl.cpython-312.pyc | Bin 0 -> 39029 bytes .../lexers/__pycache__/php.cpython-312.pyc | Bin 0 -> 14334 bytes .../lexers/__pycache__/python.cpython-312.pyc | Bin 0 -> 42926 bytes .../lexers/__pycache__/ruby.cpython-312.pyc | Bin 0 -> 22602 bytes .../__pycache__/scripting.cpython-312.pyc | Bin 0 -> 71852 bytes .../lexers/__pycache__/tcl.cpython-312.pyc | Bin 0 -> 5160 bytes .../lexers/__pycache__/web.cpython-312.pyc | Bin 0 -> 1331 bytes .../__pycache__/webmisc.cpython-312.pyc | Bin 0 -> 43558 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 2635 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 0 -> 3648 bytes .../__pycache__/default.cpython-312.pyc | Bin 0 -> 3219 bytes .../__pycache__/events.cpython-312.pyc | Bin 0 -> 566 bytes .../__pycache__/_typing.cpython-312.pyc | Bin 0 -> 903 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 3341 bytes .../_psycopg_common.cpython-312.pyc | Bin 0 -> 7709 bytes .../__pycache__/array.cpython-312.pyc | Bin 0 -> 16588 bytes .../__pycache__/asyncpg.cpython-312.pyc | Bin 0 -> 56603 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 200794 bytes .../__pycache__/dml.cpython-312.pyc | Bin 0 -> 11617 bytes .../__pycache__/ext.cpython-312.pyc | Bin 0 -> 19254 bytes .../__pycache__/hstore.cpython-312.pyc | Bin 0 -> 15368 bytes .../__pycache__/json.cpython-312.pyc | Bin 0 -> 13561 bytes .../__pycache__/named_types.cpython-312.pyc | Bin 0 -> 22272 bytes .../__pycache__/operators.cpython-312.pyc | Bin 0 -> 2166 bytes .../__pycache__/pg8000.cpython-312.pyc | Bin 0 -> 30067 bytes .../__pycache__/pg_catalog.cpython-312.pyc | Bin 0 -> 10466 bytes .../__pycache__/psycopg.cpython-312.pyc | Bin 0 -> 35921 bytes .../__pycache__/psycopg2.cpython-312.pyc | Bin 0 -> 35693 bytes .../__pycache__/psycopg2cffi.cpython-312.pyc | Bin 0 -> 2173 bytes .../__pycache__/ranges.cpython-312.pyc | Bin 0 -> 31586 bytes .../__pycache__/types.cpython-312.pyc | Bin 0 -> 11055 bytes .../__pycache__/strategies.cpython-312.pyc | Bin 0 -> 567 bytes .../ext/__pycache__/compiler.cpython-312.pyc | Bin 0 -> 20657 bytes Frontend/src/App.tsx | 34 ++ .../auth/components/CustomerRoute.tsx | 3 +- .../features/auth/services/sessionService.ts | 31 ++ .../compliance/services/gdprService.ts | 65 ++++ .../src/features/compliance/services/index.ts | 3 + .../integrations/services/apiKeyService.ts | 55 ++++ .../features/integrations/services/index.ts | 5 + .../integrations/services/webhookService.ts | 77 +++++ .../system/services/approvalService.ts | 54 +++ .../features/system/services/backupService.ts | 43 +++ .../src/features/system/services/index.ts | 5 + .../src/pages/accountant/DashboardPage.tsx | 156 ++++----- .../src/pages/admin/APIKeyManagementPage.tsx | 308 ++++++++++++++++++ .../pages/admin/ApprovalManagementPage.tsx | 264 +++++++++++++++ .../src/pages/admin/BackupManagementPage.tsx | 201 ++++++++++++ .../src/pages/admin/GDPRManagementPage.tsx | 147 +++++++++ .../src/pages/admin/WebhookManagementPage.tsx | 279 ++++++++++++++++ Frontend/src/pages/customer/DashboardPage.tsx | 178 +++++----- Frontend/src/pages/customer/GDPRPage.tsx | 205 ++++++++++++ Frontend/src/pages/customer/ProfilePage.tsx | 150 ++++++++- .../pages/customer/SessionManagementPage.tsx | 135 ++++++++ Frontend/src/pages/staff/DashboardPage.tsx | 151 ++++----- .../src/shared/components/SidebarAdmin.tsx | 33 +- 234 files changed, 5513 insertions(+), 283 deletions(-) create mode 100644 Backend/alembic/__pycache__/env.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/08e2f866e131_add_mfa_fields_to_users.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/0e2dc5df18c3_add_privacy_terms_refunds_to_page_type_.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/1444eb61188e_add_section_title_fields_to_page_content.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/163657e72e93_add_page_content_table.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/17efc6439cc3_add_luxury_section_fields_to_page_.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/59baf2338f8a_initial_migration_create_all_tables_.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/6a126cc5b23c_add_capacity_room_size_view_to_rooms.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/96c23dad405d_add_system_settings_table.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/9bb08492a382_add_cancellation_accessibility_faq_to_.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_about_page_fields.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_badges_to_page_content.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_blog_posts_table.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_borica_payment_method.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_copyright_text_to_page_content.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_enterprise_features.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_group_booking_tables.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_guest_profile_crm_tables.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_loyalty_system_tables.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_rate_plan_id_to_bookings.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_sections_to_blog_posts.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/add_stripe_payment_method.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/bd309b0742c1_add_promotion_fields_to_bookings.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/bfa74be4b256_add_luxury_content_fields_to_page_.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/cce764ef7a50_add_map_url_to_page_content.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/d9aff6c5f0d4_add_paypal_payment_method.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/dbafe747c931_merge_enterprise_and_borica.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/f1a2b3c4d5e6_add_is_proforma_to_invoices.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/ff515d77abbe_add_more_luxury_sections_to_page_content.cpython-312.pyc create mode 100644 Backend/alembic/versions/__pycache__/fff4b67466b3_add_account_lockout_fields_to_users.cpython-312.pyc create mode 100644 Backend/alembic/versions/add_enterprise_features.py create mode 100644 Backend/alembic/versions/dbafe747c931_merge_enterprise_and_borica.py create mode 100755 Backend/scripts/check_dependencies.py create mode 100644 Backend/src/auth/models/__pycache__/user_session.cpython-312.pyc create mode 100644 Backend/src/auth/models/user_session.py create mode 100644 Backend/src/auth/routes/__pycache__/session_routes.cpython-312.pyc create mode 100644 Backend/src/auth/routes/session_routes.py create mode 100644 Backend/src/auth/services/__pycache__/session_service.cpython-312.pyc create mode 100644 Backend/src/auth/services/session_service.py create mode 100644 Backend/src/compliance/__init__.py create mode 100644 Backend/src/compliance/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/src/compliance/models/__pycache__/gdpr_request.cpython-312.pyc create mode 100644 Backend/src/compliance/models/gdpr_request.py create mode 100644 Backend/src/compliance/routes/__init__.py create mode 100644 Backend/src/compliance/routes/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/src/compliance/routes/__pycache__/gdpr_routes.cpython-312.pyc create mode 100644 Backend/src/compliance/routes/gdpr_routes.py create mode 100644 Backend/src/compliance/services/__pycache__/gdpr_service.cpython-312.pyc create mode 100644 Backend/src/compliance/services/gdpr_service.py create mode 100644 Backend/src/integrations/__init__.py create mode 100644 Backend/src/integrations/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/src/integrations/models/__pycache__/api_key.cpython-312.pyc create mode 100644 Backend/src/integrations/models/__pycache__/webhook.cpython-312.pyc create mode 100644 Backend/src/integrations/models/api_key.py create mode 100644 Backend/src/integrations/models/webhook.py create mode 100644 Backend/src/integrations/routes/__init__.py create mode 100644 Backend/src/integrations/routes/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/src/integrations/routes/__pycache__/api_key_routes.cpython-312.pyc create mode 100644 Backend/src/integrations/routes/__pycache__/webhook_routes.cpython-312.pyc create mode 100644 Backend/src/integrations/routes/api_key_routes.py create mode 100644 Backend/src/integrations/routes/webhook_routes.py create mode 100644 Backend/src/integrations/services/__pycache__/api_key_service.cpython-312.pyc create mode 100644 Backend/src/integrations/services/__pycache__/webhook_service.cpython-312.pyc create mode 100644 Backend/src/integrations/services/api_key_service.py create mode 100644 Backend/src/integrations/services/webhook_service.py create mode 100644 Backend/src/security/middleware/__pycache__/role_based_rate_limit.cpython-312.pyc create mode 100644 Backend/src/security/middleware/role_based_rate_limit.py create mode 100644 Backend/src/shared/middleware/__pycache__/api_versioning.cpython-312.pyc create mode 100644 Backend/src/shared/middleware/api_versioning.py create mode 100644 Backend/src/shared/utils/audit_decorator.py create mode 100644 Backend/src/system/models/__pycache__/approval_workflow.cpython-312.pyc create mode 100644 Backend/src/system/models/approval_workflow.py create mode 100644 Backend/src/system/routes/__pycache__/approval_routes.cpython-312.pyc create mode 100644 Backend/src/system/routes/__pycache__/backup_routes.cpython-312.pyc create mode 100644 Backend/src/system/routes/approval_routes.py create mode 100644 Backend/src/system/services/__pycache__/approval_service.cpython-312.pyc create mode 100644 Backend/src/system/services/__pycache__/backup_service.cpython-312.pyc create mode 100644 Backend/src/system/services/approval_service.py create mode 100644 Backend/src/system/services/backup_service.py create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/__pycache__/command.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/__pycache__/config.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/__pycache__/context.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/__pycache__/op.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/autogenerate/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/autogenerate/__pycache__/api.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/autogenerate/__pycache__/compare.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/autogenerate/__pycache__/render.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/autogenerate/__pycache__/rewriter.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/ddl/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/ddl/__pycache__/base.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/ddl/__pycache__/impl.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/ddl/__pycache__/mssql.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/ddl/__pycache__/mysql.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/ddl/__pycache__/oracle.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/ddl/__pycache__/postgresql.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/ddl/__pycache__/sqlite.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/operations/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/operations/__pycache__/base.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/operations/__pycache__/batch.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/operations/__pycache__/ops.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/operations/__pycache__/schemaobj.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/operations/__pycache__/toimpl.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/runtime/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/runtime/__pycache__/environment.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/runtime/__pycache__/migration.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/script/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/script/__pycache__/base.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/script/__pycache__/revision.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/script/__pycache__/write_hooks.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/util/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/util/__pycache__/compat.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/util/__pycache__/editor.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/util/__pycache__/exc.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/util/__pycache__/langhelpers.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/util/__pycache__/messaging.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/util/__pycache__/pyfiles.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/alembic/util/__pycache__/sqla_compat.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/_ast_util.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/ast.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/cache.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/codegen.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/compat.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/exceptions.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/filters.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/lexer.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/parsetree.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/pygen.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/pyparser.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/runtime.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/template.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/__pycache__/util.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/ext/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/mako/ext/__pycache__/pygmentplugin.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/markupsafe/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/__pycache__/filter.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/__pycache__/formatter.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/__pycache__/lexer.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/__pycache__/regexopt.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/__pycache__/style.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/__pycache__/token.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/__pycache__/unistring.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/filters/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/formatters/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/formatters/__pycache__/_mapping.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/formatters/__pycache__/html.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/_css_builtins.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/_lua_builtins.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/_scheme_builtins.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/actionscript.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/agile.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/css.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/d.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/data.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/factor.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/html.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/iolang.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/javascript.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/jvm.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/lisp.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/perl.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/php.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/python.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/ruby.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/scripting.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/tcl.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/web.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/webmisc.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/styles/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/styles/__pycache__/_mapping.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/pygments/styles/__pycache__/default.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/__pycache__/events.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/__pycache__/_typing.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/__init__.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/_psycopg_common.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/array.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/asyncpg.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/base.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/dml.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/ext.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/hstore.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/json.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/named_types.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/operators.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/pg8000.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/pg_catalog.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/psycopg.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/psycopg2cffi.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/ranges.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/types.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/engine/__pycache__/strategies.cpython-312.pyc create mode 100644 Backend/venv/lib/python3.12/site-packages/sqlalchemy/ext/__pycache__/compiler.cpython-312.pyc create mode 100644 Frontend/src/features/auth/services/sessionService.ts create mode 100644 Frontend/src/features/compliance/services/gdprService.ts create mode 100644 Frontend/src/features/compliance/services/index.ts create mode 100644 Frontend/src/features/integrations/services/apiKeyService.ts create mode 100644 Frontend/src/features/integrations/services/index.ts create mode 100644 Frontend/src/features/integrations/services/webhookService.ts create mode 100644 Frontend/src/features/system/services/approvalService.ts create mode 100644 Frontend/src/features/system/services/backupService.ts create mode 100644 Frontend/src/pages/admin/APIKeyManagementPage.tsx create mode 100644 Frontend/src/pages/admin/ApprovalManagementPage.tsx create mode 100644 Frontend/src/pages/admin/BackupManagementPage.tsx create mode 100644 Frontend/src/pages/admin/GDPRManagementPage.tsx create mode 100644 Frontend/src/pages/admin/WebhookManagementPage.tsx create mode 100644 Frontend/src/pages/customer/GDPRPage.tsx create mode 100644 Frontend/src/pages/customer/SessionManagementPage.tsx diff --git a/Backend/alembic/__pycache__/env.cpython-312.pyc b/Backend/alembic/__pycache__/env.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..242ab7367628daeec333f5d7954e837c9b84fc13 GIT binary patch literal 2719 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 b>;TG+e_Zk{<0&ZUEBMpI0l1D9NDBTRAiNCB literal 0 HcmV?d00001 diff --git a/Backend/alembic/versions/__pycache__/163657e72e93_add_page_content_table.cpython-312.pyc b/Backend/alembic/versions/__pycache__/163657e72e93_add_page_content_table.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fbc1ce4ecf201dc1102749c95138cf8725fffd8e GIT binary patch literal 5897 zcmcJTTWs6r8HRPBsPp;c^b{{kx_Mb5G-*xR~m>^MHgmK|A%P17PRQKm?Vq#Vnq zB*1{(wm^Yg?P9=yZE!9&Y`}V%%K*D^kz@_H^=iA=?m8sEfL`r;Dalr{0LfBUfb{a` z^L{V?pTA&z=AVN>pN(GsDD+Fe@YrmB$DsRibPgV8>EO0aunBhARkriA;x8Nvx=x&hzh_IbSNBTRwBPRO-yZl79Mh();nC7ZWn<)>-AEBFNeoxpA< z;s3}F_T&e;sRt^A?u2(c_e6-i^sJ*VNR7QxYP=^kbTG&6(f-|i`FSP|Ju%snczE|S z)suQSD^K?%K5w3{wnKd{NPV?$(~+Lk!&&`nJ&A|6`q#ge)Hixk4`=mn9(v+ihn{$} zC-HeZ^lIOv{uiXa+PD5Y-%9GSp47wH_wOEh;_*XIJkgUF>HcLu(EY#hFaHbrc28pL zAgO!w3W?wQMu~~;l@C;Kbbn)aUvHna_jV$w184WBr%&nYo;y(C``tXjE;!0|>IVjP znKu81$v@~xc2RPqH@RgSI5}Yk>wH<{N~&UrilLhhNf@HO%%e1AnO~Mg(`#{~RToXB zqSi#y4KH6ZOc%ebHVu7M%&OSBu4;mAdem~q8lt0K zBZyR^iJ8F?uc(St;$^O>QQO&B3MVNmsu|GLl0-z7lvUjfw3pQx`6{BOcH)E9ad-Y^ z8+Gz^L)BW{yJ@m(yxbINYAYgdG&MT%N;*gPPFfR9UrD30qQLRA&}Loe9>=A1?x{WD zBmsA>sYs2cXukG8cz=Tif*RUXT9%c}8P*0mblzkysB*JLcXoufxlEhIRb zQpzTi7uOBbJ*cX($SbBNOLNIfw0VgsjTWZ0M#a_zRnZNNmuOqM`H~`t>!y9>x3