restructured
This commit is contained in:
+33
-12
@@ -1,7 +1,14 @@
|
||||
from database import fetch_one
|
||||
|
||||
|
||||
def get_room_role(room_id, user_id):
|
||||
ROLE_LEVELS = {
|
||||
"member": 1,
|
||||
"admin": 2,
|
||||
"owner": 3,
|
||||
}
|
||||
|
||||
|
||||
def get_role(room_id: int, user_id: int):
|
||||
member = fetch_one(
|
||||
"""
|
||||
SELECT role
|
||||
@@ -9,10 +16,7 @@ def get_room_role(room_id, user_id):
|
||||
WHERE room_id = ?
|
||||
AND user_id = ?
|
||||
""",
|
||||
(
|
||||
room_id,
|
||||
user_id
|
||||
)
|
||||
(room_id, user_id)
|
||||
)
|
||||
|
||||
if member is None:
|
||||
@@ -21,14 +25,31 @@ def get_room_role(room_id, user_id):
|
||||
return member["role"]
|
||||
|
||||
|
||||
def has_role(room_id, user_id, allowed_roles):
|
||||
|
||||
role = get_room_role(
|
||||
room_id,
|
||||
user_id
|
||||
)
|
||||
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 in allowed_roles
|
||||
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",
|
||||
}
|
||||
Reference in New Issue
Block a user