浏览代码

fix NoAuthenticated exception renaming and other simple refactoring

Guénaël Muller 6 年前
父节点
当前提交
4c96144b7a

+ 1 - 1
tracim/exceptions.py 查看文件

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 查看文件

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 查看文件

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 查看文件

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 查看文件

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 查看文件

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 查看文件

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 查看文件

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 查看文件

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 查看文件

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)