Terarea  2
The automation project
Loading...
Searching...
No Matches
user_endpoints.py
Go to the documentation of this file.
1"""_summary_
2 File in charge of tracking the encpoints meant to manage the user.
3"""
4
5from typing import List, Dict, Any, Union
6from fastapi import Response, Request
7from display_tty import Disp, TOML_CONF, FILE_DESCRIPTOR, SAVE_TO_FILE, FILE_NAME
8from ..http_codes import HCI
9from .. import constants as CONST
10from ..runtime_data import RuntimeData
11from ..mail_management import MailManagement
12from ..password_handling import PasswordHandling
13
14
16 """_summary_
17 """
18
19 def __init__(self, runtime_data: RuntimeData, error: int = 84, success: int = 0, debug: bool = False) -> None:
20 """_summary_
21 """
22 # -------------------------- Inherited values --------------------------
23 self.runtime_data_initialised: RuntimeData = runtime_data
24 self.error: int = error
25 self.success: int = success
26 self.debug: bool = debug
27 # ------------------------ The logging function ------------------------
28 self.disp: Disp = Disp(
29 TOML_CONF,
30 FILE_DESCRIPTOR,
31 SAVE_TO_FILE,
32 FILE_NAME,
33 debug=self.debug,
34 logger=self.__class__.__name__
35 )
36 # ------------------------ The password checker ------------------------
38 self.error,
39 self.success,
40 self.debug
41 )
42 # ---------------------------- Mail sending ----------------------------
43 if self.runtime_data_initialised.mail_management_initialised is None:
45 self.error,
46 self.success,
47 self.debug
48 )
49 else:
50 self.mail_management_initialised: MailManagement = self.runtime_data_initialised.mail_management_initialised
51
52 async def post_login(self, request: Request) -> Response:
53 """_summary_
54 The endpoint allowing a user to log into the server.
55
56 Returns:
57 Response: _description_: The data to send back to the user as a response.
58 """
59 title = "Login"
60 request_body = await self.runtime_data_initialised.boilerplate_incoming_initialised.get_body(request)
61 self.disp.log_debug(f"Request body: {request_body}", title)
62 if not request_body or not all(key in request_body for key in ("email", "password")):
63 return self.runtime_data_initialised.boilerplate_responses_initialised.bad_request(title)
64 email = request_body["email"]
65 password = request_body["password"]
66 user_info = self.runtime_data_initialised.database_link.get_data_from_table(
67 CONST.TAB_ACCOUNTS, "*", f"email='{email}'"
68 )
69 self.disp.log_debug(f"Retrived data: {user_info}", title)
70 if isinstance(user_info, int):
71 return self.runtime_data_initialised.boilerplate_responses_initialised.unauthorized(title)
72 if self.password_handling_initialised.check_password(password, user_info[0]["password"]) is False:
73 return self.runtime_data_initialised.boilerplate_responses_initialised.unauthorized(title)
74 data = self.runtime_data_initialised.boilerplate_incoming_initialised.log_user_in(
75 email
76 )
77 if data["status"] == self.error:
78 body = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
79 title=title,
80 message="Login failed.",
81 resp="error",
82 token=data["token"],
83 error=True
84 )
85 return HCI.forbidden(content=body, content_type=CONST.CONTENT_TYPE, headers=self.runtime_data_initialised.json_header)
86 name = user_info[0]["username"]
87 body = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
88 title=title,
89 message=f"Welcome {name}",
90 resp="success",
91 token=data["token"],
92 error=False
93 )
94 body["token"] = data["token"]
95 return HCI.success(content=body, content_type=CONST.CONTENT_TYPE, headers=self.runtime_data_initialised.json_header)
96
97 async def post_register(self, request: Request) -> Response:
98 """_summary_
99
100 Args:
101 request (Request): _description_
102
103 Returns:
104 Response: _description_
105 """
106 title = "Register"
107 request_body = await self.runtime_data_initialised.boilerplate_incoming_initialised.get_body(request)
108 self.disp.log_debug(f"Request body: {request_body}", title)
109 if not request_body or not all(key in request_body for key in ("email", "password")):
110 return self.runtime_data_initialised.boilerplate_responses_initialised.bad_request(title)
111 email: str = request_body["email"]
112 password = request_body["password"]
113 if not email or email == "" or not password or password == "":
114 return self.runtime_data_initialised.boilerplate_responses_initialised.bad_request(title)
115 user_info = self.runtime_data_initialised.database_link.get_data_from_table(
116 CONST.TAB_ACCOUNTS, "*", f"email='{email}'")
117 if isinstance(user_info, int) is False:
118 node = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
119 title=title,
120 message="Email already exist.",
121 resp="email exists",
122 token=None,
123 error=True
124 )
125 return HCI.conflict(node)
126 hashed_password = self.password_handling_initialised.hash_password(
127 password)
128 username = email.split('@')[0]
129 self.disp.log_debug(f"Username = {username}", title)
130 admin = str(int(False))
131 favicon = "NULL"
132 data = [username, email, hashed_password, "local", favicon, admin]
133 self.disp.log_debug(f"Data list = {data}", title)
134 column = self.runtime_data_initialised.database_link.get_table_column_names(
135 CONST.TAB_ACCOUNTS
136 )
137 self.disp.log_debug(f"Column = {column}", title)
138 if isinstance(column, int):
139 return self.runtime_data_initialised.boilerplate_responses_initialised.internal_server_error(title)
140 column.pop(0)
141 self.disp.log_debug(f"Column after id pop = {column}", title)
142 if self.runtime_data_initialised.database_link.insert_data_into_table(CONST.TAB_ACCOUNTS, data, column) == self.error:
143 return self.runtime_data_initialised.boilerplate_responses_initialised.internal_server_error(title)
144 data = self.runtime_data_initialised.boilerplate_incoming_initialised.log_user_in(
145 email
146 )
147 if data["status"] == self.error:
148 body = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
149 title=title,
150 message="Login failed.",
151 resp="error",
152 token=data["token"],
153 error=True
154 )
155 return HCI.forbidden(content=body, content_type=CONST.CONTENT_TYPE, headers=self.runtime_data_initialised.json_header)
156 body = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
157 title=title,
158 message=f"Welcome {username}",
159 resp="success",
160 token=data["token"],
161 error=False
162 )
163 body["token"] = data["token"]
164 return HCI.success(
165 content=body,
166 content_type=CONST.CONTENT_TYPE,
167 headers=self.runtime_data_initialised.json_header
168 )
169
170 async def post_send_email_verification(self, request: Request) -> Response:
171 """_summary_
172 """
173 title = "Send e-mail verification"
174 request_body = await self.runtime_data_initialised.boilerplate_incoming_initialised.get_body(request)
175 self.disp.log_debug(f"Request body: {request_body}", title)
176 if not request_body or ("email") not in request_body:
177 return self.runtime_data_initialised.boilerplate_responses_initialised.bad_request(title)
178 email: str = request_body["email"]
179 data = self.runtime_data_initialised.database_link.get_data_from_table(
180 table=CONST.TAB_ACCOUNTS,
181 column="*",
182 where=f"email='{email}'",
183 beautify=True
184 )
185 self.disp.log_debug(f"user query = {data}", title)
186 if data == self.error or len(data) == 0:
187 return self.runtime_data_initialised.boilerplate_responses_initialised.bad_request(title)
188 email_subject = "[AREA] Verification code"
189 code = self.runtime_data_initialised.boilerplate_non_http_initialised.generate_check_token(
190 CONST.CHECK_TOKEN_SIZE
191 )
192 expiration_time = self.runtime_data_initialised.boilerplate_non_http_initialised.set_lifespan(
193 CONST.EMAIL_VERIFICATION_DELAY
194 )
195 expiration_time_str = self.runtime_data_initialised.database_link.datetime_to_string(
196 expiration_time, False
197 )
198 new_node = {}
199 new_node['email'] = email
200 new_node['code'] = code
201 tab_column = self.runtime_data_initialised.database_link.get_table_column_names(
202 CONST.TAB_VERIFICATION)
203 if tab_column == self.error or len(tab_column) == 0:
204 return self.runtime_data_initialised.boilerplate_responses_initialised.internal_server_error(title)
205 tab_column.pop(0)
206 self.runtime_data_initialised.database_link.remove_data_from_table(
207 CONST.TAB_VERIFICATION,
208 f"term='{email}'"
209 )
210 status = self.runtime_data_initialised.database_link.insert_data_into_table(
211 table=CONST.TAB_VERIFICATION,
212 data=[
213 email,
214 code,
215 self.runtime_data_initialised.database_link.datetime_to_string(
216 expiration_time, False, True
217 )
218 ],
219 column=tab_column
220 )
221 if status == self.error:
222 return self.runtime_data_initialised.boilerplate_responses_initialised.internal_server_error(title)
223 code_style = "background-color: lightgray;border: 2px lightgray solid;border-radius: 6px;color: black;font-weight: bold;padding: 5px;padding-top: 5px;padding-bottom: 5px;padding-top: 0px;padding-bottom: 0px;"
224 body = ""
225 body += "<p>The code is: "
226 body += f"<span style=\"{code_style}\">{code}</span></p>"
227 body += "<p>The code will be valid until "
228 body += f"<span style=\"{code_style}\">"
229 body += f"{expiration_time_str}</span>.</p>"
230 self.disp.log_debug(f"e-mail body: {body}", title)
231 status = self.mail_management_initialised.send_email(
232 email, email_subject, body
233 )
234 if status == self.error:
235 return self.runtime_data_initialised.boilerplate_responses_initialised.internal_server_error(title)
236 body = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
237 title=title,
238 message="Email send successfully.",
239 resp="success",
240 token=None,
241 error=False
242 )
243 return HCI.success(body)
244
245 async def put_reset_password(self, request: Request) -> Response:
246 """_summary_
247 The function in charge of resetting the user's password.
248 """
249 title = "Reset password"
250 request_body = await self.runtime_data_initialised.boilerplate_incoming_initialised.get_body(request)
251 self.disp.log_debug(f"Request body: {request_body}", title)
252 if not request_body or not all(key in request_body for key in ("email", "code", "password")):
253 return self.runtime_data_initialised.boilerplate_responses_initialised.bad_request(title)
254 body_email: str = request_body["email"]
255 body_code: str = request_body["code"]
256 body_password: str = request_body["password"]
257 verified_user: dict = {}
258 current_codes = self.runtime_data_initialised.database_link.get_data_from_table(
259 CONST.TAB_VERIFICATION,
260 column="*",
261 where=f"term='{body_email}'",
262 beautify=True
263 )
264 self.disp.log_debug(f"Current codes: {current_codes}", title)
265 nodes_of_interest = []
266 if current_codes == self.error or len(current_codes) == 0:
267 return self.runtime_data_initialised.boilerplate_responses_initialised.internal_server_error(title)
268 for user in current_codes:
269 if user.get("term") == body_email and user.get("definition") == body_code:
270 verified_user = user
271 nodes_of_interest.append(user)
272 if not verified_user:
273 return self.runtime_data_initialised.boilerplate_responses_initialised.invalid_verification_code(title)
274 data: list = []
275 column: list = []
276 hashed_password = self.password_handling_initialised.hash_password(
277 body_password
278 )
279 data.append(hashed_password)
280 column.append("password")
281 status = self.runtime_data_initialised.database_link.update_data_in_table(
282 CONST.TAB_ACCOUNTS, data, column, f"email='{body_email}'"
283 )
284 if status == self.error:
285 return self.runtime_data_initialised.boilerplate_responses_initialised.internal_server_error(title)
286 self.disp.log_debug(f"Nodes found: {nodes_of_interest}", title)
287 for line in nodes_of_interest:
288 self.disp.log_debug(f"line removed: {line}", title)
289 self.runtime_data_initialised.database_link.remove_data_from_table(
290 CONST.TAB_VERIFICATION,
291 f"id='{line['id']}'"
292 )
293 response_body = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
294 title=title,
295 message="Password changed successfully.",
296 resp="success",
297 token=None,
298 error=False
299 )
300 return HCI.success(response_body, content_type=CONST.CONTENT_TYPE, headers=self.runtime_data_initialised.json_header)
301
302 async def put_user(self, request: Request) -> Response:
303 """_summary_
304 Endpoint allowing the user to update it's account data.
305
306 Args:
307 request (Request): _description_
308
309 Returns:
310 Response: _description_
311 """
312 title = "Put user"
313 token: str = self.runtime_data_initialised.boilerplate_incoming_initialised.get_token_if_present(
314 request
315 )
316 token_valid: bool = self.runtime_data_initialised.boilerplate_non_http_initialised.is_token_correct(
317 token
318 )
319 self.disp.log_debug(f"token = {token}, valid = {token_valid}", title)
320 if token_valid is False:
321 return self.runtime_data_initialised.boilerplate_responses_initialised.unauthorized(title, token)
322 request_body = await self.runtime_data_initialised.boilerplate_incoming_initialised.get_body(request)
323 self.disp.log_debug(f"Request body: {request_body}", title)
324 if not request_body or not all(key in request_body for key in ("username", "email", "password")):
325 return self.runtime_data_initialised.boilerplate_responses_initialised.bad_request(title)
326 body_username: str = request_body["username"]
327 body_email: str = request_body["email"]
328 body_password: str = request_body["password"]
329 usr_id = self.runtime_data_initialised.boilerplate_non_http_initialised.get_user_id_from_token(
330 title, token
331 )
332 if isinstance(usr_id, Response) is True:
333 return usr_id
334 user_profile: List[Dict[str]] = self.runtime_data_initialised.database_link.get_data_from_table(
335 table=CONST.TAB_ACCOUNTS,
336 column="*",
337 where=f"id='{usr_id}'",
338 )
339 self.disp.log_debug(f"User profile = {user_profile}", title)
340 if user_profile == self.error or len(user_profile) == 0:
341 return self.runtime_data_initialised.boilerplate_responses_initialised.user_not_found(title, token)
342 data: List[str] = [
343 body_username,
344 body_email,
345 self.password_handling_initialised.hash_password(body_password),
346 user_profile[0]["method"],
347 user_profile[0]["favicon"],
348 str(user_profile[0]["admin"])
349 ]
350 status = self.runtime_data_initialised.boilerplate_non_http_initialised.update_user_data(
351 title, usr_id, data
352 )
353 if isinstance(status, Response) is True:
354 return status
355 data = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
356 title=title,
357 message="The account information has been updated.",
358 resp="success",
359 token=token,
360 error=False
361 )
362 return HCI.success(content=data, content_type=CONST.CONTENT_TYPE, headers=self.runtime_data_initialised.json_header)
363
364 async def patch_user(self, request: Request) -> Response:
365 """_summary_
366 Endpoint allowing the user to update it's account data.
367
368 Args:
369 request (Request): _description_
370
371 Returns:
372 Response: _description_
373 """
374 title = "Patch user"
375 token: str = self.runtime_data_initialised.boilerplate_incoming_initialised.get_token_if_present(
376 request
377 )
378 token_valid: bool = self.runtime_data_initialised.boilerplate_non_http_initialised.is_token_correct(
379 token
380 )
381 self.disp.log_debug(f"token = {token}, valid = {token_valid}", title)
382 if token_valid is False:
383 return self.runtime_data_initialised.boilerplate_responses_initialised.unauthorized(title, token)
384 request_body = await self.runtime_data_initialised.boilerplate_incoming_initialised.get_body(request)
385 self.disp.log_debug(f"Request body: {request_body}", title)
386 body_username: str = request_body.get("username")
387 body_email: str = request_body.get("email")
388 body_password: str = request_body.get("password")
389 usr_id = self.runtime_data_initialised.boilerplate_non_http_initialised.get_user_id_from_token(
390 title, token
391 )
392 if isinstance(usr_id, Response) is True:
393 return usr_id
394 user_profile: List[Dict[str]] = self.runtime_data_initialised.database_link.get_data_from_table(
395 table=CONST.TAB_ACCOUNTS,
396 column="*",
397 where=f"id='{usr_id}'",
398 )
399 self.disp.log_debug(f"User profile = {user_profile}", title)
400 if user_profile == self.error or len(user_profile) == 0:
401 return self.runtime_data_initialised.boilerplate_responses_initialised.user_not_found(title, token)
402 email: str = user_profile[0]["email"]
403 username: str = user_profile[0]["username"]
404 password: str = user_profile[0]["password"]
405 msg = f"body_username = {body_username}, body_email = {body_email}, "
406 msg += f"body_password = {body_password}, email = {email}, "
407 msg += f"username = {username}, password = {password}"
408 self.disp.log_debug(msg, title)
409 if body_username is not None:
410 username = body_username
411 self.disp.log_debug(f"username is now: {username}", title)
412 if body_email is not None:
413 email = body_email
414 self.disp.log_debug(f"email is now: {email}", title)
415 if body_password is not None:
416 password = self.password_handling_initialised.hash_password(
417 body_password
418 )
419 self.disp.log_debug(f"password is now: {password}", title)
420 data: List[str] = [
421 username, email, password,
422 user_profile[0]["method"], user_profile[0]["favicon"],
423 str(user_profile[0]["admin"])
424 ]
425 status = self.runtime_data_initialised.boilerplate_non_http_initialised.update_user_data(
426 title, usr_id, data
427 )
428 if isinstance(status, Response) is True:
429 return status
430 data = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
431 title=title,
432 message="The account information has been updated.",
433 resp="success",
434 token=token,
435 error=False
436 )
437 return HCI.success(content=data, content_type=CONST.CONTENT_TYPE, headers=self.runtime_data_initialised.json_header)
438
439 async def get_user(self, request: Request) -> Response:
440 """_summary_
441 Endpoint allowing the user to get it's account data.
442
443 Args:
444 request (Request): _description_
445
446 Returns:
447 Response: _description_
448 """
449 title = "Get user"
450 token: str = self.runtime_data_initialised.boilerplate_incoming_initialised.get_token_if_present(
451 request
452 )
453 token_valid: bool = self.runtime_data_initialised.boilerplate_non_http_initialised.is_token_correct(
454 token
455 )
456 self.disp.log_debug(f"token = {token}, valid = {token_valid}", title)
457 if token_valid is False:
458 return self.runtime_data_initialised.boilerplate_responses_initialised.unauthorized(title, token)
459 usr_id = self.runtime_data_initialised.boilerplate_non_http_initialised.get_user_id_from_token(
460 title, token
461 )
462 self.disp.log_debug(f"user_id = {usr_id}", title)
463 if isinstance(usr_id, Response) is True:
464 return usr_id
465 user_profile: List[Dict[str]] = self.runtime_data_initialised.database_link.get_data_from_table(
466 table=CONST.TAB_ACCOUNTS,
467 column="*",
468 where=f"id='{usr_id}'",
469 )
470 self.disp.log_debug(f"User profile = {user_profile}", title)
471 if user_profile == self.error or len(user_profile) == 0:
472 return self.runtime_data_initialised.boilerplate_responses_initialised.user_not_found(title, token)
473 new_profile = user_profile[0]
474 for i in CONST.USER_INFO_BANNED:
475 if i in new_profile:
476 new_profile.pop(i)
477 if CONST.USER_INFO_ADMIN_NODE in new_profile:
478 new_profile[CONST.USER_INFO_ADMIN_NODE] = bool(
479 new_profile[CONST.USER_INFO_ADMIN_NODE]
480 )
481 data = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
482 title=title,
483 message=new_profile,
484 resp="success",
485 token=token,
486 error=False
487 )
488 return HCI.success(content=data, content_type=CONST.CONTENT_TYPE, headers=self.runtime_data_initialised.json_header)
489
490 async def delete_user(self, request: Request) -> Response:
491 """_summary_
492 Endpoint allowing the user to delete it's account.
493
494 Args:
495 request (Request): _description_
496
497 Returns:
498 Response: _description_
499 """
500 title = "Delete user"
501 token: str = self.runtime_data_initialised.boilerplate_incoming_initialised.get_token_if_present(
502 request
503 )
504 token_valid: bool = self.runtime_data_initialised.boilerplate_non_http_initialised.is_token_correct(
505 token
506 )
507 self.disp.log_debug(f"token = {token}, valid = {token_valid}", title)
508 if token_valid is False:
509 return self.runtime_data_initialised.boilerplate_responses_initialised.unauthorized(title, token)
510 usr_id = self.runtime_data_initialised.boilerplate_non_http_initialised.get_user_id_from_token(
511 title, token
512 )
513 self.disp.log_debug(f"user_id = {usr_id}", title)
514 if isinstance(usr_id, Response) is True:
515 return usr_id
516 user_profile: List[Dict[str]] = self.runtime_data_initialised.database_link.get_data_from_table(
517 table=CONST.TAB_ACCOUNTS,
518 column="*",
519 where=f"id='{usr_id}'",
520 )
521 self.disp.log_debug(f"User profile = {user_profile}", title)
522 if user_profile == self.error or len(user_profile) == 0:
523 return self.runtime_data_initialised.boilerplate_responses_initialised.user_not_found(title, token)
524 tables_of_interest = [
525 CONST.TAB_USER_SERVICES, CONST.TAB_ACTIONS,
526 CONST.TAB_CONNECTIONS, CONST.TAB_ACTIVE_OAUTHS
527 ]
528 removal_status = self.runtime_data_initialised.boilerplate_non_http_initialised.remove_user_from_tables(
529 f"user_id={usr_id}", tables_of_interest
530 )
531 if isinstance(removal_status, int) or self.error in list(removal_status.values()):
532 return self.runtime_data_initialised.boilerplate_responses_initialised.internal_server_error(title, token)
533 status = self.runtime_data_initialised.database_link.remove_data_from_table(
534 CONST.TAB_ACCOUNTS, f"id={usr_id}"
535 )
536 if status == self.error:
537 return self.runtime_data_initialised.boilerplate_responses_initialised.internal_server_error(title, token)
538 data = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
539 title=title,
540 message="The account has successfully been deleted.",
541 resp="success",
542 token=token,
543 error=False
544 )
545 return HCI.success(content=data, content_type=CONST.CONTENT_TYPE, headers=self.runtime_data_initialised.json_header)
546
547 async def put_user_favicon(self, request: Request) -> Response:
548 """_summary_
549 Endpoint allowing the user to update it's favicon.
550
551 Args:
552 request (Request): _description_
553
554 Returns:
555 Response: _description_
556 """
557
558 async def delete_user_favicon(self, request: Request) -> Response:
559 """_summary_
560 Endpoint allowing the user to delete it's favicon.
561
562 Args:
563 request (Request): _description_
564
565 Returns:
566 Response: _description_
567 """
568
569 async def post_logout(self, request: Request) -> Response:
570 """_summary_
571 The endpoint allowing a user to log out of the server.
572
573 Returns:
574 Response: _description_: The data to send back to the user as a response.
575 """
576 title = "Logout"
577 token: str = self.runtime_data_initialised.boilerplate_incoming_initialised.get_token_if_present(
578 request
579 )
580 token_valid: bool = self.runtime_data_initialised.boilerplate_non_http_initialised.is_token_correct(
581 token
582 )
583 self.disp.log_debug(f"token = {token}, valid = {token_valid}", title)
584 if token_valid is False:
585 return self.runtime_data_initialised.boilerplate_responses_initialised.unauthorized(title, token)
586 response = self.runtime_data_initialised.database_link.remove_data_from_table(
587 CONST.TAB_CONNECTIONS,
588 f"token='{token}'"
589 )
590 if response == self.error:
591 return self.runtime_data_initialised.boilerplate_responses_initialised.internal_server_error(title)
592 data = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
593 title=title,
594 message="You have successfully logged out...",
595 resp="success",
596 token=token,
597 error=False
598 )
599 return HCI.success(content=data, content_type=CONST.CONTENT_TYPE, headers=self.runtime_data_initialised.json_header)
600
601 async def get_user_id(self, request: Request) -> Response:
602 """_summary_
603 This is an endpoint that will allow the user to query it's id.
604
605 Args:
606 request (Request): _description_
607
608 Returns:
609 Response: _description_
610 """
611 title = "Get user id"
612 token: str = self.runtime_data_initialised.boilerplate_incoming_initialised.get_token_if_present(
613 request
614 )
615 token_valid: bool = self.runtime_data_initialised.boilerplate_non_http_initialised.is_token_correct(
616 token
617 )
618 self.disp.log_debug(f"token = {token}, valid = {token_valid}", title)
619 if token_valid is False:
620 return self.runtime_data_initialised.boilerplate_responses_initialised.unauthorized(title, token)
621 usr_id = self.runtime_data_initialised.boilerplate_non_http_initialised.get_user_id_from_token(
622 title, token
623 )
624 self.disp.log_debug(f"user_id = {usr_id}", title)
625 if isinstance(usr_id, Response) is True:
626 return usr_id
627 data = self.runtime_data_initialised.boilerplate_responses_initialised.build_response_body(
628 title=title,
629 message=f"Your id is {usr_id}",
630 resp=usr_id,
631 token=token,
632 error=False
633 )
634 return HCI.success(content=data, content_type=CONST.CONTENT_TYPE, headers=self.runtime_data_initialised.json_header)
None __init__(self, RuntimeData runtime_data, int error=84, int success=0, bool debug=False)