mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-20 22:40:31 -04:00
Check for unknown permissions
This guards against anyone mispelling or using the wrong words for a permission, which could introduce unexpected or hard to catch errors.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from itertools import chain
|
||||
from flask_login import UserMixin, AnonymousUserMixin
|
||||
from flask import session
|
||||
|
||||
@@ -9,6 +10,8 @@ roles = {
|
||||
'manage_api_keys': ['manage_api_keys']
|
||||
}
|
||||
|
||||
all_permissions = set(chain.from_iterable(roles.values())) | {'view_activity'}
|
||||
|
||||
|
||||
class User(UserMixin):
|
||||
def __init__(self, fields, max_failed_login_count=3):
|
||||
@@ -101,6 +104,11 @@ class User(UserMixin):
|
||||
|
||||
def has_permissions(self, *permissions, any_=False, admin_override=False):
|
||||
|
||||
unknown_permissions = set(permissions) - all_permissions
|
||||
|
||||
if unknown_permissions:
|
||||
raise TypeError('{} are not valid permissions'.format(unknown_permissions))
|
||||
|
||||
# Only available to the platform admin user
|
||||
if admin_override and self.platform_admin:
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user