|
@@ -1,5 +1,9 @@
|
1
|
1
|
# coding=utf-8
|
2
|
2
|
import os
|
|
3
|
+from http.client import HTTPException
|
|
4
|
+
|
|
5
|
+from pyramid.httpexceptions import HTTPNoContent
|
|
6
|
+from pyramid.response import Response
|
3
|
7
|
from sqlalchemy.orm.exc import NoResultFound
|
4
|
8
|
|
5
|
9
|
from tracim import TracimRequest
|
|
@@ -9,7 +13,7 @@ from tracim.views.controllers import Controller
|
9
|
13
|
from pyramid.config import Configurator
|
10
|
14
|
|
11
|
15
|
from tracim.views import BASE_API_V2
|
12
|
|
-from tracim.views.core_api.schemas import UserSchema, OkResponse
|
|
16
|
+from tracim.views.core_api.schemas import UserSchema, NoContentSchema
|
13
|
17
|
from tracim.views.core_api.schemas import LoginOutputHeaders
|
14
|
18
|
from tracim.views.core_api.schemas import BasicAuthSchema
|
15
|
19
|
from tracim.exceptions import NotAuthentificated, LoginFailed
|
|
@@ -28,7 +32,10 @@ class SessionController(Controller):
|
28
|
32
|
@hapic.handle_exception(LoginFailed, http_code=HTTPStatus.BAD_REQUEST)
|
29
|
33
|
# TODO - G.M - 17-04-2018 - fix output header ?
|
30
|
34
|
# @hapic.output_headers()
|
31
|
|
- @hapic.output_body(OkResponse())
|
|
35
|
+ @hapic.output_body(
|
|
36
|
+ NoContentSchema(),
|
|
37
|
+ default_http_code=HTTPStatus.NO_CONTENT
|
|
38
|
+ )
|
32
|
39
|
def login(self, context, request: TracimRequest, hapic_data=None):
|
33
|
40
|
"""
|
34
|
41
|
Logs user into the system
|
|
@@ -52,15 +59,19 @@ class SessionController(Controller):
|
52
|
59
|
except NoResultFound:
|
53
|
60
|
# User does not exist
|
54
|
61
|
raise LoginFailed('Bad Credentials')
|
55
|
|
- return {'message': 'ok'}
|
|
62
|
+ return
|
56
|
63
|
|
57
|
64
|
@hapic.with_api_doc()
|
58
|
|
- @hapic.output_body(OkResponse())
|
|
65
|
+ @hapic.output_body(
|
|
66
|
+ NoContentSchema(),
|
|
67
|
+ default_http_code=HTTPStatus.NO_CONTENT
|
|
68
|
+ )
|
59
|
69
|
def logout(self, context, request: TracimRequest, hapic_data=None):
|
60
|
70
|
"""
|
61
|
71
|
Logs out current logged in user session
|
62
|
72
|
"""
|
63
|
|
- return {'message': 'ok'}
|
|
73
|
+
|
|
74
|
+ return
|
64
|
75
|
|
65
|
76
|
@hapic.with_api_doc()
|
66
|
77
|
@hapic.handle_exception(
|
|
@@ -69,7 +80,6 @@ class SessionController(Controller):
|
69
|
80
|
)
|
70
|
81
|
@hapic.output_body(
|
71
|
82
|
UserSchema(),
|
72
|
|
- default_http_code=HTTPStatus.OK,
|
73
|
83
|
)
|
74
|
84
|
def whoami(self, context, request: TracimRequest, hapic_data=None):
|
75
|
85
|
"""
|
|
@@ -88,7 +98,6 @@ class SessionController(Controller):
|
88
|
98
|
configurator.add_view(
|
89
|
99
|
self.login,
|
90
|
100
|
route_name='login',
|
91
|
|
- renderer='json'
|
92
|
101
|
)
|
93
|
102
|
# Logout
|
94
|
103
|
configurator.add_route(
|
|
@@ -100,7 +109,6 @@ class SessionController(Controller):
|
100
|
109
|
configurator.add_view(
|
101
|
110
|
self.logout,
|
102
|
111
|
route_name='logout',
|
103
|
|
- renderer='json'
|
104
|
112
|
)
|
105
|
113
|
# Whoami
|
106
|
114
|
configurator.add_route(
|
|
@@ -111,5 +119,4 @@ class SessionController(Controller):
|
111
|
119
|
configurator.add_view(
|
112
|
120
|
self.whoami,
|
113
|
121
|
route_name='whoami',
|
114
|
|
- renderer='json'
|
115
|
122
|
)
|