|  | @@ -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)
 |