Skip to main content
Glama

MCP Code Expert System

by tomsiwik
user_management.py4.9 kB
import datetime # Global variables users = [] current_id = 0 logged_in = False current_user = None # Create a user def create_user(u_name, u_pass, u_email, u_role, u_active): # Validate if u_name == "" or u_pass == "" or u_email == "": print("Error: Missing required fields") return False # Create user object with incremented ID global current_id current_id = current_id + 1 tmpuser = { "id": current_id, "username": u_name, "password": u_pass, # Should encrypt passwords! "email": u_email, "role": u_role, "active": u_active, "created_at": datetime.datetime.now(), "login_attempts": 0 } # Add to users array users.append(tmpuser) print(f"User created: {u_name}") return True # Find a user by username def find_user_by_username(username): for i in range(len(users)): if users[i]["username"] == username: return users[i] return None # Find a user by email def find_user_by_email(email): for i in range(len(users)): if users[i]["email"] == email: return users[i] return None # Find a user by ID def find_user_by_id(id): for i in range(len(users)): if users[i]["id"] == id: return users[i] return None # Authenticate a user def authenticate(username, password): global logged_in, current_user user = find_user_by_username(username) if not user: print(f"User not found: {username}") return False if not user["active"]: print(f"User account is disabled: {username}") user["login_attempts"] = user["login_attempts"] + 1 return False if user["password"] == password: logged_in = True current_user = user user["login_attempts"] = 0 print(f"User authenticated: {username}") return True else: user["login_attempts"] = user["login_attempts"] + 1 print(f"Invalid password for: {username}") # Lock account after 3 failed attempts if user["login_attempts"] >= 3: user["active"] = False print(f"Account locked due to too many failed attempts: {username}") return False # Update user profile def update_profile(id, new_email, new_password): user = find_user_by_id(id) if not user: print(f"User not found: {id}") return False # Check if user is logged in if not logged_in or current_user["id"] != id: print("Unauthorized profile update attempt") return False # Update fields if new_email: user["email"] = new_email if new_password: user["password"] = new_password print(f"Profile updated for: {user['username']}") return True # Delete user - Admin only def delete_user(id): # Check if admin if not logged_in or current_user["role"] != 'admin': print("Unauthorized deletion attempt") return False # Find user index index = -1 for i in range(len(users)): if users[i]["id"] == id: index = i break if index == -1: print(f"User not found: {id}") return False # Remove user deleted_user = users.pop(index) print(f"User deleted: {id}") return True # Get all users - Admin only def get_all_users(): # Check if admin if not logged_in or current_user["role"] != 'admin': print("Unauthorized request for user list") return [] return users # Log out def logout(): global logged_in, current_user if logged_in: current_user = None logged_in = False print("User logged out") return True print("No user logged in") return False # Function to print user info def print_user_info(user): print(f"ID: {user['id']}, Username: {user['username']}, Email: {user['email']}, Role: {user['role']}, Active: {user['active']}") # Test functionality if __name__ == "__main__": create_user("admin", "admin123", "admin@example.com", "admin", True) create_user("john", "password123", "john@example.com", "user", True) create_user("jane", "secret456", "jane@example.com", "user", True) authenticate("admin", "admin123") print("\nAll users:") for user in get_all_users(): print_user_info(user) update_profile(1, "admin@newdomain.com", None) logout() authenticate("john", "wrong") # First attempt authenticate("john", "wrong") # Second attempt authenticate("john", "wrong") # Third attempt - account locks authenticate("john", "password123") # Should fail now authenticate("admin", "admin123") delete_user(3) # Delete jane print("\nRemaining users:") for user in get_all_users(): print_user_info(user)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tomsiwik/mcp-experts'

If you have feedback or need assistance with the MCP directory API, please join our Discord server