73 lines
2.7 KiB
Python
73 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import pymysql
|
|
import json
|
|
|
|
def test_login_data():
|
|
try:
|
|
# Connect to the database
|
|
conn = pymysql.connect(
|
|
host='localhost',
|
|
database='trasabilitate',
|
|
user='trasabilitate',
|
|
password='Initial01!',
|
|
cursorclass=pymysql.cursors.DictCursor
|
|
)
|
|
|
|
with conn.cursor() as cursor:
|
|
# Simulate login for Ciprian
|
|
cursor.execute("SELECT username, password, role, modules FROM users WHERE username = 'Ciprian'")
|
|
user = cursor.fetchone()
|
|
|
|
if user:
|
|
print("Ciprian's database record:")
|
|
print(f"Username: {user['username']}")
|
|
print(f"Role: {user['role']}")
|
|
print(f"Raw modules: {user['modules']}")
|
|
|
|
# Simulate what happens in login
|
|
user_modules = []
|
|
if user['modules']:
|
|
try:
|
|
user_modules = json.loads(user['modules'])
|
|
print(f"Parsed modules: {user_modules}")
|
|
except Exception as e:
|
|
print(f"Error parsing modules: {e}")
|
|
user_modules = []
|
|
|
|
# Check if user should have quality access
|
|
has_quality = 'quality' in user_modules
|
|
print(f"Has quality module access: {has_quality}")
|
|
|
|
# Check role level
|
|
ROLES = {
|
|
'superadmin': {'level': 100},
|
|
'admin': {'level': 90},
|
|
'manager': {'level': 70},
|
|
'worker': {'level': 50}
|
|
}
|
|
|
|
user_level = ROLES.get(user['role'], {}).get('level', 0)
|
|
print(f"Role level: {user_level}")
|
|
|
|
# Test access control logic
|
|
print("\nAccess Control Test:")
|
|
print(f"Required modules: ['quality']")
|
|
print(f"User role: {user['role']}")
|
|
print(f"User modules: {user_modules}")
|
|
|
|
if user['role'] in ['superadmin', 'admin']:
|
|
print("✅ Access granted: Superadmin/Admin has access to all modules")
|
|
elif any(module in user_modules for module in ['quality']):
|
|
print("✅ Access granted: User has required quality module")
|
|
else:
|
|
print("❌ Access denied: User does not have quality module")
|
|
|
|
else:
|
|
print("User 'Ciprian' not found!")
|
|
|
|
finally:
|
|
conn.close()
|
|
|
|
if __name__ == "__main__":
|
|
test_login_data() |