feat: Implement warehouse module roles with auto-schema repair and remove module access section
- Add SchemaVerifier class for automatic database schema verification and repair - Implement warehouse_manager (Level 75) and warehouse_worker (Level 35) roles - Add zone-based access control for warehouse workers - Implement worker-manager binding system with zone filtering - Add comprehensive database auto-repair on Docker initialization - Remove Module Access section from user form (role-based access only) - Add autocomplete attributes to password fields for better UX - Include detailed documentation for warehouse implementation - Update initialize_db.py with schema verification as Step 0
This commit is contained in:
24
init_db.py
24
init_db.py
@@ -152,6 +152,24 @@ def create_tables():
|
||||
""")
|
||||
logger.info("Table 'user_permissions' created or already exists")
|
||||
|
||||
# Worker-Manager bindings (for warehouse module hierarchy)
|
||||
cursor.execute("""
|
||||
CREATE TABLE IF NOT EXISTS worker_manager_bindings (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
manager_id INT NOT NULL,
|
||||
worker_id INT NOT NULL,
|
||||
warehouse_zone VARCHAR(100),
|
||||
is_active TINYINT(1) DEFAULT 1,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY unique_binding (manager_id, worker_id),
|
||||
FOREIGN KEY (manager_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (worker_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
CHECK (manager_id != worker_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
""")
|
||||
logger.info("Table 'worker_manager_bindings' created or already exists")
|
||||
|
||||
conn.commit()
|
||||
cursor.close()
|
||||
conn.close()
|
||||
@@ -177,8 +195,10 @@ def insert_default_user():
|
||||
roles = [
|
||||
('superadmin', 'Super Administrator - Full system access', 100),
|
||||
('admin', 'Administrator - Administrative access', 90),
|
||||
('manager', 'Manager - Full access to assigned modules', 70),
|
||||
('worker', 'Worker - Limited access', 50),
|
||||
('manager', 'Manager - Quality - Full access to assigned modules', 70),
|
||||
('warehouse_manager', 'Manager - Warehouse - Full warehouse module access', 75),
|
||||
('worker', 'Worker - Quality - Limited access', 50),
|
||||
('warehouse_worker', 'Worker - Warehouse - Input-only warehouse access', 35),
|
||||
]
|
||||
|
||||
for role_name, role_desc, role_level in roles:
|
||||
|
||||
Reference in New Issue
Block a user