64 lines
2.4 KiB
Python
64 lines
2.4 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("Admin", "admin", "Have all permissions", 1)
|
|
OPERATOR = DefaultRole("Operator", "operator", "System operator with deployment and management permissions", 10)
|
|
DEVELOPER = DefaultRole("Developer", "developer", "Developer with git and issue management access", 100)
|
|
QA = DefaultRole("QA", "qa", "Quality assurance with bug and testing permissions", 1000)
|
|
|
|
|
|
@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):
|
|
INVITE_COLLABORATOR = DefaultPermission("invite:collaborator", "Add/Remove participants", "Add/Remove participants")
|
|
PUBLISH_PRODUCTION = DefaultPermission("publish:production", "Deploy to production", "Deploy to production")
|
|
EDIT_PRODUCT = DefaultPermission("edit:product", "View product management UX", "View product management UX")
|
|
ACCESS_GIT_REPOSITORIES = DefaultPermission("access:git_repositories", "Access to git repositories", "Access to git repositories")
|
|
ACCESS_ISSUE_MANAGEMENT = DefaultPermission("access:issue_management", "Access to issue management", "Access to issue management")
|
|
PUBLISH_ALPHA = DefaultPermission("publish:alpha", "Access to alpha deployment", "Access to alpha deployment")
|
|
OPEN_BUGS = DefaultPermission("open:bugs", "Open/Close/Re-open bugs", "Open/Close/Re-open bugs")
|
|
QA_FAILED_PASSED = DefaultPermission("qa:failed_passed", "Update QA status - QA failed/passed", "Update QA status - QA failed/passed")
|
|
QA_TEST_REPORTS = DefaultPermission("qa:test_reports", "Update QA status - Test reports", "Update QA status - Test reports (Test coverage)")
|
|
|
|
|
|
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
|