Spaces:
Runtime error
Runtime error
| """ | |
| Demo authentication module for SmartTrip AI. | |
| NOTE: This is intentionally simple for demo purposes. | |
| In production, replace with a proper auth system using hashed passwords | |
| stored in a database (e.g., bcrypt + PostgreSQL/Supabase). | |
| """ | |
| from typing import Optional, Dict, List | |
| # --------------------------------------------------------------------------- | |
| # Hardcoded demo credentials (shown on the UI as well) | |
| # --------------------------------------------------------------------------- | |
| DEMO_USERS: Dict[str, Dict] = { | |
| "user1": { | |
| "password": "user123", | |
| "role": "user", | |
| "display_name": "User One", | |
| }, | |
| "user2": { | |
| "password": "user123", | |
| "role": "user", | |
| "display_name": "User Two", | |
| }, | |
| "user3": { | |
| "password": "user123", | |
| "role": "user", | |
| "display_name": "User Three", | |
| }, | |
| "admin": { | |
| "password": "admin123", | |
| "role": "admin", | |
| "display_name": "Administrator", | |
| }, | |
| } | |
| def authenticate(username: str, password: str) -> Optional[Dict]: | |
| """ | |
| Verify credentials and return user data dict on success, None on failure. | |
| """ | |
| user = DEMO_USERS.get(username.strip()) | |
| if user and user["password"] == password: | |
| return { | |
| "username": username.strip(), | |
| "role": user["role"], | |
| "display_name": user["display_name"], | |
| } | |
| return None | |
| def get_all_users() -> List[str]: | |
| """Return list of all non-admin usernames.""" | |
| return [k for k, v in DEMO_USERS.items() if v["role"] == "user"] | |
| def is_admin(role: str) -> bool: | |
| return role == "admin" | |
| def get_demo_credentials_md() -> str: | |
| """Return a markdown table of demo credentials for display in the UI.""" | |
| return """ | |
| **👤 Regular Users** | |
| | Username | Password | | |
| |:---------|:---------| | |
| | user1 | user123 | | |
| | user2 | user123 | | |
| | user3 | user123 | | |
| **🛡️ Admin** | |
| | Username | Password | | |
| |:---------|:----------| | |
| | admin | admin123 | | |
| """ | |