55 lines
976 B
Python
55 lines
976 B
Python
from database import fetch_one
|
|
|
|
|
|
ROLE_LEVELS = {
|
|
"member": 1,
|
|
"admin": 2,
|
|
"owner": 3,
|
|
}
|
|
|
|
|
|
def get_role(room_id: int, user_id: int):
|
|
member = fetch_one(
|
|
"""
|
|
SELECT role
|
|
FROM room_members
|
|
WHERE room_id = ?
|
|
AND user_id = ?
|
|
""",
|
|
(room_id, user_id)
|
|
)
|
|
|
|
if member is None:
|
|
return None
|
|
|
|
return member["role"]
|
|
|
|
|
|
def has_role(
|
|
room_id: int,
|
|
user_id: int,
|
|
required_role: str
|
|
) -> bool:
|
|
role = get_role(room_id, user_id)
|
|
|
|
if role is None:
|
|
return False
|
|
|
|
return ROLE_LEVELS.get(role, 0) >= ROLE_LEVELS[required_role]
|
|
|
|
|
|
def whoami(room_id: int, user_id: int):
|
|
role = get_role(room_id, user_id)
|
|
|
|
if role is None:
|
|
return {
|
|
"member": False,
|
|
"role": None,
|
|
}
|
|
|
|
return {
|
|
"member": True,
|
|
"role": role,
|
|
"is_admin": ROLE_LEVELS[role] >= ROLE_LEVELS["admin"],
|
|
"is_owner": role == "owner",
|
|
} |