"""Identity-bound sessions without IP restrictions.""" import os import secrets import time from server.users import users _sessions = {} SESSION_COOKIE = "session" SESSION_MAX_AGE = 86400 * 30 def get_credentials(): return os.getenv("USERNAME", ""), os.getenv("PASSWORD", "") def auth_enabled(): return True def verify_credentials(username, password): name, secret = get_credentials() if name and secret and secrets.compare_digest(username.encode(), name.encode()) and secrets.compare_digest(password.encode(), secret.encode()): return {"id": "admin", "username": name, "admin": True} return users.authenticate(username, password) def create_session(identity): now = time.time() for token, row in list(_sessions.items()): if row["expiry"] < now: _sessions.pop(token, None) token = secrets.token_urlsafe(32) _sessions[token] = {**identity, "expiry": now + SESSION_MAX_AGE} return token def session_identity(token): row = _sessions.get(token) if not row or row["expiry"] < time.time(): _sessions.pop(token, None) return None if not row["admin"] and row["id"] not in users.records: return None return row def validate_session(token): return session_identity(token) is not None def revoke_user(uid): for token, row in list(_sessions.items()): if row["id"] == uid: _sessions.pop(token, None) def is_authenticated(request): return session_identity(request.cookies.get(SESSION_COOKIE, "")) is not None def login_page_html(error: str = "") -> str: error_html = f'