added manager user type
This commit is contained in:
35
models.py
35
models.py
@@ -26,6 +26,7 @@ class User(UserMixin, db.Model):
|
||||
email = db.Column(db.String(150), unique=True, nullable=False)
|
||||
password_hash = db.Column(db.String(256))
|
||||
is_admin = db.Column(db.Boolean, default=False)
|
||||
is_manager = db.Column(db.Boolean, default=False) # New field for manager role
|
||||
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
phone = db.Column(db.String(20))
|
||||
company = db.Column(db.String(100))
|
||||
@@ -444,4 +445,36 @@ class PasswordSetupToken(db.Model):
|
||||
return not self.used and datetime.utcnow() < self.expires_at
|
||||
|
||||
def __repr__(self):
|
||||
return f'<PasswordSetupToken {self.token}>'
|
||||
return f'<PasswordSetupToken {self.token}>'
|
||||
|
||||
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 and manager users have all permissions
|
||||
if current_user.is_admin or current_user.is_manager:
|
||||
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)
|
||||
Reference in New Issue
Block a user