|
@@ -3,6 +3,9 @@ from tracim.views.controllers import Controller
|
3
|
3
|
from pyramid.config import Configurator
|
4
|
4
|
from pyramid.response import Response
|
5
|
5
|
from pyramid.exceptions import NotFound
|
|
6
|
+from pyramid.httpexceptions import HTTPUnauthorized
|
|
7
|
+from pyramid.httpexceptions import HTTPForbidden
|
|
8
|
+from pyramid.security import forget
|
6
|
9
|
|
7
|
10
|
|
8
|
11
|
class DefaultController(Controller):
|
|
@@ -13,6 +16,17 @@ class DefaultController(Controller):
|
13
|
16
|
return {}
|
14
|
17
|
|
15
|
18
|
@classmethod
|
|
19
|
+ def forbidden_view(cls, request):
|
|
20
|
+ if request.authenticated_userid is None:
|
|
21
|
+ response = HTTPUnauthorized()
|
|
22
|
+ response.headers.update(forget(request))
|
|
23
|
+
|
|
24
|
+ # user is logged in but doesn't have permissions, reject wholesale
|
|
25
|
+ else:
|
|
26
|
+ response = HTTPForbidden()
|
|
27
|
+ return response
|
|
28
|
+
|
|
29
|
+ @classmethod
|
16
|
30
|
def test_config(cls, request):
|
17
|
31
|
try:
|
18
|
32
|
app_config = request.registry.settings['CFG']
|
|
@@ -21,6 +35,25 @@ class DefaultController(Controller):
|
21
|
35
|
return Response(e, content_type='text/plain', status=500)
|
22
|
36
|
return {'project': project}
|
23
|
37
|
|
|
38
|
+ @classmethod
|
|
39
|
+ def test_admin_page(cls, request):
|
|
40
|
+ try:
|
|
41
|
+ app_config = request.registry.settings['CFG']
|
|
42
|
+ project = 'admin'
|
|
43
|
+ except Exception as e:
|
|
44
|
+ return Response(e, content_type='text/plain', status=500)
|
|
45
|
+ return {'project': project}
|
|
46
|
+
|
|
47
|
+ @classmethod
|
|
48
|
+ def test_user_page(cls, request):
|
|
49
|
+ try:
|
|
50
|
+ app_config = request.registry.settings['CFG']
|
|
51
|
+ project = 'user'
|
|
52
|
+ except Exception as e:
|
|
53
|
+ return Response(e, content_type='text/plain', status=500)
|
|
54
|
+ return {'project': project}
|
|
55
|
+
|
|
56
|
+
|
24
|
57
|
def bind(self, configurator: Configurator):
|
25
|
58
|
configurator.add_static_view('static', 'static', cache_max_age=3600)
|
26
|
59
|
configurator.add_view(
|
|
@@ -35,3 +68,20 @@ class DefaultController(Controller):
|
35
|
68
|
route_name='test_config',
|
36
|
69
|
renderer='tracim:templates/mytemplate.jinja2',
|
37
|
70
|
)
|
|
71
|
+
|
|
72
|
+ configurator.add_route('test_admin', '/test_admin')
|
|
73
|
+ configurator.add_view(
|
|
74
|
+ self.test_admin_page,
|
|
75
|
+ route_name='test_admin',
|
|
76
|
+ renderer='tracim:templates/mytemplate.jinja2',
|
|
77
|
+ permission='admin',
|
|
78
|
+ )
|
|
79
|
+
|
|
80
|
+ configurator.add_route('test_user', '/test_user')
|
|
81
|
+ configurator.add_view(
|
|
82
|
+ self.test_user_page,
|
|
83
|
+ route_name='test_user',
|
|
84
|
+ renderer='tracim:templates/mytemplate.jinja2',
|
|
85
|
+ permission='user',
|
|
86
|
+ )
|
|
87
|
+ configurator.add_forbidden_view(self.forbidden_view)
|