35 lines
1.0 KiB
Python
35 lines
1.0 KiB
Python
from flask_login import current_user
|
|
from models import RoomMemberPermission
|
|
from datetime import datetime, timezone
|
|
|
|
def user_has_permission(room, perm_name):
|
|
"""
|
|
Check if the current user has a specific permission in a room.
|
|
|
|
Args:
|
|
room: Room object
|
|
perm_name: Name of the permission to check (e.g., 'can_view', 'can_upload')
|
|
|
|
Returns:
|
|
bool: True if user has permission, False otherwise
|
|
"""
|
|
# Admin users have all permissions
|
|
if current_user.is_admin:
|
|
return True
|
|
|
|
# Check if user is a member of the room
|
|
if current_user not in room.members:
|
|
return False
|
|
|
|
# Get user's permissions for this room
|
|
permission = RoomMemberPermission.query.filter_by(
|
|
room_id=room.id,
|
|
user_id=current_user.id
|
|
).first()
|
|
|
|
# If no specific permissions are set, user only has view access
|
|
if not permission:
|
|
return perm_name == 'can_view'
|
|
|
|
# Check the specific permission
|
|
return getattr(permission, perm_name, False) |