velxio/backend/app/utils/slug.py

18 lines
484 B
Python

import re
RESERVED_USERNAMES = {"login", "register", "api", "admin", "examples", "logout", "me", "google"}
def slugify(text: str) -> str:
text = text.lower().strip()
text = re.sub(r"[^a-z0-9\s-]", "", text)
text = re.sub(r"[\s_]+", "-", text)
text = re.sub(r"-+", "-", text)
return text.strip("-")
def is_valid_username(name: str) -> bool:
if name.lower() in RESERVED_USERNAMES:
return False
return bool(re.match(r"^[a-z0-9_-]{3,30}$", name))