7
7
from fastapi .responses import HTMLResponse , JSONResponse
8
8
from fastapi .websockets import WebSocket , WebSocketDisconnect , WebSocketState
9
9
10
- import pyninja
11
- from pyninja import exceptions , models , monitor , squire
10
+ from .. import exceptions , models , monitor , squire , version
12
11
13
12
LOGGER = logging .getLogger ("uvicorn.default" )
14
13
@@ -24,12 +23,12 @@ async def error_endpoint(request: Request) -> HTMLResponse:
24
23
Returns an HTML response templated using Jinja2.
25
24
"""
26
25
return await monitor .config .clear_session (
27
- monitor .templates .TemplateResponse (
26
+ monitor .config . templates .TemplateResponse (
28
27
name = "unauthorized.html" ,
29
28
context = {
30
29
"request" : request ,
31
30
"signin" : monitor .config .static .login_endpoint ,
32
- "version" : f"v{ pyninja . version } " ,
31
+ "version" : f"v{ version . __version__ } " ,
33
32
},
34
33
)
35
34
)
@@ -52,14 +51,14 @@ async def logout_endpoint(request: Request) -> HTMLResponse:
52
51
response = await monitor .authenticator .session_error (request , error )
53
52
else :
54
53
models .ws_session .client_auth .pop (request .client .host )
55
- response = monitor .templates .TemplateResponse (
54
+ response = monitor .config . templates .TemplateResponse (
56
55
name = "logout.html" ,
57
56
context = {
58
57
"request" : request ,
59
58
"detail" : "Session Expired" ,
60
59
"signin" : monitor .config .static .login_endpoint ,
61
60
"show_login" : True ,
62
- "version" : f"v{ pyninja . version } " ,
61
+ "version" : f"v{ version . __version__ } " ,
63
62
},
64
63
)
65
64
return await monitor .config .clear_session (response )
@@ -109,7 +108,7 @@ async def monitor_endpoint(request: Request, session_token: str = Cookie(None)):
109
108
await monitor .authenticator .session_error (request , error )
110
109
)
111
110
else :
112
- return monitor .templates .TemplateResponse (
111
+ return monitor .config . templates .TemplateResponse (
113
112
name = "main.html" ,
114
113
context = dict (
115
114
request = request ,
@@ -118,12 +117,12 @@ async def monitor_endpoint(request: Request, session_token: str = Cookie(None)):
118
117
),
119
118
)
120
119
else :
121
- return monitor .templates .TemplateResponse (
120
+ return monitor .config . templates .TemplateResponse (
122
121
name = "index.html" ,
123
122
context = {
124
123
"request" : request ,
125
124
"signin" : monitor .config .static .login_endpoint ,
126
- "version" : f"v{ pyninja . version } " ,
125
+ "version" : f"v{ version . __version__ } " ,
127
126
},
128
127
)
129
128
@@ -136,9 +135,14 @@ async def websocket_endpoint(websocket: WebSocket, session_token: str = Cookie(N
136
135
session_token: Session token set after verifying username and password.
137
136
"""
138
137
await websocket .accept ()
139
- session_validity = await monitor .authenticator .validate_session (
140
- websocket .client .host , session_token
141
- )
138
+ try :
139
+ session_validity = await monitor .authenticator .validate_session (
140
+ websocket .client .host , session_token
141
+ )
142
+ except exceptions .SessionError as error :
143
+ await websocket .send_text (error .__str__ ())
144
+ await websocket .close ()
145
+ return
142
146
if not session_validity :
143
147
await websocket .send_text ("Unauthorized" )
144
148
await websocket .close ()
0 commit comments