From d6a4c538ee5d01a2c0d51cd0fab17fa152dc1a98 Mon Sep 17 00:00:00 2001 From: Richard Ward Date: Tue, 30 Dec 2025 19:41:55 +0000 Subject: [PATCH] update: packages,lua,shared (5 files) --- packages/data_table/seed/scripts/export.lua | 8 ++- .../data_table/seed/scripts/filtering.lua | 8 ++- packages/shared/seed/scripts/permissions.lua | 4 ++ .../scripts/permissions/database_toggle.lua | 55 +++++++++++++++++++ .../shared/seed/scripts/permissions/init.lua | 55 +++++++++++++++++++ 5 files changed, 124 insertions(+), 6 deletions(-) create mode 100644 packages/shared/seed/scripts/permissions.lua create mode 100644 packages/shared/seed/scripts/permissions/database_toggle.lua create mode 100644 packages/shared/seed/scripts/permissions/init.lua diff --git a/packages/data_table/seed/scripts/export.lua b/packages/data_table/seed/scripts/export.lua index 45c88bb87..140da98bf 100644 --- a/packages/data_table/seed/scripts/export.lua +++ b/packages/data_table/seed/scripts/export.lua @@ -1,5 +1,7 @@ --- Export utilities for data tables --- DEPRECATED: This file redirects to export/ directory --- Functions are now split into single-function files +--- Export utilities for data tables +--- DEPRECATED: This file redirects to export/ directory +--- Functions are now split into single-function files +---@module export +---@deprecated Use export.init instead return require("export.init") diff --git a/packages/data_table/seed/scripts/filtering.lua b/packages/data_table/seed/scripts/filtering.lua index 9cca0e4d1..097809a6f 100644 --- a/packages/data_table/seed/scripts/filtering.lua +++ b/packages/data_table/seed/scripts/filtering.lua @@ -1,5 +1,7 @@ --- Filtering utilities for data tables --- DEPRECATED: This file redirects to filtering/ directory --- Functions are now split into single-function files +--- Filtering utilities for data tables +--- DEPRECATED: This file redirects to filtering/ directory +--- Functions are now split into single-function files +---@module filtering +---@deprecated Use filtering.init instead return require("filtering.init") diff --git a/packages/shared/seed/scripts/permissions.lua b/packages/shared/seed/scripts/permissions.lua new file mode 100644 index 000000000..41e6f274c --- /dev/null +++ b/packages/shared/seed/scripts/permissions.lua @@ -0,0 +1,4 @@ +-- Permission system entry point +-- Redirects to permissions/ directory + +return require("permissions.init") diff --git a/packages/shared/seed/scripts/permissions/database_toggle.lua b/packages/shared/seed/scripts/permissions/database_toggle.lua new file mode 100644 index 000000000..5d031171e --- /dev/null +++ b/packages/shared/seed/scripts/permissions/database_toggle.lua @@ -0,0 +1,55 @@ +-- Database toggle control +-- Functions for managing database availability state + +---@class DatabaseToggle +local M = {} + +-- Internal database state +local databaseEnabled = true + +---Initialize database state +---@param enabled? boolean Initial database state (default: true) +function M.initialize_database(enabled) + databaseEnabled = enabled ~= false +end + +---Enable database access +function M.enable_database() + databaseEnabled = true +end + +---Disable database access +function M.disable_database() + databaseEnabled = false +end + +---Check if database is enabled +---@return boolean enabled Whether database is enabled +function M.is_database_enabled() + return databaseEnabled +end + +---Enforce database requirement +---@param resourceName? string Name of resource requiring database +---@return boolean success Returns true if database is enabled +function M.require_database(resourceName) + if not databaseEnabled then + local resource = resourceName or "this operation" + error(string.format( + "Database access required for %s but database is disabled", + resource + )) + end + return true +end + +---Get database status with metadata +---@return table status Database status information +function M.get_database_status() + return { + enabled = databaseEnabled, + message = databaseEnabled and "Database is enabled" or "Database is disabled" + } +end + +return M diff --git a/packages/shared/seed/scripts/permissions/init.lua b/packages/shared/seed/scripts/permissions/init.lua new file mode 100644 index 000000000..01c652277 --- /dev/null +++ b/packages/shared/seed/scripts/permissions/init.lua @@ -0,0 +1,55 @@ +-- Permission system module facade +-- Exports all permission functions for easy access + +---@class Permissions +local M = {} + +-- Import all permission modules +local checkAccess = require("permissions.check_access") +local enforceLevel = require("permissions.enforce_level") +local manageFlags = require("permissions.manage_flags") +local databaseToggle = require("permissions.database_toggle") + +-- Re-export access checking +M.check_access = checkAccess.check_access + +-- Re-export level enforcement +M.enforce_level = enforceLevel.enforce_level + +-- Re-export feature flag management +M.initialize_flags = manageFlags.initialize_flags +M.enable_flag = manageFlags.enable_flag +M.disable_flag = manageFlags.disable_flag +M.is_flag_enabled = manageFlags.is_flag_enabled +M.get_all_flags = manageFlags.get_all_flags +M.check_required_flags = manageFlags.check_required_flags + +-- Re-export database toggle +M.initialize_database = databaseToggle.initialize_database +M.enable_database = databaseToggle.enable_database +M.disable_database = databaseToggle.disable_database +M.is_database_enabled = databaseToggle.is_database_enabled +M.require_database = databaseToggle.require_database +M.get_database_status = databaseToggle.get_database_status + +---Check package permissions for a user +---@param userLevel PermissionLevel User's permission level +---@param packagePermissions PackagePermissions Package permission configuration +---@return PermissionCheckResult +function M.check_package_access(userLevel, packagePermissions) + local featureFlags = M.get_all_flags() + local databaseEnabled = M.is_database_enabled() + return M.check_access(userLevel, packagePermissions, featureFlags, databaseEnabled) +end + +---Check component permissions for a user +---@param userLevel PermissionLevel User's permission level +---@param componentPermissions ComponentPermission Component permission configuration +---@return PermissionCheckResult +function M.check_component_access(userLevel, componentPermissions) + local featureFlags = M.get_all_flags() + local databaseEnabled = M.is_database_enabled() + return M.check_access(userLevel, componentPermissions, featureFlags, databaseEnabled) +end + +return M