smarttrip_ai / utils /auth.py
swaraj
test_2
0fefb50
Raw
History Blame Contribute Delete
2 kB
"""
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 |
"""