FossilRepo

fossilrepo / core / permissions.py
Blame History Raw 70 lines
1
import logging
2
from enum import Enum
3
4
from django.core.exceptions import PermissionDenied
5
6
logger = logging.getLogger(__name__)
7
8
9
class P(Enum):
10
"""Permission enum. Check permissions via P.PERMISSION_NAME.check(user)."""
11
12
# Organization
13
ORGANIZATION_VIEW = "organization.view_organization"
14
ORGANIZATION_ADD = "organization.add_organization"
15
ORGANIZATION_CHANGE = "organization.change_organization"
16
ORGANIZATION_DELETE = "organization.delete_organization"
17
18
# Organization Members
19
ORGANIZATION_MEMBER_VIEW = "organization.view_organizationmember"
20
ORGANIZATION_MEMBER_ADD = "organization.add_organizationmember"
21
ORGANIZATION_MEMBER_CHANGE = "organization.change_organizationmember"
22
ORGANIZATION_MEMBER_DELETE = "organization.delete_organizationmember"
23
24
# Teams
25
TEAM_VIEW = "organization.view_team"
26
TEAM_ADD = "organization.add_team"
27
TEAM_CHANGE = "organization.change_team"
28
TEAM_DELETE = "organization.delete_team"
29
30
# Project Groups
31
PROJECT_GROUP_VIEW = "projects.view_projectgroup"
32
PROJECT_GROUP_ADD = "projects.add_projectgroup"
33
PROJECT_GROUP_CHANGE = "projects.change_projectgroup"
34
PROJECT_GROUP_DELETE = "projects.delete_projectgroup"
35
36
# Projects
37
PROJECT_VIEW = "projects.view_project"
38
PROJECT_ADD = "projects.add_project"
39
PROJECT_CHANGE = "projects.change_project"
40
PROJECT_DELETE = "projects.delete_project"
41
42
# Fossil
43
FOSSIL_VIEW = "fossil.view_fossilrepository"
44
FOSSIL_ADD = "fossil.add_fossilrepository"
45
FOSSIL_CHANGE = "fossil.change_fossilrepository"
46
FOSSIL_DELETE = "fossil.delete_fossilrepository"
47
48
# Pages (docs)
49
PAGE_VIEW = "pages.view_page"
50
PAGE_ADD = "pages.add_page"
51
PAGE_CHANGE = "pages.change_page"
52
PAGE_DELETE = "pages.delete_page"
53
54
def check(self, user, raise_error=True):
55
"""Check if user has this permission. Superusers always pass."""
56
if not user or not user.is_authenticated:
57
if raise_error:
58
raise PermissionDenied("Authentication required.")
59
return False
60
61
if user.is_superuser:
62
return True
63
64
if user.has_perm(self.value):
65
return True
66
67
if raise_error:
68
raise PermissionDenied(f"Permission denied: {self.value}")
69
return False
70

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button