zolo-os 1.6.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zolo_os-1.6.2/Documentation/zAuth_GUIDE.md +1032 -0
- zolo_os-1.6.2/Documentation/zAuth_Guides/actions_GUIDE.md +791 -0
- zolo_os-1.6.2/Documentation/zAuth_Guides/authentication_GUIDE.md +903 -0
- zolo_os-1.6.2/Documentation/zAuth_Guides/delegates_GUIDE.md +701 -0
- zolo_os-1.6.2/Documentation/zAuth_Guides/persistence_GUIDE.md +823 -0
- zolo_os-1.6.2/Documentation/zAuth_Guides/rbac_GUIDE.md +859 -0
- zolo_os-1.6.2/Documentation/zAuth_Guides/security_GUIDE.md +591 -0
- zolo_os-1.6.2/Documentation/zBifrost_GUIDE.md +1149 -0
- zolo_os-1.6.2/Documentation/zBifrost_Guides/authentication_GUIDE.md +644 -0
- zolo_os-1.6.2/Documentation/zBifrost_Guides/caching_GUIDE.md +899 -0
- zolo_os-1.6.2/Documentation/zBifrost_Guides/connection_GUIDE.md +813 -0
- zolo_os-1.6.2/Documentation/zBifrost_Guides/events_GUIDE.md +783 -0
- zolo_os-1.6.2/Documentation/zBifrost_Guides/monitoring_GUIDE.md +853 -0
- zolo_os-1.6.2/Documentation/zCLI_GUIDE.md +1596 -0
- zolo_os-1.6.2/Documentation/zComm_GUIDE.md +1439 -0
- zolo_os-1.6.2/Documentation/zComm_Guides/http_GUIDE.md +533 -0
- zolo_os-1.6.2/Documentation/zComm_Guides/network_GUIDE.md +430 -0
- zolo_os-1.6.2/Documentation/zComm_Guides/services_GUIDE.md +792 -0
- zolo_os-1.6.2/Documentation/zComm_Guides/storage_GUIDE.md +332 -0
- zolo_os-1.6.2/Documentation/zComm_Guides/websocket_GUIDE.md +911 -0
- zolo_os-1.6.2/Documentation/zConfig_GUIDE.md +1536 -0
- zolo_os-1.6.2/Documentation/zConfig_Guides/environment_GUIDE.md +873 -0
- zolo_os-1.6.2/Documentation/zConfig_Guides/loggers_GUIDE.md +814 -0
- zolo_os-1.6.2/Documentation/zConfig_Guides/machine_GUIDE.md +778 -0
- zolo_os-1.6.2/Documentation/zConfig_Guides/network_GUIDE.md +901 -0
- zolo_os-1.6.2/Documentation/zConfig_Guides/paths_GUIDE.md +570 -0
- zolo_os-1.6.2/Documentation/zConfig_Guides/persistence_GUIDE.md +737 -0
- zolo_os-1.6.2/Documentation/zConfig_Guides/session_GUIDE.md +851 -0
- zolo_os-1.6.2/Documentation/zData_GUIDE.md +1170 -0
- zolo_os-1.6.2/Documentation/zData_Guides/aggregations_GUIDE.md +737 -0
- zolo_os-1.6.2/Documentation/zData_Guides/backends_GUIDE.md +548 -0
- zolo_os-1.6.2/Documentation/zData_Guides/crud_operations_GUIDE.md +679 -0
- zolo_os-1.6.2/Documentation/zData_Guides/ddl_operations_GUIDE.md +647 -0
- zolo_os-1.6.2/Documentation/zData_Guides/migration_GUIDE.md +661 -0
- zolo_os-1.6.2/Documentation/zData_Guides/orchestrator_GUIDE.md +321 -0
- zolo_os-1.6.2/Documentation/zData_Guides/parsers_GUIDE.md +498 -0
- zolo_os-1.6.2/Documentation/zData_Guides/schema_manager_GUIDE.md +408 -0
- zolo_os-1.6.2/Documentation/zData_Guides/validators_GUIDE.md +597 -0
- zolo_os-1.6.2/Documentation/zDialog_GUIDE.md +915 -0
- zolo_os-1.6.2/Documentation/zDialog_Guides/dialog_constants_GUIDE.md +557 -0
- zolo_os-1.6.2/Documentation/zDialog_Guides/dialog_context_GUIDE.md +445 -0
- zolo_os-1.6.2/Documentation/zDialog_Guides/dialog_submit_GUIDE.md +562 -0
- zolo_os-1.6.2/Documentation/zDispatch_GUIDE.md +1123 -0
- zolo_os-1.6.2/Documentation/zDispatch_Guides/commands_GUIDE.md +498 -0
- zolo_os-1.6.2/Documentation/zDispatch_Guides/constants_GUIDE.md +548 -0
- zolo_os-1.6.2/Documentation/zDispatch_Guides/expansion_GUIDE.md +473 -0
- zolo_os-1.6.2/Documentation/zDispatch_Guides/handlers_GUIDE.md +480 -0
- zolo_os-1.6.2/Documentation/zDispatch_Guides/launcher_GUIDE.md +388 -0
- zolo_os-1.6.2/Documentation/zDispatch_Guides/modifiers_GUIDE.md +577 -0
- zolo_os-1.6.2/Documentation/zDispatch_Guides/resolvers_GUIDE.md +548 -0
- zolo_os-1.6.2/Documentation/zDisplay_GUIDE.md +1296 -0
- zolo_os-1.6.2/Documentation/zDisplay_Guides/advanced_GUIDE.md +488 -0
- zolo_os-1.6.2/Documentation/zDisplay_Guides/api_GUIDE.md +428 -0
- zolo_os-1.6.2/Documentation/zDisplay_Guides/basic_GUIDE.md +392 -0
- zolo_os-1.6.2/Documentation/zDisplay_Guides/compounds_GUIDE.md +391 -0
- zolo_os-1.6.2/Documentation/zDisplay_Guides/io_GUIDE.md +326 -0
- zolo_os-1.6.2/Documentation/zDisplay_Guides/system_GUIDE.md +434 -0
- zolo_os-1.6.2/Documentation/zDisplay_Guides/utils_GUIDE.md +414 -0
- zolo_os-1.6.2/Documentation/zFunc_GUIDE.md +530 -0
- zolo_os-1.6.2/Documentation/zFunc_Guides/arguments_GUIDE.md +532 -0
- zolo_os-1.6.2/Documentation/zFunc_Guides/builtins_GUIDE.md +431 -0
- zolo_os-1.6.2/Documentation/zFunc_Guides/execution_GUIDE.md +406 -0
- zolo_os-1.6.2/Documentation/zFunc_Guides/javascript_GUIDE.md +574 -0
- zolo_os-1.6.2/Documentation/zFunc_Guides/plugins_GUIDE.md +716 -0
- zolo_os-1.6.2/Documentation/zFunc_Guides/resolution_GUIDE.md +514 -0
- zolo_os-1.6.2/Documentation/zInstall_GUIDE.md +349 -0
- zolo_os-1.6.2/Documentation/zLoader_GUIDE.md +1103 -0
- zolo_os-1.6.2/Documentation/zLoader_Guides/base_GUIDE.md +215 -0
- zolo_os-1.6.2/Documentation/zLoader_Guides/cache_pinned_GUIDE.md +107 -0
- zolo_os-1.6.2/Documentation/zLoader_Guides/cache_plugin_GUIDE.md +108 -0
- zolo_os-1.6.2/Documentation/zLoader_Guides/cache_schema_GUIDE.md +107 -0
- zolo_os-1.6.2/Documentation/zLoader_Guides/cache_system_GUIDE.md +298 -0
- zolo_os-1.6.2/Documentation/zLoader_Guides/constants_GUIDE.md +333 -0
- zolo_os-1.6.2/Documentation/zLoader_Guides/io_GUIDE.md +288 -0
- zolo_os-1.6.2/Documentation/zLoader_Guides/orchestrator_GUIDE.md +333 -0
- zolo_os-1.6.2/Documentation/zLoader_Guides/utils_GUIDE.md +396 -0
- zolo_os-1.6.2/Documentation/zLoader_Guides/validator_GUIDE.md +105 -0
- zolo_os-1.6.2/Documentation/zNavigation_GUIDE.md +732 -0
- zolo_os-1.6.2/Documentation/zNavigation_Guides/breadcrumbs_GUIDE.md +245 -0
- zolo_os-1.6.2/Documentation/zNavigation_Guides/handlers_GUIDE.md +413 -0
- zolo_os-1.6.2/Documentation/zNavigation_Guides/linking_GUIDE.md +406 -0
- zolo_os-1.6.2/Documentation/zNavigation_Guides/menu_system_GUIDE.md +215 -0
- zolo_os-1.6.2/Documentation/zNavigation_Guides/navigation_state_GUIDE.md +348 -0
- zolo_os-1.6.2/Documentation/zNavigation_Guides/resolvers_GUIDE.md +421 -0
- zolo_os-1.6.2/Documentation/zOpen_GUIDE.md +895 -0
- zolo_os-1.6.2/Documentation/zOpen_Guides/constants_GUIDE.md +566 -0
- zolo_os-1.6.2/Documentation/zOpen_Guides/files_GUIDE.md +668 -0
- zolo_os-1.6.2/Documentation/zOpen_Guides/paths_GUIDE.md +415 -0
- zolo_os-1.6.2/Documentation/zOpen_Guides/urls_GUIDE.md +536 -0
- zolo_os-1.6.2/Documentation/zParser_GUIDE.md +1122 -0
- zolo_os-1.6.2/Documentation/zParser_Guides/commands_GUIDE.md +428 -0
- zolo_os-1.6.2/Documentation/zParser_Guides/file_GUIDE.md +289 -0
- zolo_os-1.6.2/Documentation/zParser_Guides/path_GUIDE.md +224 -0
- zolo_os-1.6.2/Documentation/zParser_Guides/plugin_GUIDE.md +362 -0
- zolo_os-1.6.2/Documentation/zParser_Guides/utils_GUIDE.md +515 -0
- zolo_os-1.6.2/Documentation/zParser_Guides/vafile_GUIDE.md +486 -0
- zolo_os-1.6.2/Documentation/zPhilosophy.md +140 -0
- zolo_os-1.6.2/Documentation/zServer_GUIDE.md +1087 -0
- zolo_os-1.6.2/Documentation/zShell_GUIDE.md +931 -0
- zolo_os-1.6.2/Documentation/zWalker_GUIDE.md +588 -0
- zolo_os-1.6.2/Documentation/zWizard_GUIDE.md +1227 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/conditions_GUIDE.md +448 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/data_GUIDE.md +524 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/dispatch_GUIDE.md +465 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/execution_GUIDE.md +556 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/filters_GUIDE.md +455 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/navigation_GUIDE.md +474 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/wizard_exceptions_GUIDE.md +385 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/wizard_hat_GUIDE.md +639 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/wizard_interpolation_GUIDE.md +475 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/wizard_rbac_GUIDE.md +558 -0
- zolo_os-1.6.2/Documentation/zWizard_Guides/wizard_transactions_GUIDE.md +610 -0
- zolo_os-1.6.2/MANIFEST.in +34 -0
- zolo_os-1.6.2/PKG-INFO +194 -0
- zolo_os-1.6.2/README.md +144 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/__init__.py +26 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig.py +310 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/__init__.py +169 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/config_constants.py +115 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/environment/__init__.py +2 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/environment/config_environment.py +244 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/environment/config_zenv.py +335 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/environment/environment_helpers.py +84 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/helpers/__init__.py +40 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/helpers/config_helpers.py +238 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/helpers/config_validator.py +386 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/loggers/__init__.py +14 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/loggers/app_logger.py +171 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/loggers/constants.py +59 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/loggers/framework_logger.py +119 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/loggers/logger_config.py +380 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/loggers/session_framework_logger.py +127 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/loggers/utils.py +165 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/__init__.py +2 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/config_machine.py +102 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/config_resource_limits.py +166 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/__init__.py +74 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/browser.py +176 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/hardware.py +443 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/ide.py +169 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/media/__init__.py +59 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/media/audio_player.py +220 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/media/image_viewer.py +226 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/media/video_player.py +221 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/media_apps.py +62 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/shared.py +62 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/machine/detectors/system.py +197 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/network/__init__.py +3 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/network/config_http_server.py +244 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/network/config_raven.py +64 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/network/config_websocket.py +259 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/paths/__init__.py +3 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/paths/_paths_config_files.py +132 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/paths/_paths_constants.py +47 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/paths/_paths_logging.py +37 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/paths/_paths_os_dirs.py +107 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/paths/_paths_workspace.py +224 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/paths/config_paths.py +62 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/paths/config_storage_paths.py +82 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/persistence/__init__.py +1 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/persistence/config_persistence.py +626 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/session/__init__.py +1 -0
- zolo_os-1.6.2/core/L1_Foundation/a_zConfig/zConfig_modules/session/config_session.py +504 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/__init__.py +54 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm.py +661 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/__init__.py +73 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/comm_constants.py +63 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/comm_http.py +367 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/comm_services.py +392 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/comm_ssl.py +105 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/comm_storage.py +456 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/comm_utils.py +92 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/comm_websocket.py +448 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/comm_websocket_auth.py +253 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/comm_websocket_events.py +176 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/comm_websocket_input.py +193 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/services/__init__.py +62 -0
- zolo_os-1.6.2/core/L1_Foundation/b_zComm/zComm_modules/services/postgresql_service.py +511 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/__init__.py +85 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/__init__.py +290 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/cache/__init__.py +35 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/cache/cache_base.py +366 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/cache/cache_orchestrator.py +658 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/cache/cache_pinned.py +659 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/cache/cache_python_module.py +1094 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/cache/cache_schema.py +719 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/cache/cache_system.py +682 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/cache/cache_utils.py +297 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/loader_constants.py +376 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/loader_io.py +221 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/loader_modules/loader_validator.py +344 -0
- zolo_os-1.6.2/core/L1_Foundation/c_zLoader/zLoader.py +871 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/__init__.py +171 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/__init__.py +275 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/commands/__init__.py +36 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/commands/command_router.py +183 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/commands/command_utils.py +144 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/commands/config_commands.py +216 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/commands/data_commands.py +105 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/commands/file_commands.py +213 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/commands/function_commands.py +133 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/commands/session_commands.py +138 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/commands/system_commands.py +143 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/commands/ui_commands.py +193 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/__init__.py +50 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/file_parser.py +248 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/file_utils.py +103 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/format_parsers/__init__.py +26 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/format_parsers/expr_parser.py +92 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/format_parsers/format_detector.py +113 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/format_parsers/json_parser.py +96 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/format_parsers/yaml_parser.py +90 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/format_parsers/zlsp_parser.py +110 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/transformers/__init__.py +19 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/transformers/file_type_detector.py +124 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/file/transformers/rbac_transformer.py +145 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/parser_commands.py +43 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/parser_constants.py +144 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/parser_file.py +113 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/parser_functions.py +168 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/parser_path.py +102 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/parser_plugin.py +47 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/parser_utils.py +506 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/__init__.py +47 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/detection/__init__.py +26 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/detection/extension_finder.py +67 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/detection/file_validator.py +90 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/detection/zvafile_detector.py +70 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/extraction/__init__.py +29 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/extraction/filename_extractor.py +181 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/extraction/ui_mode_handler.py +78 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/file_identifier.py +179 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/path_decoder.py +167 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/resolvers/__init__.py +22 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/resolvers/path_builder.py +73 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/resolvers/symbol_resolver.py +105 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/path/resolvers/zmachine_resolver.py +147 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/plugin/__init__.py +49 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/plugin/plugin_args.py +329 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/plugin/plugin_detection.py +79 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/plugin/plugin_syntax.py +156 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/shared/__init__.py +70 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/shared/argument_utils.py +232 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/shared/display_utils.py +156 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/shared/error_handlers.py +180 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/shared/file_constants.py +294 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/shared/parser_constants.py +210 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/__init__.py +412 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/ui/__init__.py +32 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/ui/ui_construct_validators.py +246 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/ui/ui_parser.py +178 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/ui/ui_validator.py +239 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/ui/ui_zblock_processor.py +298 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/vafile_config.py +224 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/vafile_generic.py +243 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/vafile_schema.py +347 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/vafile_server.py +242 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/parser_modules/vafile/vafile_ui.py +36 -0
- zolo_os-1.6.2/core/L2_Handling/d_zParser/zParser.py +1094 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/__init__.py +51 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay.py +438 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/__init__.py +38 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/__init__.py +0 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/advanced_pagination.py +233 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/advanced_table.py +513 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/display_event_advanced.py +222 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/display_event_outputs.py +153 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/display_event_timebased.py +327 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/event_id_utils.py +45 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/markdown/__init__.py +18 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/markdown/block_extractor.py +314 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/markdown/html_processor.py +104 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/markdown/inline_transformer.py +230 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/markdown/markdown_parser.py +260 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/markdown/rich_text_renderer.py +272 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/markdown/semantic_renderers.py +426 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/markdown/syntax_highlighter.py +121 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/timebased_progress.py +395 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/timebased_spinner.py +249 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/timebased_swiper.py +397 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/advanced/timebased_utilities.py +296 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/api/__init__.py +41 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/api/delegate_data.py +194 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/api/delegate_outputs.py +186 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/api/delegate_primitives.py +191 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/api/delegate_signals.py +156 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/api/delegate_system.py +206 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/base_event_handler.py +160 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/__init__.py +0 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/display_basic_inputs.py +111 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/display_basic_outputs.py +577 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/inputs/__init__.py +12 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/inputs/boolean_input.py +141 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/outputs/__init__.py +41 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/outputs/code_renderer.py +123 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/outputs/content_transformers.py +164 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/outputs/field_renderer.py +153 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/outputs/header_renderer.py +232 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/outputs/icon_renderer.py +137 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/outputs/json_renderer.py +184 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/outputs/rendering_utilities.py +298 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/outputs/semantic_colors.py +45 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/basic/outputs/text_renderer.py +136 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/__init__.py +32 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/display_compounds_inputs.py +96 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/display_compounds_outputs.py +91 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/inputs/__init__.py +34 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/inputs/display_event_inputs.py +521 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/inputs/input_validators.py +120 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/inputs/link_handler.py +236 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/inputs/selection_collector.py +264 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/inputs/selection_renderer.py +116 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/inputs/slider_widget.py +235 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/outputs/__init__.py +21 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/outputs/display_event_data.py +379 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/outputs/display_event_links.py +332 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/compounds/outputs/display_event_media.py +631 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/delegates/__init__.py +14 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/delegates/delegate_outputs_signals.py +229 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/delegates/delegate_widgets_media.py +449 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/display_constants.py +438 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/display_delegates.py +242 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/display_events.py +121 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/display_routing.py +152 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/__init__.py +32 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/display_primitives.py +641 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/display_primitives_inputs.py +101 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/display_primitives_outputs.py +134 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/inputs/__init__.py +16 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/inputs/input_password.py +83 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/inputs/input_string.py +810 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/outputs/__init__.py +18 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/outputs/output_block.py +47 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/outputs/output_line.py +50 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/io/outputs/output_raw.py +52 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/sandbox/__init__.py +12 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/sandbox/terminal_executor.py +215 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/system/__init__.py +0 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/system/display_event_system.py +305 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/system/system_event_dashboard.py +502 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/system/system_event_declare.py +158 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/system/system_event_dialog.py +639 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/system/system_event_navigation.py +485 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/system/system_event_session.py +570 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/utils/__init__.py +52 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/utils/display_utilities.py +30 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/utils/event_buffer.py +48 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/utils/list_helpers.py +99 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/utils/mode_helper.py +185 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/utils/nested_accessor_wip.py +50 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/utils/system_message_filter.py +77 -0
- zolo_os-1.6.2/core/L2_Handling/e_zDisplay/zDisplay_modules/utils/value_formatter.py +60 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/__init__.py +267 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth.py +165 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/__init__.py +279 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/actions/__init__.py +11 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/actions/action_login.py +411 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/actions/action_logout.py +203 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/api/__init__.py +44 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/api/delegate_application.py +156 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/api/delegate_context.py +109 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/api/delegate_password.py +83 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/api/delegate_rbac.py +191 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/api/delegate_session.py +285 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/auth_constants.py +278 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/auth_delegates.py +137 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/auth_helpers.py +169 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/__init__.py +11 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/authentication/__init__.py +108 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/authentication/app_authentication.py +140 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/authentication/context_manager.py +167 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/authentication/credential_manager.py +87 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/authentication/login_manager.py +168 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/authentication/logout_manager.py +217 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/authentication/remote_authentication.py +153 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/rbac/__init__.py +86 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/rbac/context_helpers.py +162 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/rbac/database_manager.py +103 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/rbac/permission_checker.py +147 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/rbac/permission_manager.py +130 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/logic/rbac/role_checker.py +179 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/persistence/__init__.py +29 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/persistence/decorators.py +101 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/persistence/session_database.py +194 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/persistence/session_persistence.py +469 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/persistence/session_store.py +333 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/persistence/token_generator.py +37 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/security/__init__.py +10 -0
- zolo_os-1.6.2/core/L2_Handling/f_zAuth/zAuth_modules/security/password_security.py +464 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/__init__.py +115 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/__init__.py +160 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/commands/__init__.py +21 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/commands/command_list.py +100 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/commands/command_string_parser.py +255 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/commands/command_wizard.py +209 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/commands/command_wizard_detector.py +132 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/dispatch_constants.py +386 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/dispatch_helpers.py +133 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/dispatch_launcher.py +532 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/dispatch_modifiers.py +264 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/expansion/__init__.py +24 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/expansion/expander_organizational.py +530 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/expansion/expander_plurals.py +127 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/expansion/shorthand_element_expanders.py +238 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/handlers/__init__.py +23 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/handlers/handler_auth.py +292 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/handlers/handler_crud.py +249 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/handlers/handler_data.py +230 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/handlers/handler_navigation.py +412 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/handlers/handler_routing.py +153 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/handlers/handler_subsystems.py +564 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/handlers/handler_wizard_data.py +240 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/modifiers/__init__.py +21 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/modifiers/modifier_bounce.py +204 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/modifiers/modifier_menu.py +239 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/modifiers/modifier_required.py +188 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/resolvers/__init__.py +19 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/resolvers/resolver_data.py +376 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/resolvers/resolver_ui.py +144 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/shorthand_expander.py +522 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/utils/__init__.py +24 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/dispatch_modules/utils/launcher_utils.py +141 -0
- zolo_os-1.6.2/core/L2_Handling/g_zDispatch/zDispatch.py +464 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/__init__.py +120 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/__init__.py +173 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/handlers/__init__.py +22 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/handlers/handler_breadcrumbs_ops.py +377 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/handlers/handler_history.py +243 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/handlers/handler_navbar.py +627 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/handlers/handler_panels.py +226 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/handlers/handler_zback.py +435 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/menu/__init__.py +19 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/menu/menu_search.py +268 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/menu/navigation_menu_builder.py +548 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/menu/navigation_menu_interaction.py +841 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/menu/navigation_menu_renderer.py +506 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/menu/navigation_menu_system.py +659 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/navigation_breadcrumbs.py +612 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/navigation_constants.py +428 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/navigation_helpers.py +355 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/navigation_linking.py +862 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/navigation_state.py +594 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/resolvers/__init__.py +17 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/navigation_modules/resolvers/resolver_zlink.py +398 -0
- zolo_os-1.6.2/core/L2_Handling/h_zNavigation/zNavigation.py +790 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/__init__.py +8 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc.py +259 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/__init__.py +152 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/arg_processing/__init__.py +34 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/arg_processing/argument_processor.py +252 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/arg_processing/argument_splitter.py +75 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/arg_processing/context_injector.py +169 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/builtin_functions.py +110 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/exceptions.py +306 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/executors/__init__.py +31 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/executors/base_executor.py +240 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/executors/python_executor.py +200 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/func_args.py +386 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/func_constants.py +264 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/func_js_executor.py +300 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/func_resolver.py +297 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/plugin_executor.py +157 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/plugin_loader.py +201 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/plugin_resolver.py +156 -0
- zolo_os-1.6.2/core/L2_Handling/i_zFunc/zFunc_modules/protocols.py +220 -0
- zolo_os-1.6.2/core/L2_Handling/j_zDialog/__init__.py +87 -0
- zolo_os-1.6.2/core/L2_Handling/j_zDialog/dialog_modules/__init__.py +198 -0
- zolo_os-1.6.2/core/L2_Handling/j_zDialog/dialog_modules/dialog_constants.py +254 -0
- zolo_os-1.6.2/core/L2_Handling/j_zDialog/dialog_modules/dialog_context.py +395 -0
- zolo_os-1.6.2/core/L2_Handling/j_zDialog/dialog_modules/dialog_submit.py +597 -0
- zolo_os-1.6.2/core/L2_Handling/j_zDialog/zDialog.py +770 -0
- zolo_os-1.6.2/core/L2_Handling/k_zOpen/__init__.py +137 -0
- zolo_os-1.6.2/core/L2_Handling/k_zOpen/open_modules/__init__.py +106 -0
- zolo_os-1.6.2/core/L2_Handling/k_zOpen/open_modules/open_constants.py +326 -0
- zolo_os-1.6.2/core/L2_Handling/k_zOpen/open_modules/open_files.py +635 -0
- zolo_os-1.6.2/core/L2_Handling/k_zOpen/open_modules/open_paths.py +256 -0
- zolo_os-1.6.2/core/L2_Handling/k_zOpen/open_modules/open_urls.py +379 -0
- zolo_os-1.6.2/core/L2_Handling/k_zOpen/zOpen.py +714 -0
- zolo_os-1.6.2/core/L3_Abstraction/__init__.py +0 -0
- zolo_os-1.6.2/core/L3_Abstraction/l_zWizard/__init__.py +35 -0
- zolo_os-1.6.2/core/L3_Abstraction/l_zWizard/zWizard_modules/__init__.py +161 -0
- zolo_os-1.6.2/core/L3_Abstraction/l_zWizard/zWizard_modules/execution/__init__.py +17 -0
- zolo_os-1.6.2/core/L3_Abstraction/l_zWizard/zWizard_modules/managers/__init__.py +26 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/__init__.py +186 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData.py +379 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/__init__.py +87 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/connection_manager.py +167 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/lifecycle_manager.py +108 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/migration/__init__.py +16 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/migration/backend_migration.py +91 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/migration/migration_engine.py +211 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/migration/schema_discovery.py +254 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/orchestrator.py +319 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/request_handler.py +316 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/schema_manager.py +390 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/__init__.py +107 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/__init__.py +149 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/adapter_factory.py +387 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/adapter_registry.py +253 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/base_adapter.py +1157 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_adapter.py +262 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_helpers/__init__.py +136 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_helpers/constants.py +88 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_helpers/dataframe_utils.py +134 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_helpers/ddl_operations.py +189 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_helpers/dml_operations.py +542 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_helpers/file_operations.py +171 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_helpers/join_operations.py +403 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_helpers/order_operations.py +169 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_helpers/schema_operations.py +214 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/csv_helpers/where_filtering.py +376 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/postgresql_adapter.py +887 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/sql_adapter.py +1295 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/backends/sqlite_adapter.py +910 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/data_operations.py +960 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/migration_detection.py +301 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/migration_history.py +435 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/__init__.py +149 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/agg_aggregate.py +399 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/agg_set.py +217 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/agg_window.py +251 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/crud_delete.py +319 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/crud_helpers.py +58 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/crud_insert.py +590 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/crud_read.py +903 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/crud_truncate.py +194 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/crud_update.py +513 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/crud_upsert.py +381 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/ddl_create.py +267 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/ddl_drop.py +448 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/ddl_head.py +427 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/ddl_migrate.py +660 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/operations/helpers.py +1390 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/parsers/__init__.py +76 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/parsers/value_parser.py +231 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/parsers/where_parser.py +843 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/schema_diff.py +673 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/storage_quota.py +141 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/validator.py +20 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/validators/__init__.py +156 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/validators/constants.py +224 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/validators/core.py +609 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/validators/format_validator.py +370 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/validators/numeric_validator.py +73 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/validators/pattern_validator.py +63 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/validators/plugin_validator.py +175 -0
- zolo_os-1.6.2/core/L3_Abstraction/m_zData/zData_modules/shared/validators/string_validator.py +73 -0
- zolo_os-1.6.2/core/L3_Abstraction/n_zBifrost/__init__.py +26 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/__init__.py +254 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/__init__.py +291 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/__init__.py +238 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_auth.py +487 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_cd.py +478 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_comm.py +999 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_config.py +1335 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_config_persistence.py +143 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_data.py +768 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_export.py +158 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_func.py +715 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_help.py +564 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_load.py +1027 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_ls.py +618 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_open.py +400 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_session.py +649 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_shortcut.py +913 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_utils.py +54 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_walker.py +625 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_where.py +508 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/commands/shell_cmd_wizard_step.py +440 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/executor_constants.py +130 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/shell_executor.py +237 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/shell_help.py +354 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/shell_runner.py +826 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/wizard_canvas.py +329 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/shell_modules/zshell_constants.py +44 -0
- zolo_os-1.6.2/core/L3_Abstraction/o_zShell/zShell.py +82 -0
- zolo_os-1.6.2/core/L3_Abstraction/wizard_interface.py +50 -0
- zolo_os-1.6.2/core/L4_Orchestration/p_zWalker/__init__.py +217 -0
- zolo_os-1.6.2/core/L4_Orchestration/p_zWalker/zWalker.py +709 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/__init__.py +30 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer.py +203 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/__init__.py +19 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/core/__init__.py +0 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/core/cache_manager.py +322 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/core/config_manager.py +88 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/core/mount_manager.py +167 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/core/route_manager.py +178 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/core/schema_manager.py +120 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/lifecycle/__init__.py +0 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/lifecycle/dev_server_manager.py +203 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/lifecycle/gunicorn_manager.py +179 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/lifecycle/lifecycle_manager.py +316 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/lifecycle/wsgi_app.py +539 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/rendering/__init__.py +0 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/rendering/error_pages.py +244 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/rendering/form_utils.py +341 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/rendering/page_renderer.py +367 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/rendering/static_file_handler.py +308 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/routing/__init__.py +0 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/routing/handler.py +181 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/routing/nav_html_builder.py +148 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/routing/route_dispatcher.py +997 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/routing/router.py +575 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/routing/security_checks.py +61 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/routing/utils.py +163 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/utils/__init__.py +0 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/utils/http_cache_utils.py +235 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/utils/json_utils.py +372 -0
- zolo_os-1.6.2/core/L4_Orchestration/q_zServer/zServer_modules/utils/zserver_constants.py +115 -0
- zolo_os-1.6.2/core/L4_Orchestration/r_zRaven/__init__.py +15 -0
- zolo_os-1.6.2/core/L4_Orchestration/r_zRaven/zRaven.py +90 -0
- zolo_os-1.6.2/core/L4_Orchestration/r_zRaven/zRaven_modules/__init__.py +4 -0
- zolo_os-1.6.2/core/L4_Orchestration/r_zRaven/zRaven_modules/primitives/__init__.py +1 -0
- zolo_os-1.6.2/core/L4_Orchestration/r_zRaven/zRaven_modules/runner.py +251 -0
- zolo_os-1.6.2/core/__init__.py +269 -0
- zolo_os-1.6.2/core/engine.py +468 -0
- zolo_os-1.6.2/core/main.py +160 -0
- zolo_os-1.6.2/core/meta.py +21 -0
- zolo_os-1.6.2/core/version.py +34 -0
- zolo_os-1.6.2/core/zDesktop.py +65 -0
- zolo_os-1.6.2/core/zSys/Utils.py +127 -0
- zolo_os-1.6.2/core/zSys/__init__.py +55 -0
- zolo_os-1.6.2/core/zSys/accessibility/__init__.py +28 -0
- zolo_os-1.6.2/core/zSys/accessibility/emoji_descriptions.py +291 -0
- zolo_os-1.6.2/core/zSys/accessibility/icon_mapper.py +366 -0
- zolo_os-1.6.2/core/zSys/accessibility/test_emoji_descriptions.py +293 -0
- zolo_os-1.6.2/core/zSys/cli/__init__.py +30 -0
- zolo_os-1.6.2/core/zSys/cli/args/__init__.py +89 -0
- zolo_os-1.6.2/core/zSys/cli/args/agents_args.py +24 -0
- zolo_os-1.6.2/core/zSys/cli/args/config_args.py +33 -0
- zolo_os-1.6.2/core/zSys/cli/args/migrate_args.py +68 -0
- zolo_os-1.6.2/core/zSys/cli/args/patch_args.py +25 -0
- zolo_os-1.6.2/core/zSys/cli/args/scaffold_args.py +29 -0
- zolo_os-1.6.2/core/zSys/cli/args/shell_args.py +38 -0
- zolo_os-1.6.2/core/zSys/cli/args/uninstall_args.py +48 -0
- zolo_os-1.6.2/core/zSys/cli/args/ztests_args.py +38 -0
- zolo_os-1.6.2/core/zSys/cli/args/ztheme_args.py +33 -0
- zolo_os-1.6.2/core/zSys/cli/config_command.py +21 -0
- zolo_os-1.6.2/core/zSys/cli/info_command.py +24 -0
- zolo_os-1.6.2/core/zSys/cli/migrate_command.py +42 -0
- zolo_os-1.6.2/core/zSys/cli/patch_command.py +185 -0
- zolo_os-1.6.2/core/zSys/cli/route_command.py +113 -0
- zolo_os-1.6.2/core/zSys/cli/scaffold_command.py +64 -0
- zolo_os-1.6.2/core/zSys/cli/script_command.py +57 -0
- zolo_os-1.6.2/core/zSys/cli/shell_command.py +19 -0
- zolo_os-1.6.2/core/zSys/cli/special_files.py +43 -0
- zolo_os-1.6.2/core/zSys/cli/uninstall_command.py +29 -0
- zolo_os-1.6.2/core/zSys/cli/zspark_command.py +199 -0
- zolo_os-1.6.2/core/zSys/cli/ztests_command.py +50 -0
- zolo_os-1.6.2/core/zSys/cli/ztheme_command.py +54 -0
- zolo_os-1.6.2/core/zSys/errors/__init__.py +88 -0
- zolo_os-1.6.2/core/zSys/errors/exceptions.py +417 -0
- zolo_os-1.6.2/core/zSys/errors/traceback.py +332 -0
- zolo_os-1.6.2/core/zSys/errors/validation.py +20 -0
- zolo_os-1.6.2/core/zSys/formatting/__init__.py +16 -0
- zolo_os-1.6.2/core/zSys/formatting/colors.py +96 -0
- zolo_os-1.6.2/core/zSys/formatting/terminal.py +140 -0
- zolo_os-1.6.2/core/zSys/formatting/ztheme_to_ansi.py +160 -0
- zolo_os-1.6.2/core/zSys/install/__init__.py +42 -0
- zolo_os-1.6.2/core/zSys/install/detection.py +64 -0
- zolo_os-1.6.2/core/zSys/install/removal.py +344 -0
- zolo_os-1.6.2/core/zSys/logger/__init__.py +88 -0
- zolo_os-1.6.2/core/zSys/logger/bootstrap.py +245 -0
- zolo_os-1.6.2/core/zSys/logger/config.py +96 -0
- zolo_os-1.6.2/core/zSys/logger/console.py +74 -0
- zolo_os-1.6.2/core/zSys/logger/execution_context.py +17 -0
- zolo_os-1.6.2/core/zSys/logger/formats.py +202 -0
- zolo_os-1.6.2/core/zSys/logger/legacy_formats.py +10 -0
- zolo_os-1.6.2/core/zSys/logger/levels.py +20 -0
- zolo_os-1.6.2/core/zSys/shutdown/__init__.py +82 -0
- zolo_os-1.6.2/core/zSys/shutdown/cleanup.py +171 -0
- zolo_os-1.6.2/core/zSys/shutdown/shutdown_constants.py +112 -0
- zolo_os-1.6.2/core/zSys/shutdown/signals.py +59 -0
- zolo_os-1.6.2/core/zSys/syntax/__init__.py +12 -0
- zolo_os-1.6.2/core/zSys/syntax/generate_pygments_lexer.py +297 -0
- zolo_os-1.6.2/core/zSys/syntax/zolo_lexer.py +206 -0
- zolo_os-1.6.2/core/zos_plugin/__init__.py +73 -0
- zolo_os-1.6.2/pyproject.toml +128 -0
- zolo_os-1.6.2/setup.cfg +4 -0
- zolo_os-1.6.2/setup.py +194 -0
- zolo_os-1.6.2/zAgents/AGENTS.md +568 -0
- zolo_os-1.6.2/zAgents/__init__.py +7 -0
- zolo_os-1.6.2/zAgents/agents_cli.py +282 -0
- zolo_os-1.6.2/zAgents/builder.py +213 -0
- zolo_os-1.6.2/zAgents/generated/AGENTS.md +2024 -0
- zolo_os-1.6.2/zAgents/generated/CLAUDE.md +52 -0
- zolo_os-1.6.2/zAgents/generated/claude/CLAUDE.md +59 -0
- zolo_os-1.6.2/zAgents/generated/claude/zolo/data.md +365 -0
- zolo_os-1.6.2/zAgents/generated/claude/zolo/raven.md +376 -0
- zolo_os-1.6.2/zAgents/generated/claude/zolo/spark.md +60 -0
- zolo_os-1.6.2/zAgents/generated/claude/zolo/ui.md +1001 -0
- zolo_os-1.6.2/zAgents/generated/claude/zolo/zspark.md +155 -0
- zolo_os-1.6.2/zAgents/generated/cursor/zolo-core.mdc +5 -0
- zolo_os-1.6.2/zAgents/generated/cursor/zolo-data.mdc +370 -0
- zolo_os-1.6.2/zAgents/generated/cursor/zolo-raven.mdc +381 -0
- zolo_os-1.6.2/zAgents/generated/cursor/zolo-spark.mdc +65 -0
- zolo_os-1.6.2/zAgents/generated/cursor/zolo-ui.mdc +1006 -0
- zolo_os-1.6.2/zAgents/generated/cursor/zolo-workflow.mdc +56 -0
- zolo_os-1.6.2/zAgents/generated/cursor/zolo-zspark.mdc +160 -0
- zolo_os-1.6.2/zAgents/src/00_workflow.md +52 -0
- zolo_os-1.6.2/zAgents/src/01_core.md +3 -0
- zolo_os-1.6.2/zAgents/src/02_ui.md +1003 -0
- zolo_os-1.6.2/zAgents/src/03_data.md +367 -0
- zolo_os-1.6.2/zAgents/src/04_raven.md +378 -0
- zolo_os-1.6.2/zAgents/src/05_zspark.md +157 -0
- zolo_os-1.6.2/zAgents/src/06_spark.md +62 -0
- zolo_os-1.6.2/zRaven/__init__.py +6 -0
- zolo_os-1.6.2/zRaven/zraven.py +1149 -0
- zolo_os-1.6.2/zguard/__init__.py +2 -0
- zolo_os-1.6.2/zguard/bifrost/__init__.py +37 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/__init__.py +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/auth.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/bifrost_constants.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/bridge_connection.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/cache.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/connection.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/events/__init__.py +37 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/events/base_event_handler.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/events/bridge_event_cache.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/events/bridge_event_client.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/events/bridge_event_discovery.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/events/bridge_event_dispatch.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/events/bridge_event_menu.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/events/bridge_event_table.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/message_handler.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/messages/__init__.py +23 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/messages/message_utils.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/messages/message_walker.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/messages/message_walker_support.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/monitoring.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/nav_html_builder.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/orchestrator.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/render/__init__.py +1 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/render/render_opcodes.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/render/zRender.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/server/__init__.py +21 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/server/broadcaster.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/server/client_handler.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/server/lifecycle.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/server/message_router.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/bifrost/zBifrost_modules/ws_server.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/__init__.py +27 -0
- zolo_os-1.6.2/zguard/wizard/zWizard.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/__init__.py +161 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/execution/__init__.py +17 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/execution/wizard_execution_base.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/execution/wizard_execution_chunked.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/execution/wizard_execution_sequential.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/managers/__init__.py +26 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/managers/wizard_conditions.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/managers/wizard_data.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/managers/wizard_dispatch.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/managers/wizard_filters.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/managers/wizard_navigation.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/wizard_constants.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/wizard_examples.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/wizard_exceptions.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/wizard_hat.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/wizard_interpolation.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/wizard_rbac.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zguard/wizard/zWizard_modules/wizard_transactions.cpython-312-darwin.so +0 -0
- zolo_os-1.6.2/zolo_os.egg-info/SOURCES.txt +760 -0
|
@@ -0,0 +1,1032 @@
|
|
|
1
|
+
**[← Back to e_zDisplay Guide](zDisplay_GUIDE.md) | [Home](../README.md) | [Next: g_zDispatch Guide →](zDispatch_GUIDE.md)**
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# f_zAuth
|
|
6
|
+
|
|
7
|
+
**f_zAuth** is the **third Layer 2 subsystem** in **zOS** (Layer 2: Handling) - providing authentication and authorization.
|
|
8
|
+
> Located at: `zOS/core/L2_Handling/f_zAuth/`
|
|
9
|
+
> See [**zArchitecture**](../README.md#the-zarchitecture) for full context.
|
|
10
|
+
|
|
11
|
+
It provides a **three-tier authentication model** with **bcrypt password security**, **persistent sessions**, and **context-aware RBAC** (Role-Based Access Control). All **Layer 2+ subsystems** can rely on **f_zAuth** for secure user management.
|
|
12
|
+
|
|
13
|
+
You get:
|
|
14
|
+
|
|
15
|
+
- **Three-tier authentication** (zSession, Application, Dual-mode)
|
|
16
|
+
- **Zero configuration** security with industry-standard bcrypt
|
|
17
|
+
- **Persistent sessions** with SQLite storage
|
|
18
|
+
- **Context-aware RBAC** with dynamic permissions
|
|
19
|
+
- **Multi-app support** (simultaneous authentication)
|
|
20
|
+
- **Remote authentication** via zComm
|
|
21
|
+
- **Declarative actions** (zLogin, zLogout)
|
|
22
|
+
|
|
23
|
+
## Architecture Overview
|
|
24
|
+
|
|
25
|
+
**f_zAuth** is composed of specialized modules organized in a layered architecture:
|
|
26
|
+
|
|
27
|
+
| Module | Purpose | Guide |
|
|
28
|
+
|--------|---------|-------|
|
|
29
|
+
| **security** | bcrypt password hashing and verification | [security_GUIDE.md](zAuth_Guides/security_GUIDE.md) |
|
|
30
|
+
| **persistence** | SQLite session storage with 7-day expiry | [persistence_GUIDE.md](zAuth_Guides/persistence_GUIDE.md) |
|
|
31
|
+
| **authentication** | Three-tier auth logic (zSession, App, Dual) | [authentication_GUIDE.md](zAuth_Guides/authentication_GUIDE.md) |
|
|
32
|
+
| **rbac** | Context-aware role and permission management | [rbac_GUIDE.md](zAuth_Guides/rbac_GUIDE.md) |
|
|
33
|
+
| **actions** | Declarative login/logout handlers | [actions_GUIDE.md](zAuth_Guides/actions_GUIDE.md) |
|
|
34
|
+
| **delegates** | Public API facade (16 methods) | [delegates_GUIDE.md](zAuth_Guides/delegates_GUIDE.md) |
|
|
35
|
+
|
|
36
|
+
This guide provides a **facade overview** of f_zAuth. For deep dives into specific modules, see the guides in `zAuth_Guides/`.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Three-Tier Authentication Model
|
|
41
|
+
|
|
42
|
+
f_zAuth implements a sophisticated three-tier authentication system that handles different authentication contexts:
|
|
43
|
+
|
|
44
|
+
### Tier 1: zSession Authentication (Internal Users)
|
|
45
|
+
|
|
46
|
+
**Purpose**: Authenticate zOS/Zolo platform users for premium features, plugins, and cloud services.
|
|
47
|
+
|
|
48
|
+
**Use Cases**:
|
|
49
|
+
- zOS developer accessing premium features
|
|
50
|
+
- Plugin authentication and licensing
|
|
51
|
+
- Cloud service integration
|
|
52
|
+
- Cross-application identity
|
|
53
|
+
|
|
54
|
+
**Session Key**: `session["zAuth"]["zSession"]`
|
|
55
|
+
|
|
56
|
+
### Tier 2: Application Authentication (External Users)
|
|
57
|
+
|
|
58
|
+
**Purpose**: Authenticate end-users of applications BUILT with zOS.
|
|
59
|
+
|
|
60
|
+
**Features**:
|
|
61
|
+
- Independent user database per application
|
|
62
|
+
- Multiple simultaneous app authentications
|
|
63
|
+
- App-specific credentials and sessions
|
|
64
|
+
- Isolated security contexts
|
|
65
|
+
|
|
66
|
+
**Session Key**: `session["zAuth"]["applications"][app_name]`
|
|
67
|
+
|
|
68
|
+
### Tier 3: Dual-Mode Authentication (Both Contexts)
|
|
69
|
+
|
|
70
|
+
**Purpose**: Both zSession AND application authenticated simultaneously.
|
|
71
|
+
|
|
72
|
+
**Example**: Store owner analyzing their store as both:
|
|
73
|
+
- zOS user (platform access)
|
|
74
|
+
- Store user (application access)
|
|
75
|
+
|
|
76
|
+
**RBAC Behavior**: Uses OR logic - either context can grant access
|
|
77
|
+
|
|
78
|
+
**Session Key**: `session["zAuth"]["dual_mode"] = True`
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Initialization
|
|
83
|
+
|
|
84
|
+
When **zOS** loads the **f_zAuth** subsystem (Layer 2: Handling), it automatically:
|
|
85
|
+
|
|
86
|
+
**Layer 1 (Foundation):**
|
|
87
|
+
1. **zConfig** - Configuration management
|
|
88
|
+
2. **zComm** - Communication infrastructure
|
|
89
|
+
3. **zLoader** - Dynamic module loading
|
|
90
|
+
|
|
91
|
+
**Layer 2 (Handling):**
|
|
92
|
+
1. **d_zParser** - Command and file parsing
|
|
93
|
+
2. **e_zDisplay** - Display and UI rendering
|
|
94
|
+
3. **f_zAuth** - Authentication subsystem:
|
|
95
|
+
- Initializes four core modules:
|
|
96
|
+
- `PasswordSecurity` - bcrypt hashing with 12 rounds
|
|
97
|
+
- `SessionPersistence` - SQLite session management
|
|
98
|
+
- `Authentication` - Three-tier auth logic
|
|
99
|
+
- `RBAC` - Context-aware access control
|
|
100
|
+
- Defers database initialization until first use (lazy loading)
|
|
101
|
+
- Displays ready message via e_zDisplay
|
|
102
|
+
- Composes public API via delegate pattern (16 methods)
|
|
103
|
+
|
|
104
|
+
No setup required. Just import and use:
|
|
105
|
+
|
|
106
|
+
```python
|
|
107
|
+
from zOS import zOS
|
|
108
|
+
|
|
109
|
+
# Initialize zOS (includes f_zAuth)
|
|
110
|
+
zos = zOS()
|
|
111
|
+
|
|
112
|
+
# f_zAuth is ready to use
|
|
113
|
+
zos.auth.login("user@zolo.com", "secure_password")
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Tutorials
|
|
119
|
+
|
|
120
|
+
**Learn by doing!**
|
|
121
|
+
|
|
122
|
+
The tutorials below are organized in a bottom-up fashion. Every tutorial has working demos you can run and modify.
|
|
123
|
+
|
|
124
|
+
**A Note on Learning zOS:**
|
|
125
|
+
Each tutorial (lvl1, lvl2, lvl3...) progressively introduces more complex features of **this subsystem**. The early tutorials start with familiar imperative patterns (think Django-style conventions) to meet you where you are as a developer.
|
|
126
|
+
|
|
127
|
+
As you progress through zOS's subsystems, you'll notice a gradual shift from imperative to declarative patterns. This intentional journey helps reshape your mental model from imperative to declarative thinking. Only when you reach **Layer 3 (Orchestration)** will you see subsystems used **fully declaratively** as intended in production.
|
|
128
|
+
|
|
129
|
+
Get the demos:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Clone only the Demos folder
|
|
133
|
+
git clone --depth 1 --filter=blob:none --sparse https://github.com/ZoloAi/zolo-zcli.git
|
|
134
|
+
cd zolo-zcli
|
|
135
|
+
git sparse-checkout set Demos
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
> All f_zAuth demos are in: `Demos/Layer_2/zAuth_Demo/`
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
# **f_zAuth - Level 1** (Basic Authentication)
|
|
143
|
+
|
|
144
|
+
## **i. Password Security**
|
|
145
|
+
|
|
146
|
+
Secure password hashing with bcrypt:
|
|
147
|
+
|
|
148
|
+
```python
|
|
149
|
+
from zOS import zOS
|
|
150
|
+
|
|
151
|
+
zos = zOS()
|
|
152
|
+
|
|
153
|
+
# Hash a password (12 rounds, ~0.3s)
|
|
154
|
+
hashed = zos.auth.hash_password("secure_password")
|
|
155
|
+
print(f"Hash: {hashed[:20]}...") # $2b$12$...
|
|
156
|
+
|
|
157
|
+
# Verify password
|
|
158
|
+
is_valid = zos.auth.verify_password("secure_password", hashed)
|
|
159
|
+
print(f"Valid: {is_valid}") # True
|
|
160
|
+
|
|
161
|
+
# Wrong password
|
|
162
|
+
is_valid = zos.auth.verify_password("wrong_password", hashed)
|
|
163
|
+
print(f"Valid: {is_valid}") # False
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**What happened?**
|
|
167
|
+
- bcrypt with 12 rounds (4,096 iterations)
|
|
168
|
+
- Random salt per hash (rainbow table resistant)
|
|
169
|
+
- Timing-safe verification (prevents timing attacks)
|
|
170
|
+
- ~0.3 seconds per operation (brute-force protection)
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## **ii. zSession Authentication (Tier 1)**
|
|
175
|
+
|
|
176
|
+
Login as a zOS/Zolo platform user:
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
from zOS import zOS
|
|
180
|
+
|
|
181
|
+
zos = zOS()
|
|
182
|
+
|
|
183
|
+
# Login (zSession context)
|
|
184
|
+
result = zos.auth.login(
|
|
185
|
+
username="user@zolo.com",
|
|
186
|
+
password="secure_password",
|
|
187
|
+
persist=True # Save session to disk
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
if result["success"]:
|
|
191
|
+
print(f"Logged in as: {result['username']}")
|
|
192
|
+
print(f"Role: {result['role']}")
|
|
193
|
+
print(f"User ID: {result['user_id']}")
|
|
194
|
+
|
|
195
|
+
# Check authentication status
|
|
196
|
+
if zos.auth.is_authenticated():
|
|
197
|
+
print("User is authenticated!")
|
|
198
|
+
|
|
199
|
+
# Get current credentials
|
|
200
|
+
creds = zos.auth.get_credentials()
|
|
201
|
+
print(f"Username: {creds['username']}")
|
|
202
|
+
print(f"API Key: {creds['api_key']}")
|
|
203
|
+
|
|
204
|
+
# Logout
|
|
205
|
+
result = zos.auth.logout()
|
|
206
|
+
print(f"Logged out: {result['success']}")
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**What happened?**
|
|
210
|
+
- Authenticated against Zolo server (or local for testing)
|
|
211
|
+
- Session saved to SQLite database (7-day expiry)
|
|
212
|
+
- Credentials stored in `session["zAuth"]["zSession"]`
|
|
213
|
+
- Active context set to "zSession"
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## **iii. Check Authentication Status**
|
|
218
|
+
|
|
219
|
+
Query current authentication state:
|
|
220
|
+
|
|
221
|
+
```python
|
|
222
|
+
from zOS import zOS
|
|
223
|
+
|
|
224
|
+
zos = zOS()
|
|
225
|
+
|
|
226
|
+
# Get comprehensive status
|
|
227
|
+
status = zos.auth.status()
|
|
228
|
+
|
|
229
|
+
print(f"Authenticated: {status['is_authenticated']}")
|
|
230
|
+
print(f"Active Context: {status['active_context']}")
|
|
231
|
+
|
|
232
|
+
if status['zsession']:
|
|
233
|
+
print(f"zSession User: {status['zsession']['username']}")
|
|
234
|
+
print(f"Role: {status['zsession']['role']}")
|
|
235
|
+
|
|
236
|
+
if status['applications']:
|
|
237
|
+
print(f"Active Apps: {list(status['applications'].keys())}")
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
# **f_zAuth - Level 2** (Multi-Tier Authentication)
|
|
243
|
+
|
|
244
|
+
## **i. Application Authentication (Tier 2)**
|
|
245
|
+
|
|
246
|
+
Authenticate external users of your zOS-built application:
|
|
247
|
+
|
|
248
|
+
```python
|
|
249
|
+
from zOS import zOS
|
|
250
|
+
|
|
251
|
+
zos = zOS()
|
|
252
|
+
|
|
253
|
+
# Authenticate app user
|
|
254
|
+
config = {
|
|
255
|
+
"auth_endpoint": "https://mystore.com/api/auth",
|
|
256
|
+
"timeout": 10
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
result = zos.auth.authenticate_app_user(
|
|
260
|
+
app_name="my_store",
|
|
261
|
+
token="user_api_token_xyz",
|
|
262
|
+
config=config
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
if result["success"]:
|
|
266
|
+
print(f"App user authenticated: {result['username']}")
|
|
267
|
+
print(f"Store: {result['app_name']}")
|
|
268
|
+
|
|
269
|
+
# Get app user info
|
|
270
|
+
app_user = zos.auth.get_app_user("my_store")
|
|
271
|
+
print(f"Store user: {app_user['username']}")
|
|
272
|
+
print(f"Role: {app_user.get('role', 'user')}")
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**What happened?**
|
|
276
|
+
- Authenticated external app user (separate from zSession)
|
|
277
|
+
- Session stored in `session["zAuth"]["applications"]["my_store"]`
|
|
278
|
+
- Multi-app support: Can authenticate multiple apps simultaneously
|
|
279
|
+
- Independent credentials per application
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## **ii. Multi-App Authentication**
|
|
284
|
+
|
|
285
|
+
Authenticate multiple applications simultaneously:
|
|
286
|
+
|
|
287
|
+
```python
|
|
288
|
+
from zOS import zOS
|
|
289
|
+
|
|
290
|
+
zos = zOS()
|
|
291
|
+
|
|
292
|
+
# Authenticate user for multiple apps
|
|
293
|
+
apps = [
|
|
294
|
+
("store_app", "token_store_xyz"),
|
|
295
|
+
("blog_app", "token_blog_abc"),
|
|
296
|
+
("forum_app", "token_forum_123")
|
|
297
|
+
]
|
|
298
|
+
|
|
299
|
+
for app_name, token in apps:
|
|
300
|
+
result = zos.auth.authenticate_app_user(
|
|
301
|
+
app_name=app_name,
|
|
302
|
+
token=token
|
|
303
|
+
)
|
|
304
|
+
print(f"{app_name}: {result['success']}")
|
|
305
|
+
|
|
306
|
+
# Get status shows all active apps
|
|
307
|
+
status = zos.auth.status()
|
|
308
|
+
print(f"Active apps: {list(status['applications'].keys())}")
|
|
309
|
+
|
|
310
|
+
# Switch active app
|
|
311
|
+
zos.auth.switch_app("blog_app")
|
|
312
|
+
active_user = zos.auth.get_active_user()
|
|
313
|
+
print(f"Active: {active_user['username']} in {active_user['app_name']}")
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## **iii. Context Management**
|
|
319
|
+
|
|
320
|
+
Switch between authentication contexts:
|
|
321
|
+
|
|
322
|
+
```python
|
|
323
|
+
from zOS import zOS
|
|
324
|
+
|
|
325
|
+
zos = zOS()
|
|
326
|
+
|
|
327
|
+
# Login as zOS user
|
|
328
|
+
zos.auth.login("dev@zolo.com", "password")
|
|
329
|
+
|
|
330
|
+
# Authenticate as app user
|
|
331
|
+
zos.auth.authenticate_app_user("my_app", "token")
|
|
332
|
+
|
|
333
|
+
# Set context to zSession
|
|
334
|
+
zos.auth.set_active_context("zSession")
|
|
335
|
+
user = zos.auth.get_active_user()
|
|
336
|
+
print(f"Active: {user['username']} (zSession)")
|
|
337
|
+
|
|
338
|
+
# Set context to application
|
|
339
|
+
zos.auth.set_active_context("application")
|
|
340
|
+
user = zos.auth.get_active_user()
|
|
341
|
+
print(f"Active: {user['username']} (my_app)")
|
|
342
|
+
|
|
343
|
+
# Set context to dual (both)
|
|
344
|
+
zos.auth.set_active_context("dual")
|
|
345
|
+
# Now RBAC checks use OR logic (either context grants access)
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
**Available Contexts**:
|
|
349
|
+
- `"zSession"` - zOS/Zolo user context (Tier 1)
|
|
350
|
+
- `"application"` - Active app user context (Tier 2)
|
|
351
|
+
- `"dual"` - Both contexts active (Tier 3)
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
# **f_zAuth - Level 3** (RBAC - Role-Based Access Control)
|
|
356
|
+
|
|
357
|
+
## **i. Role Checks**
|
|
358
|
+
|
|
359
|
+
Check if user has required role(s):
|
|
360
|
+
|
|
361
|
+
```python
|
|
362
|
+
from zOS import zOS
|
|
363
|
+
|
|
364
|
+
zos = zOS()
|
|
365
|
+
|
|
366
|
+
# Login with role
|
|
367
|
+
zos.auth.login("admin@zolo.com", "password") # Role: admin
|
|
368
|
+
|
|
369
|
+
# Check single role
|
|
370
|
+
if zos.auth.has_role("admin"):
|
|
371
|
+
print("User is admin!")
|
|
372
|
+
|
|
373
|
+
# Check multiple roles (OR logic)
|
|
374
|
+
if zos.auth.has_role(["admin", "moderator"]):
|
|
375
|
+
print("User is admin OR moderator")
|
|
376
|
+
|
|
377
|
+
# Common roles
|
|
378
|
+
roles = ["user", "admin", "moderator", "developer", "premium"]
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
**Context-Aware Behavior**:
|
|
382
|
+
- `"zSession"` context: Checks zSession role
|
|
383
|
+
- `"application"` context: Checks active app user role
|
|
384
|
+
- `"dual"` context: Checks both (OR logic - either can grant)
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## **ii. Permission Checks**
|
|
389
|
+
|
|
390
|
+
Check granular permissions:
|
|
391
|
+
|
|
392
|
+
```python
|
|
393
|
+
from zOS import zOS
|
|
394
|
+
|
|
395
|
+
zos = zOS()
|
|
396
|
+
|
|
397
|
+
# Check permission
|
|
398
|
+
if zos.auth.has_permission("data.delete"):
|
|
399
|
+
print("User can delete data")
|
|
400
|
+
|
|
401
|
+
# Grant permission (requires user_id)
|
|
402
|
+
success = zos.auth.grant_permission(
|
|
403
|
+
user_id="zU_12345",
|
|
404
|
+
permission="content.publish",
|
|
405
|
+
granted_by="admin@zolo.com"
|
|
406
|
+
)
|
|
407
|
+
|
|
408
|
+
# Revoke permission
|
|
409
|
+
success = zos.auth.revoke_permission(
|
|
410
|
+
user_id="zU_12345",
|
|
411
|
+
permission="content.publish"
|
|
412
|
+
)
|
|
413
|
+
|
|
414
|
+
# Permission naming convention
|
|
415
|
+
permissions = [
|
|
416
|
+
"data.read",
|
|
417
|
+
"data.write",
|
|
418
|
+
"data.delete",
|
|
419
|
+
"content.create",
|
|
420
|
+
"content.publish",
|
|
421
|
+
"admin.users",
|
|
422
|
+
"admin.settings"
|
|
423
|
+
]
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
**Permission Storage**:
|
|
427
|
+
- Stored in SQLite database (shared with sessions)
|
|
428
|
+
- Persistent across restarts
|
|
429
|
+
- User-specific granular control
|
|
430
|
+
- Context-aware in dual mode
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
## **iii. RBAC with Multi-App**
|
|
435
|
+
|
|
436
|
+
RBAC works across all three authentication tiers:
|
|
437
|
+
|
|
438
|
+
```python
|
|
439
|
+
from zOS import zOS
|
|
440
|
+
|
|
441
|
+
zos = zOS()
|
|
442
|
+
|
|
443
|
+
# Login as zOS user (admin)
|
|
444
|
+
zos.auth.login("admin@zolo.com", "password") # Role: admin
|
|
445
|
+
|
|
446
|
+
# Authenticate as app user (moderator)
|
|
447
|
+
zos.auth.authenticate_app_user(
|
|
448
|
+
app_name="forum",
|
|
449
|
+
token="token" # App returns role: moderator
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
# zSession context - checks zOS role
|
|
453
|
+
zos.auth.set_active_context("zSession")
|
|
454
|
+
print(zos.auth.has_role("admin")) # True (zOS role)
|
|
455
|
+
print(zos.auth.has_role("moderator")) # False
|
|
456
|
+
|
|
457
|
+
# Application context - checks app role
|
|
458
|
+
zos.auth.set_active_context("application")
|
|
459
|
+
print(zos.auth.has_role("admin")) # False
|
|
460
|
+
print(zos.auth.has_role("moderator")) # True (app role)
|
|
461
|
+
|
|
462
|
+
# Dual context - OR logic
|
|
463
|
+
zos.auth.set_active_context("dual")
|
|
464
|
+
print(zos.auth.has_role("admin")) # True (zOS grants)
|
|
465
|
+
print(zos.auth.has_role("moderator")) # True (app grants)
|
|
466
|
+
print(zos.auth.has_role(["admin", "moderator"])) # True (either)
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
---
|
|
470
|
+
|
|
471
|
+
# **f_zAuth - Level 4** (Session Persistence & Remote Auth)
|
|
472
|
+
|
|
473
|
+
## **i. Persistent Sessions**
|
|
474
|
+
|
|
475
|
+
Sessions automatically persist to disk:
|
|
476
|
+
|
|
477
|
+
```python
|
|
478
|
+
from zOS import zOS
|
|
479
|
+
|
|
480
|
+
# First run - login with persist=True
|
|
481
|
+
zos1 = zOS()
|
|
482
|
+
zos1.auth.login(
|
|
483
|
+
username="user@zolo.com",
|
|
484
|
+
password="password",
|
|
485
|
+
persist=True # Save to SQLite
|
|
486
|
+
)
|
|
487
|
+
print("Session saved to disk")
|
|
488
|
+
|
|
489
|
+
# Later run - session automatically restored
|
|
490
|
+
zos2 = zOS()
|
|
491
|
+
# Session loaded from SQLite on initialization
|
|
492
|
+
|
|
493
|
+
if zos2.auth.is_authenticated():
|
|
494
|
+
creds = zos2.auth.get_credentials()
|
|
495
|
+
print(f"Restored session: {creds['username']}")
|
|
496
|
+
print(f"API Key: {creds['api_key']}")
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
**Session Details**:
|
|
500
|
+
- Stored in SQLite database (platform-specific location)
|
|
501
|
+
- 7-day expiration (configurable)
|
|
502
|
+
- Automatic cleanup of expired sessions
|
|
503
|
+
- Only zSession context persists (apps are transient)
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
## **ii. Remote Authentication**
|
|
508
|
+
|
|
509
|
+
Authenticate against remote Zolo server:
|
|
510
|
+
|
|
511
|
+
```python
|
|
512
|
+
from zOS import zOS
|
|
513
|
+
|
|
514
|
+
zos = zOS()
|
|
515
|
+
|
|
516
|
+
# Remote auth (production)
|
|
517
|
+
result = zos.auth.login(
|
|
518
|
+
username="user@zolo.com",
|
|
519
|
+
password="password",
|
|
520
|
+
server_url="https://auth.zolo.com/api/login"
|
|
521
|
+
)
|
|
522
|
+
|
|
523
|
+
if result["success"]:
|
|
524
|
+
print(f"Authenticated remotely: {result['username']}")
|
|
525
|
+
print(f"API Key: {result['api_key']}")
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
**What happened?**
|
|
529
|
+
- zComm makes HTTPS POST request to auth server
|
|
530
|
+
- Server validates credentials and returns user data
|
|
531
|
+
- Session stored locally with bcrypt hash
|
|
532
|
+
- API key stored for subsequent requests
|
|
533
|
+
|
|
534
|
+
---
|
|
535
|
+
|
|
536
|
+
## **iii. Logout Options**
|
|
537
|
+
|
|
538
|
+
Multiple logout behaviors:
|
|
539
|
+
|
|
540
|
+
```python
|
|
541
|
+
from zOS import zOS
|
|
542
|
+
|
|
543
|
+
zos = zOS()
|
|
544
|
+
zos.auth.login("user@zolo.com", "password", persist=True)
|
|
545
|
+
|
|
546
|
+
# Logout zSession only (default)
|
|
547
|
+
result = zos.auth.logout()
|
|
548
|
+
# - Clears session["zAuth"]["zSession"]
|
|
549
|
+
# - App sessions remain active
|
|
550
|
+
|
|
551
|
+
# Logout specific app
|
|
552
|
+
result = zos.auth.logout(
|
|
553
|
+
context="application",
|
|
554
|
+
app_name="my_store"
|
|
555
|
+
)
|
|
556
|
+
# - Clears session["zAuth"]["applications"]["my_store"]
|
|
557
|
+
|
|
558
|
+
# Logout all contexts
|
|
559
|
+
result = zos.auth.logout(context="all")
|
|
560
|
+
# - Clears zSession and all app sessions
|
|
561
|
+
|
|
562
|
+
# Delete persistent session from disk
|
|
563
|
+
result = zos.auth.logout(delete_persistent=True)
|
|
564
|
+
# - Clears in-memory session
|
|
565
|
+
# - Deletes SQLite session record
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
---
|
|
569
|
+
|
|
570
|
+
# **f_zAuth - Level 5** (Declarative Actions & Integration)
|
|
571
|
+
|
|
572
|
+
## **i. Built-in Actions**
|
|
573
|
+
|
|
574
|
+
f_zAuth provides declarative login/logout actions:
|
|
575
|
+
|
|
576
|
+
```python
|
|
577
|
+
from zOS import zOS
|
|
578
|
+
|
|
579
|
+
zos = zOS()
|
|
580
|
+
|
|
581
|
+
# These actions are automatically registered
|
|
582
|
+
# Use with zDispatch, zBifrost, or zVaF
|
|
583
|
+
|
|
584
|
+
# Action: zLogin
|
|
585
|
+
action_zlogin = {
|
|
586
|
+
"action": "zLogin",
|
|
587
|
+
"username": "user@zolo.com",
|
|
588
|
+
"password": "password",
|
|
589
|
+
"persist": True,
|
|
590
|
+
"server_url": None # Optional
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
# Action: zLogout
|
|
594
|
+
action_zlogout = {
|
|
595
|
+
"action": "zLogout",
|
|
596
|
+
"context": "zSession", # or "application", "all"
|
|
597
|
+
"app_name": None, # Required if context="application"
|
|
598
|
+
"delete_persistent": False
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
# Dispatch actions
|
|
602
|
+
zos.dispatch.execute(action_zlogin)
|
|
603
|
+
zos.dispatch.execute(action_zlogout)
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
**Integration Points**:
|
|
607
|
+
- **zDispatch**: Execute auth actions from action queues
|
|
608
|
+
- **zBifrost**: Trigger login/logout from UI interactions
|
|
609
|
+
- **zVaF**: Menu items with `require_auth`, `require_role`, `require_permission`
|
|
610
|
+
|
|
611
|
+
---
|
|
612
|
+
|
|
613
|
+
## **ii. zVaF Menu Protection**
|
|
614
|
+
|
|
615
|
+
Protect menu items with auth directives:
|
|
616
|
+
|
|
617
|
+
```yaml
|
|
618
|
+
# menu_config.yaml
|
|
619
|
+
menu:
|
|
620
|
+
- id: home
|
|
621
|
+
label: Home
|
|
622
|
+
# Public - no auth required
|
|
623
|
+
|
|
624
|
+
- id: dashboard
|
|
625
|
+
label: Dashboard
|
|
626
|
+
require_auth: true
|
|
627
|
+
# Requires any authentication
|
|
628
|
+
|
|
629
|
+
- id: admin_panel
|
|
630
|
+
label: Admin Panel
|
|
631
|
+
require_role: admin
|
|
632
|
+
# Requires admin role
|
|
633
|
+
|
|
634
|
+
- id: delete_data
|
|
635
|
+
label: Delete Data
|
|
636
|
+
require_permission: data.delete
|
|
637
|
+
# Requires specific permission
|
|
638
|
+
|
|
639
|
+
- id: premium_features
|
|
640
|
+
label: Premium Features
|
|
641
|
+
require_role: [premium, admin]
|
|
642
|
+
# Requires premium OR admin role
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
zWizard automatically checks auth requirements and hides/disables protected items.
|
|
646
|
+
|
|
647
|
+
---
|
|
648
|
+
|
|
649
|
+
## **iii. Integration with zOS Subsystems**
|
|
650
|
+
|
|
651
|
+
f_zAuth integrates seamlessly with other zOS subsystems:
|
|
652
|
+
|
|
653
|
+
```python
|
|
654
|
+
from zOS import zOS
|
|
655
|
+
|
|
656
|
+
zos = zOS()
|
|
657
|
+
|
|
658
|
+
# Layer 1 Dependencies:
|
|
659
|
+
# - zConfig: Session structure and constants
|
|
660
|
+
# - SESSION_KEY_ZAUTH = "zAuth"
|
|
661
|
+
# - ZAUTH_KEY_ZSESSION = "zSession"
|
|
662
|
+
# - ZAUTH_KEY_APPLICATIONS = "applications"
|
|
663
|
+
# - All auth data stored in session["zAuth"]
|
|
664
|
+
#
|
|
665
|
+
# - zComm: Remote authentication
|
|
666
|
+
# - Uses zComm.http_post() for HTTPS API calls
|
|
667
|
+
# zos.auth.login("user", "pass", server_url="https://...")
|
|
668
|
+
|
|
669
|
+
# Layer 2 Sibling Dependencies:
|
|
670
|
+
# - e_zDisplay: All UI feedback
|
|
671
|
+
zos.auth.login("user", "pass")
|
|
672
|
+
# -> e_zDisplay.success("Logged in successfully")
|
|
673
|
+
# -> e_zDisplay.error("Invalid credentials")
|
|
674
|
+
|
|
675
|
+
# Layer 3+ Dependencies:
|
|
676
|
+
# - zData: Persistent storage
|
|
677
|
+
# - Sessions and permissions stored in SQLite via zData
|
|
678
|
+
# - Declarative operations (no raw SQL)
|
|
679
|
+
#
|
|
680
|
+
# - zWizard: Access control
|
|
681
|
+
# - Menu items protected by has_role() and has_permission()
|
|
682
|
+
# - Automatic integration via require_auth/role/permission
|
|
683
|
+
#
|
|
684
|
+
# - zBifrost: Web UI authentication
|
|
685
|
+
# - Login forms trigger zLogin action
|
|
686
|
+
# - Protected routes check is_authenticated()
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
---
|
|
690
|
+
|
|
691
|
+
## API Reference
|
|
692
|
+
|
|
693
|
+
### Password Security (2 methods)
|
|
694
|
+
|
|
695
|
+
```python
|
|
696
|
+
# Hash password
|
|
697
|
+
hashed: str = zos.auth.hash_password(plain_password: str)
|
|
698
|
+
|
|
699
|
+
# Verify password
|
|
700
|
+
is_valid: bool = zos.auth.verify_password(
|
|
701
|
+
plain_password: str,
|
|
702
|
+
hashed_password: str
|
|
703
|
+
)
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
### zSession Authentication (5 methods)
|
|
707
|
+
|
|
708
|
+
```python
|
|
709
|
+
# Login
|
|
710
|
+
result: Dict = zos.auth.login(
|
|
711
|
+
username: str,
|
|
712
|
+
password: str,
|
|
713
|
+
server_url: Optional[str] = None,
|
|
714
|
+
persist: bool = True
|
|
715
|
+
)
|
|
716
|
+
|
|
717
|
+
# Logout
|
|
718
|
+
result: Dict = zos.auth.logout(
|
|
719
|
+
context: str = "zSession",
|
|
720
|
+
app_name: Optional[str] = None,
|
|
721
|
+
delete_persistent: bool = False
|
|
722
|
+
)
|
|
723
|
+
|
|
724
|
+
# Get status
|
|
725
|
+
status: Dict = zos.auth.status()
|
|
726
|
+
|
|
727
|
+
# Check authentication
|
|
728
|
+
is_authed: bool = zos.auth.is_authenticated()
|
|
729
|
+
|
|
730
|
+
# Get credentials
|
|
731
|
+
creds: Optional[Dict] = zos.auth.get_credentials()
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
### Application Authentication (3 methods)
|
|
735
|
+
|
|
736
|
+
```python
|
|
737
|
+
# Authenticate app user
|
|
738
|
+
result: Dict = zos.auth.authenticate_app_user(
|
|
739
|
+
app_name: str,
|
|
740
|
+
token: str,
|
|
741
|
+
config: Optional[Dict] = None
|
|
742
|
+
)
|
|
743
|
+
|
|
744
|
+
# Switch active app
|
|
745
|
+
success: bool = zos.auth.switch_app(app_name: str)
|
|
746
|
+
|
|
747
|
+
# Get app user
|
|
748
|
+
user: Optional[Dict] = zos.auth.get_app_user(app_name: str)
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
### Context Management (2 methods)
|
|
752
|
+
|
|
753
|
+
```python
|
|
754
|
+
# Set active context
|
|
755
|
+
success: bool = zos.auth.set_active_context(
|
|
756
|
+
context: str # "zSession", "application", "dual"
|
|
757
|
+
)
|
|
758
|
+
|
|
759
|
+
# Get active user
|
|
760
|
+
user: Optional[Dict] = zos.auth.get_active_user()
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
### RBAC (4 methods)
|
|
764
|
+
|
|
765
|
+
```python
|
|
766
|
+
# Check role
|
|
767
|
+
has_role: bool = zos.auth.has_role(
|
|
768
|
+
required_role: Union[str, List[str]]
|
|
769
|
+
)
|
|
770
|
+
|
|
771
|
+
# Check permission
|
|
772
|
+
has_perm: bool = zos.auth.has_permission(
|
|
773
|
+
required_permission: str
|
|
774
|
+
)
|
|
775
|
+
|
|
776
|
+
# Grant permission
|
|
777
|
+
success: bool = zos.auth.grant_permission(
|
|
778
|
+
user_id: str,
|
|
779
|
+
permission: str,
|
|
780
|
+
granted_by: str
|
|
781
|
+
)
|
|
782
|
+
|
|
783
|
+
# Revoke permission
|
|
784
|
+
success: bool = zos.auth.revoke_permission(
|
|
785
|
+
user_id: str,
|
|
786
|
+
permission: str
|
|
787
|
+
)
|
|
788
|
+
```
|
|
789
|
+
|
|
790
|
+
---
|
|
791
|
+
|
|
792
|
+
## Module Guides
|
|
793
|
+
|
|
794
|
+
Deep dive into specific modules:
|
|
795
|
+
|
|
796
|
+
- **[security_GUIDE.md](zAuth_Guides/security_GUIDE.md)** - bcrypt password hashing, timing-safe verification, 72-byte limit handling
|
|
797
|
+
- **[persistence_GUIDE.md](zAuth_Guides/persistence_GUIDE.md)** - SQLite sessions, 7-day expiry, automatic cleanup, token generation
|
|
798
|
+
- **[authentication_GUIDE.md](zAuth_Guides/authentication_GUIDE.md)** - Three-tier model, multi-app support, remote auth, context switching
|
|
799
|
+
- **[rbac_GUIDE.md](zAuth_Guides/rbac_GUIDE.md)** - Context-aware roles, permissions, dual-mode OR logic, database management
|
|
800
|
+
- **[actions_GUIDE.md](zAuth_Guides/actions_GUIDE.md)** - Declarative zLogin/zLogout handlers for zDispatch integration
|
|
801
|
+
- **[delegates_GUIDE.md](zAuth_Guides/delegates_GUIDE.md)** - Public API composition, delegation pattern, facade architecture
|
|
802
|
+
|
|
803
|
+
---
|
|
804
|
+
|
|
805
|
+
## Best Practices
|
|
806
|
+
|
|
807
|
+
### Security
|
|
808
|
+
|
|
809
|
+
1. **Always use bcrypt for passwords**:
|
|
810
|
+
```python
|
|
811
|
+
# Good
|
|
812
|
+
hashed = zos.auth.hash_password(user_input)
|
|
813
|
+
|
|
814
|
+
# Bad - never store plaintext
|
|
815
|
+
# password = user_input # DON'T DO THIS
|
|
816
|
+
```
|
|
817
|
+
|
|
818
|
+
2. **Never log sensitive data**:
|
|
819
|
+
```python
|
|
820
|
+
# Good
|
|
821
|
+
logger.info(f"Login attempt for user: {username}")
|
|
822
|
+
|
|
823
|
+
# Bad
|
|
824
|
+
# logger.info(f"Login: {username} / {password}") # DON'T
|
|
825
|
+
```
|
|
826
|
+
|
|
827
|
+
3. **Use persistent sessions for better UX**:
|
|
828
|
+
```python
|
|
829
|
+
# Recommended
|
|
830
|
+
zos.auth.login(username, password, persist=True)
|
|
831
|
+
```
|
|
832
|
+
|
|
833
|
+
### Multi-Tier Authentication
|
|
834
|
+
|
|
835
|
+
1. **Use appropriate context for checks**:
|
|
836
|
+
```python
|
|
837
|
+
# Check zOS user role
|
|
838
|
+
zos.auth.set_active_context("zSession")
|
|
839
|
+
if zos.auth.has_role("admin"):
|
|
840
|
+
# zOS admin actions
|
|
841
|
+
|
|
842
|
+
# Check app user role
|
|
843
|
+
zos.auth.set_active_context("application")
|
|
844
|
+
if zos.auth.has_role("moderator"):
|
|
845
|
+
# App-specific actions
|
|
846
|
+
```
|
|
847
|
+
|
|
848
|
+
2. **Use dual mode when both contexts matter**:
|
|
849
|
+
```python
|
|
850
|
+
# Store owner analyzing their store
|
|
851
|
+
zos.auth.set_active_context("dual")
|
|
852
|
+
# Either zOS admin OR store owner can access
|
|
853
|
+
```
|
|
854
|
+
|
|
855
|
+
3. **Clean up on logout**:
|
|
856
|
+
```python
|
|
857
|
+
# Full cleanup
|
|
858
|
+
zos.auth.logout(context="all", delete_persistent=True)
|
|
859
|
+
```
|
|
860
|
+
|
|
861
|
+
### RBAC
|
|
862
|
+
|
|
863
|
+
1. **Use permissions for granular control**:
|
|
864
|
+
```python
|
|
865
|
+
# Better than role checks for specific actions
|
|
866
|
+
if zos.auth.has_permission("data.delete"):
|
|
867
|
+
delete_data()
|
|
868
|
+
```
|
|
869
|
+
|
|
870
|
+
2. **Use consistent permission naming**:
|
|
871
|
+
```python
|
|
872
|
+
# Convention: resource.action
|
|
873
|
+
permissions = [
|
|
874
|
+
"data.read",
|
|
875
|
+
"data.write",
|
|
876
|
+
"content.publish",
|
|
877
|
+
"admin.users"
|
|
878
|
+
]
|
|
879
|
+
```
|
|
880
|
+
|
|
881
|
+
3. **Grant permissions explicitly**:
|
|
882
|
+
```python
|
|
883
|
+
# Track who granted permissions
|
|
884
|
+
zos.auth.grant_permission(
|
|
885
|
+
user_id="zU_123",
|
|
886
|
+
permission="content.publish",
|
|
887
|
+
granted_by=admin_username
|
|
888
|
+
)
|
|
889
|
+
```
|
|
890
|
+
|
|
891
|
+
---
|
|
892
|
+
|
|
893
|
+
## Thread Safety
|
|
894
|
+
|
|
895
|
+
**f_zAuth is NOT thread-safe by design**.
|
|
896
|
+
|
|
897
|
+
Each thread should use its own zOS instance:
|
|
898
|
+
|
|
899
|
+
```python
|
|
900
|
+
import threading
|
|
901
|
+
from zOS import zOS
|
|
902
|
+
|
|
903
|
+
def thread_task():
|
|
904
|
+
# Create zOS instance per thread
|
|
905
|
+
zos = zOS()
|
|
906
|
+
zos.auth.login("user", "pass")
|
|
907
|
+
# Thread-safe within this instance
|
|
908
|
+
|
|
909
|
+
threads = [
|
|
910
|
+
threading.Thread(target=thread_task)
|
|
911
|
+
for _ in range(5)
|
|
912
|
+
]
|
|
913
|
+
|
|
914
|
+
for t in threads:
|
|
915
|
+
t.start()
|
|
916
|
+
```
|
|
917
|
+
|
|
918
|
+
**Why?** f_zAuth operates on `zos.session` dictionary, which is not thread-safe. Multi-app authentication within a SINGLE session is fully supported.
|
|
919
|
+
|
|
920
|
+
---
|
|
921
|
+
|
|
922
|
+
## Advanced Topics
|
|
923
|
+
|
|
924
|
+
### Custom Session Duration
|
|
925
|
+
|
|
926
|
+
```python
|
|
927
|
+
# Change session expiration (default: 7 days)
|
|
928
|
+
zos.auth.session_persistence.session_duration_days = 30
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
### Manual Session Management
|
|
932
|
+
|
|
933
|
+
```python
|
|
934
|
+
# Load session manually
|
|
935
|
+
zos.auth.session_persistence.load_session()
|
|
936
|
+
|
|
937
|
+
# Save session manually
|
|
938
|
+
session_id = zos.auth.session_persistence.save_session(
|
|
939
|
+
username="user",
|
|
940
|
+
password_hash=hashed,
|
|
941
|
+
user_id="zU_123",
|
|
942
|
+
role="admin"
|
|
943
|
+
)
|
|
944
|
+
|
|
945
|
+
# Cleanup expired sessions
|
|
946
|
+
deleted = zos.auth.session_persistence.cleanup_expired()
|
|
947
|
+
print(f"Cleaned up {deleted} sessions")
|
|
948
|
+
```
|
|
949
|
+
|
|
950
|
+
### Database Access
|
|
951
|
+
|
|
952
|
+
```python
|
|
953
|
+
# Access auth database directly (advanced)
|
|
954
|
+
zos.auth.session_persistence.ensure_sessions_db()
|
|
955
|
+
|
|
956
|
+
# Query via zData
|
|
957
|
+
results = zos.data.select(
|
|
958
|
+
db_label="auth",
|
|
959
|
+
table="sessions",
|
|
960
|
+
where={"username": "user@zolo.com"}
|
|
961
|
+
)
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
---
|
|
965
|
+
|
|
966
|
+
## Troubleshooting
|
|
967
|
+
|
|
968
|
+
### Common Issues
|
|
969
|
+
|
|
970
|
+
**1. Login fails with "Invalid credentials"**
|
|
971
|
+
```python
|
|
972
|
+
# Check username/password
|
|
973
|
+
# Check server_url if using remote auth
|
|
974
|
+
# Check network connectivity (zComm)
|
|
975
|
+
result = zos.auth.login(username, password)
|
|
976
|
+
print(result) # Contains error details
|
|
977
|
+
```
|
|
978
|
+
|
|
979
|
+
**2. Session not persisting across restarts**
|
|
980
|
+
```python
|
|
981
|
+
# Ensure persist=True
|
|
982
|
+
zos.auth.login(username, password, persist=True)
|
|
983
|
+
|
|
984
|
+
# Check database initialization
|
|
985
|
+
zos.auth.session_persistence.ensure_sessions_db()
|
|
986
|
+
```
|
|
987
|
+
|
|
988
|
+
**3. RBAC checks failing in dual mode**
|
|
989
|
+
```python
|
|
990
|
+
# Verify active_context
|
|
991
|
+
status = zos.auth.status()
|
|
992
|
+
print(f"Context: {status['active_context']}")
|
|
993
|
+
|
|
994
|
+
# Ensure both contexts authenticated
|
|
995
|
+
print(f"zSession: {status['zsession']}")
|
|
996
|
+
print(f"Apps: {status['applications']}")
|
|
997
|
+
```
|
|
998
|
+
|
|
999
|
+
**4. Permissions not working**
|
|
1000
|
+
```python
|
|
1001
|
+
# Ensure permissions database initialized
|
|
1002
|
+
zos.auth.rbac.ensure_permissions_db()
|
|
1003
|
+
|
|
1004
|
+
# Check permission grants
|
|
1005
|
+
# (Query directly via zData)
|
|
1006
|
+
```
|
|
1007
|
+
|
|
1008
|
+
---
|
|
1009
|
+
|
|
1010
|
+
## Performance Considerations
|
|
1011
|
+
|
|
1012
|
+
### bcrypt Hash Time
|
|
1013
|
+
|
|
1014
|
+
- **Hash/verify**: ~0.3s per operation (12 rounds)
|
|
1015
|
+
- **By design**: Protects against brute-force attacks
|
|
1016
|
+
- **Recommendation**: Cache authentication results, don't hash repeatedly
|
|
1017
|
+
|
|
1018
|
+
### Session Persistence
|
|
1019
|
+
|
|
1020
|
+
- **SQLite operations**: <10ms for read/write
|
|
1021
|
+
- **Session restore**: <50ms on startup
|
|
1022
|
+
- **Cleanup**: <100ms for typical databases
|
|
1023
|
+
|
|
1024
|
+
### RBAC Checks
|
|
1025
|
+
|
|
1026
|
+
- **In-memory**: <1ms for role checks
|
|
1027
|
+
- **Database**: <10ms for permission checks
|
|
1028
|
+
- **Recommendation**: Cache permission checks if checking frequently
|
|
1029
|
+
|
|
1030
|
+
---
|
|
1031
|
+
|
|
1032
|
+
**[← Back to e_zDisplay Guide](zDisplay_GUIDE.md) | [Home](../README.md) | [Next: g_zDispatch Guide →](zDispatch_GUIDE.md)**
|