diff --git a/aurweb/models/user.py b/aurweb/models/user.py index 70d15f88..28aa613e 100644 --- a/aurweb/models/user.py +++ b/aurweb/models/user.py @@ -165,6 +165,15 @@ class User(Base): aurweb.models.account_type.TRUSTED_USER_AND_DEV_ID } + def is_elevated(self): + """ A User is 'elevated' when they have either a + Trusted User or Developer AccountType. """ + return self.AccountType.ID in { + aurweb.models.account_type.TRUSTED_USER_ID, + aurweb.models.account_type.DEVELOPER_ID, + aurweb.models.account_type.TRUSTED_USER_AND_DEV_ID, + } + def can_edit_user(self, user): """ Can this account record edit the target user? It must either be the target user or a user with enough permissions to do so. diff --git a/test/test_user.py b/test/test_user.py index 70eac079..43cbf58a 100644 --- a/test/test_user.py +++ b/test/test_user.py @@ -214,6 +214,11 @@ def test_user_credential_types(): assert aurweb.auth.developer(user) assert aurweb.auth.trusted_user_or_dev(user) + # Some model authorization checks. + assert user.is_elevated() + assert user.is_trusted_user() + assert user.is_developer() + def test_user_json(): data = json.loads(user.json())