added permission checks to user and recorder API
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
Example user model and related models
|
||||
"""
|
||||
import json
|
||||
from enum import Enum
|
||||
|
||||
import sqlalchemy
|
||||
from sqlalchemy.orm import relation, validates
|
||||
@@ -253,12 +254,24 @@ class User(UserMixin, db.Model):
|
||||
|
||||
@property
|
||||
def effective_permissions(self):
|
||||
permissions = Config.ROLE_PERMISSION_MAPPINGS.get(self.role, set())
|
||||
role_permissions = Config.ROLE_PERMISSION_MAPPINGS.get(self.role, set())
|
||||
permissions = set(Permission.query.filter(Permission.name.in_(role_permissions)).all())
|
||||
|
||||
for g in self.groups:
|
||||
for p in g.permissions:
|
||||
permissions.add(p)
|
||||
return permissions
|
||||
|
||||
def has_permission(self, permission):
|
||||
user_permissions = self.effective_permissions
|
||||
if isinstance(permission, str):
|
||||
return any([user_permission.name == permission for user_permission in user_permissions])
|
||||
if isinstance(permission, Permission):
|
||||
return any([user_permission.id == permission.id for user_permission in user_permissions])
|
||||
if isinstance(permission, Enum):
|
||||
return any([user_permission.name == str(permission.value) for user_permission in user_permissions])
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def decode_auth_token(auth_token):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user