Browse Source

fix NoAuthenticated exception renaming and other simple refactoring

Guénaël Muller 6 years ago
parent
commit
4c96144b7a

+ 1 - 1
tracim/exceptions.py View File

61
     pass
61
     pass
62
 
62
 
63
 
63
 
64
-class NotAuthentificated(TracimException):
64
+class NotAuthenticated(TracimException):
65
     pass
65
     pass
66
 
66
 
67
 
67
 

+ 3 - 1
tracim/lib/core/userworkspace.py View File

49
         """
49
         """
50
         Return WorkspaceInContext object from Workspace
50
         Return WorkspaceInContext object from Workspace
51
         """
51
         """
52
+        assert self._config
52
         workspace = UserRoleWorkspaceInContext(
53
         workspace = UserRoleWorkspaceInContext(
53
             user_role=user_role,
54
             user_role=user_role,
54
             dbsession=self._session,
55
             dbsession=self._session,
138
         workspace:Workspace
139
         workspace:Workspace
139
     ) -> typing.List[UserRoleInWorkspace]:
140
     ) -> typing.List[UserRoleInWorkspace]:
140
         return self._session.query(UserRoleInWorkspace)\
141
         return self._session.query(UserRoleInWorkspace)\
141
-            .filter(UserRoleInWorkspace.workspace_id == workspace.workspace_id).all()  # nopep8
142
+            .filter(UserRoleInWorkspace.workspace_id==workspace.workspace_id)\
143
+            .all()
142
 
144
 
143
     def save(self, role: UserRoleInWorkspace) -> None:
145
     def save(self, role: UserRoleInWorkspace) -> None:
144
         self._session.flush()
146
         self._session.flush()

+ 1 - 1
tracim/lib/utils/authentification.py View File

51
         if not login:
51
         if not login:
52
             return None
52
             return None
53
         user = uapi.get_one_by_email(login)
53
         user = uapi.get_one_by_email(login)
54
-    except (NoResultFound, UserDoesNotExist):
54
+    except UserDoesNotExist:
55
         return None
55
         return None
56
     return user
56
     return user

+ 3 - 3
tracim/lib/utils/authorization.py View File

44
 # We prefer to use decorators
44
 # We prefer to use decorators
45
 
45
 
46
 
46
 
47
-def require_same_user_or_profile(group):
47
+def require_same_user_or_profile(group: int):
48
     """
48
     """
49
     Decorator for view to restrict access of tracim request if candidate user
49
     Decorator for view to restrict access of tracim request if candidate user
50
     is distinct from authenticated user and not with high enough profile.
50
     is distinct from authenticated user and not with high enough profile.
64
     return decorator
64
     return decorator
65
 
65
 
66
 
66
 
67
-def require_profile(group):
67
+def require_profile(group: int):
68
     """
68
     """
69
     Decorator for view to restrict access of tracim request if profile is
69
     Decorator for view to restrict access of tracim request if profile is
70
     not high enough
70
     not high enough
82
     return decorator
82
     return decorator
83
 
83
 
84
 
84
 
85
-def require_workspace_role(minimal_required_role):
85
+def require_workspace_role(minimal_required_role: int):
86
     """
86
     """
87
     Decorator for view to restrict access of tracim request if role
87
     Decorator for view to restrict access of tracim request if role
88
     is not high enough
88
     is not high enough

+ 6 - 3
tracim/lib/utils/request.py View File

6
 from sqlalchemy.orm.exc import NoResultFound
6
 from sqlalchemy.orm.exc import NoResultFound
7
 
7
 
8
 
8
 
9
-from tracim.exceptions import NotAuthentificated
9
+from tracim.exceptions import NotAuthenticated
10
 from tracim.exceptions import UserNotFoundInTracimRequest
10
 from tracim.exceptions import UserNotFoundInTracimRequest
11
 from tracim.exceptions import UserDoesNotExist
11
 from tracim.exceptions import UserDoesNotExist
12
 from tracim.exceptions import WorkspaceNotFound
12
 from tracim.exceptions import WorkspaceNotFound
40
         )
40
         )
41
         # Current workspace, found by request headers or content
41
         # Current workspace, found by request headers or content
42
         self._current_workspace = None  # type: Workspace
42
         self._current_workspace = None  # type: Workspace
43
+
43
         # Authenticated user
44
         # Authenticated user
44
         self._current_user = None  # type: User
45
         self._current_user = None  # type: User
46
+
45
         # User found from request headers, content, distinct from authenticated
47
         # User found from request headers, content, distinct from authenticated
46
         # user
48
         # user
47
         self._user_candidate = None  # type: User
49
         self._user_candidate = None  # type: User
50
+
48
         # INFO - G.M - 18-05-2018 - Close db at the end of the request
51
         # INFO - G.M - 18-05-2018 - Close db at the end of the request
49
         self.add_finished_callback(self._cleanup)
52
         self.add_finished_callback(self._cleanup)
50
 
53
 
168
             raise UserNotFoundInTracimRequest('You request a current user but the context not permit to found one')  # nopep8
171
             raise UserNotFoundInTracimRequest('You request a current user but the context not permit to found one')  # nopep8
169
         user = uapi.get_one_by_email(login)
172
         user = uapi.get_one_by_email(login)
170
     except (UserDoesNotExist, UserNotFoundInTracimRequest) as exc:
173
     except (UserDoesNotExist, UserNotFoundInTracimRequest) as exc:
171
-        raise NotAuthentificated('User {} not found'.format(login)) from exc
174
+        raise NotAuthenticated('User {} not found'.format(login)) from exc
172
     return user
175
     return user
173
 
176
 
174
 
177
 
187
         if 'workspace_id' in request.matchdict:
190
         if 'workspace_id' in request.matchdict:
188
             workspace_id = request.matchdict['workspace_id']
191
             workspace_id = request.matchdict['workspace_id']
189
         if not workspace_id:
192
         if not workspace_id:
190
-            raise WorkspaceNotFound('No workspace_id param')
193
+            raise WorkspaceNotFound('No workspace_id property found in request')
191
         wapi = WorkspaceApi(
194
         wapi = WorkspaceApi(
192
             current_user=user,
195
             current_user=user,
193
             session=request.dbsession,
196
             session=request.dbsession,

+ 2 - 2
tracim/models/applications.py View File

47
 
47
 
48
 )
48
 )
49
 
49
 
50
-file = Application(
50
+_file = Application(
51
     label='Files',
51
     label='Files',
52
     slug='contents/files',
52
     slug='contents/files',
53
     icon='paperclip',
53
     icon='paperclip',
81
 applications = [
81
 applications = [
82
     htmlpage,
82
     htmlpage,
83
     markdownpluspage,
83
     markdownpluspage,
84
-    file,
84
+    _file,
85
     thread,
85
     thread,
86
     calendar,
86
     calendar,
87
 ]
87
 ]

+ 2 - 2
tracim/views/core_api/session_controller.py View File

13
 from tracim.views.core_api.schemas import NoContentSchema
13
 from tracim.views.core_api.schemas import NoContentSchema
14
 from tracim.views.core_api.schemas import LoginOutputHeaders
14
 from tracim.views.core_api.schemas import LoginOutputHeaders
15
 from tracim.views.core_api.schemas import BasicAuthSchema
15
 from tracim.views.core_api.schemas import BasicAuthSchema
16
-from tracim.exceptions import NotAuthentificated
16
+from tracim.exceptions import NotAuthenticated
17
 from tracim.exceptions import AuthenticationFailed
17
 from tracim.exceptions import AuthenticationFailed
18
 
18
 
19
 
19
 
52
         return
52
         return
53
 
53
 
54
     @hapic.with_api_doc()
54
     @hapic.with_api_doc()
55
-    @hapic.handle_exception(NotAuthentificated, HTTPStatus.UNAUTHORIZED)
55
+    @hapic.handle_exception(NotAuthenticated, HTTPStatus.UNAUTHORIZED)
56
     @hapic.output_body(UserSchema(),)
56
     @hapic.output_body(UserSchema(),)
57
     def whoami(self, context, request: TracimRequest, hapic_data=None):
57
     def whoami(self, context, request: TracimRequest, hapic_data=None):
58
         """
58
         """

+ 2 - 2
tracim/views/core_api/system_controller.py View File

1
 # coding=utf-8
1
 # coding=utf-8
2
 from pyramid.config import Configurator
2
 from pyramid.config import Configurator
3
 
3
 
4
-from tracim.exceptions import NotAuthentificated, InsufficientUserProfile
4
+from tracim.exceptions import NotAuthenticated, InsufficientUserProfile
5
 from tracim.lib.utils.authorization import require_profile
5
 from tracim.lib.utils.authorization import require_profile
6
 from tracim.models import Group
6
 from tracim.models import Group
7
 from tracim.models.applications import applications
7
 from tracim.models.applications import applications
20
 class SystemController(Controller):
20
 class SystemController(Controller):
21
 
21
 
22
     @hapic.with_api_doc()
22
     @hapic.with_api_doc()
23
-    @hapic.handle_exception(NotAuthentificated, HTTPStatus.UNAUTHORIZED)
23
+    @hapic.handle_exception(NotAuthenticated, HTTPStatus.UNAUTHORIZED)
24
     @hapic.handle_exception(InsufficientUserProfile, HTTPStatus.FORBIDDEN)
24
     @hapic.handle_exception(InsufficientUserProfile, HTTPStatus.FORBIDDEN)
25
     @require_profile(Group.TIM_USER)
25
     @require_profile(Group.TIM_USER)
26
     @hapic.output_body(ApplicationSchema(many=True),)
26
     @hapic.output_body(ApplicationSchema(many=True),)

+ 2 - 2
tracim/views/core_api/user_controller.py View File

12
 
12
 
13
 from tracim import hapic, TracimRequest
13
 from tracim import hapic, TracimRequest
14
 
14
 
15
-from tracim.exceptions import NotAuthentificated
15
+from tracim.exceptions import NotAuthenticated
16
 from tracim.exceptions import InsufficientUserProfile
16
 from tracim.exceptions import InsufficientUserProfile
17
 from tracim.exceptions import UserDoesNotExist
17
 from tracim.exceptions import UserDoesNotExist
18
 from tracim.lib.core.workspace import WorkspaceApi
18
 from tracim.lib.core.workspace import WorkspaceApi
24
 class UserController(Controller):
24
 class UserController(Controller):
25
 
25
 
26
     @hapic.with_api_doc()
26
     @hapic.with_api_doc()
27
-    @hapic.handle_exception(NotAuthentificated, HTTPStatus.UNAUTHORIZED)
27
+    @hapic.handle_exception(NotAuthenticated, HTTPStatus.UNAUTHORIZED)
28
     @hapic.handle_exception(InsufficientUserProfile, HTTPStatus.FORBIDDEN)
28
     @hapic.handle_exception(InsufficientUserProfile, HTTPStatus.FORBIDDEN)
29
     @hapic.handle_exception(UserDoesNotExist, HTTPStatus.NOT_FOUND)
29
     @hapic.handle_exception(UserDoesNotExist, HTTPStatus.NOT_FOUND)
30
     @require_same_user_or_profile(Group.TIM_ADMIN)
30
     @require_same_user_or_profile(Group.TIM_ADMIN)

+ 3 - 3
tracim/views/core_api/workspace_controller.py View File

15
     from http import client as HTTPStatus
15
     from http import client as HTTPStatus
16
 
16
 
17
 from tracim import hapic, TracimRequest
17
 from tracim import hapic, TracimRequest
18
-from tracim.exceptions import NotAuthentificated
18
+from tracim.exceptions import NotAuthenticated
19
 from tracim.exceptions import InsufficientUserProfile
19
 from tracim.exceptions import InsufficientUserProfile
20
 from tracim.exceptions import WorkspaceNotFound
20
 from tracim.exceptions import WorkspaceNotFound
21
 from tracim.lib.core.user import UserApi
21
 from tracim.lib.core.user import UserApi
29
 class WorkspaceController(Controller):
29
 class WorkspaceController(Controller):
30
 
30
 
31
     @hapic.with_api_doc()
31
     @hapic.with_api_doc()
32
-    @hapic.handle_exception(NotAuthentificated, HTTPStatus.UNAUTHORIZED)
32
+    @hapic.handle_exception(NotAuthenticated, HTTPStatus.UNAUTHORIZED)
33
     @hapic.handle_exception(InsufficientUserProfile, HTTPStatus.FORBIDDEN)
33
     @hapic.handle_exception(InsufficientUserProfile, HTTPStatus.FORBIDDEN)
34
     @hapic.handle_exception(WorkspaceNotFound, HTTPStatus.FORBIDDEN)
34
     @hapic.handle_exception(WorkspaceNotFound, HTTPStatus.FORBIDDEN)
35
     @require_workspace_role(UserRoleInWorkspace.READER)
35
     @require_workspace_role(UserRoleInWorkspace.READER)
49
         return wapi.get_workspace_with_context(request.current_workspace)
49
         return wapi.get_workspace_with_context(request.current_workspace)
50
 
50
 
51
     @hapic.with_api_doc()
51
     @hapic.with_api_doc()
52
-    @hapic.handle_exception(NotAuthentificated, HTTPStatus.UNAUTHORIZED)
52
+    @hapic.handle_exception(NotAuthenticated, HTTPStatus.UNAUTHORIZED)
53
     @hapic.handle_exception(InsufficientUserProfile, HTTPStatus.FORBIDDEN)
53
     @hapic.handle_exception(InsufficientUserProfile, HTTPStatus.FORBIDDEN)
54
     @hapic.handle_exception(WorkspaceNotFound, HTTPStatus.FORBIDDEN)
54
     @hapic.handle_exception(WorkspaceNotFound, HTTPStatus.FORBIDDEN)
55
     @require_workspace_role(UserRoleInWorkspace.READER)
55
     @require_workspace_role(UserRoleInWorkspace.READER)