54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
from dataclasses import dataclass
|
|
from enum import IntEnum, Enum
|
|
|
|
|
|
@dataclass(frozen=True) # frozen=True
|
|
class DefaultRole:
|
|
role_name: str
|
|
role_key: str
|
|
role_description: str
|
|
role_level: int
|
|
|
|
|
|
# Default roles, which all tenants will have, cannot be modified.
|
|
class DefaultRoleEnum(Enum):
|
|
ADMIN = DefaultRole("Administrator", "admin", "Have all permissions", 0)
|
|
|
|
|
|
@dataclass(frozen=True) # frozen=True
|
|
class DefaultPermission:
|
|
permission_key: str
|
|
permission_name: str
|
|
permission_description: str
|
|
|
|
|
|
# Default permissions, which all tenants will have, cannot be modified.
|
|
class DefaultPermissionEnum(Enum):
|
|
CHANGE_ROLES = DefaultPermission("change:roles", "Change roles", "Add/Update/Delete roles")
|
|
CHANGE_PERMISSIONS = DefaultPermission("change:permissions", "Change permissions", "Add/Update/Remove permissions")
|
|
|
|
|
|
class AdministrativeRole(IntEnum):
|
|
NONE = 0
|
|
PERSONAL = 1
|
|
BUSINESS = 2
|
|
CONTRIBUTOR = 4
|
|
ADMINISTRATOR = 8
|
|
# now UI cannot siginin if user role is 8
|
|
|
|
|
|
class Capability(IntEnum):
|
|
VISITOR = 1
|
|
COMMUNICATOR = 2
|
|
REQUESTER = 4
|
|
PROVIDER = 8
|
|
DEVELOPER = 16
|
|
|
|
|
|
class Feature(IntEnum):
|
|
ANY = 0xFFFFFFFF
|
|
SENDMESSAGE = 0x1
|
|
INITIATEREQUEST = 0x2
|
|
MAKEPROPOSAL = 0x4
|
|
CREATEPROJECT = 0x8
|