# Copyright (C) 2020-2024 Soleta Networks # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU Affero General Public License as published by the # Free Software Foundation; either version 3 of the License, or # (at your option) any later version. from flask_login import UserMixin class User(UserMixin): def __init__(self, username, scopes, admin, permissions): self.id = username self.scopes = scopes self.admin = admin self.permissions = permissions def get_permission(self, target, action): if self.admin or not target in self.permissions: return True return self.permissions[target].get(action, True) def target_is_disabled(self, target): if self.admin or not target in self.permissions or not self.permissions[target]: return False return all(value == False for value in self.permissions[target].values())