Cat Feeder  1.0.0
The Cat feeder project
Loading...
Searching...
No Matches
admin.py
Go to the documentation of this file.
1r"""
2# +==== BEGIN CatFeeder =================+
3# LOGO:
4# ..............(..../\
5# ...............)..(.')
6# ..............(../..)
7# ...............\‍(__)|
8# Inspired by Joan Stark
9# source https://www.asciiart.eu/
10# animals/cats
11# /STOP
12# PROJECT: CatFeeder
13# FILE: admin.py
14# CREATION DATE: 04-01-2026
15# LAST Modified: 8:43:1 22-01-2026
16# DESCRIPTION:
17# This is the backend server in charge of making the actual website work.
18# /STOP
19# COPYRIGHT: (c) Cat Feeder
20# PURPOSE: The endpoints that are only accessible by the administrators of the server.
21# // AR
22# +==== END CatFeeder =================+
23"""
24from typing import TYPE_CHECKING, Union, List, Dict, Any, Optional
25from display_tty import Disp, initialise_logger
26from fastapi import Request, Response
27from ...core import RuntimeManager, RI
28from ...utils import constants as CONST
29from ...http_codes import HCI, HttpDataTypes, HTTP_DEFAULT_TYPE
30from ...favicon import FAV_ERR, favicon_constants as FAV_CONST
31from .. import endpoint_helpers as EP_HELPERS, endpoint_constants as EP_CONST
32
33if TYPE_CHECKING:
34 from ...sql import SQL
35 from ...server_header import ServerHeaders
36 from ...favicon.favicon_admin import FaviconAdmin
37 from ...boilerplates import BoilerplateIncoming, BoilerplateResponses, BoilerplateNonHTTP
38
39
41 """Handle user-related HTTP endpoints.
42
43 The class implements endpoints for authentication, registration,
44 password reset, profile management, email verification and session
45 management used by the CatFeeder backend.
46 """
47
48 disp: Disp = initialise_logger(__qualname__, False)
49
50 def __init__(self, error: int = 84, success: int = 0, debug: bool = False) -> None:
51 """_summary_
52 """
53 # ------------------------ The logging function ------------------------
54 self.disp.update_disp_debug(debug)
55 self.disp.log_debug("Initialising...")
56 # -------------------------- Inherited values --------------------------
57 self.error: int = error
58 self.success: int = success
59 self.debug: bool = debug
60 self.runtime_manager: RuntimeManager = RI
61 # -------------------------- Shared instances --------------------------
62 self.boilerplate_incoming_initialised: "BoilerplateIncoming" = self.runtime_manager.get(
63 "BoilerplateIncoming")
64 self.boilerplate_responses_initialised: "BoilerplateResponses" = self.runtime_manager.get(
65 "BoilerplateResponses")
66 self.boilerplate_non_http_initialised: "BoilerplateNonHTTP" = self.runtime_manager.get(
67 "BoilerplateNonHTTP")
68 self.database_link: "SQL" = self.runtime_manager.get("SQL")
69 self.server_headers_initialised: "ServerHeaders" = self.runtime_manager.get(
70 "ServerHeaders")
71 self.favicon_admin: Optional["FaviconAdmin"] = self.runtime_manager.get_if_exists(
72 "FaviconAdmin", None)
73 self.disp.log_debug("Initialised")
74
75 def _get_admin_token(self, title: str, request: Request) -> Union[Response, str]:
76 """Get the token of the user if they are administrator, otherwise, return the correct http response.
77
78 Args:
79 title (str): The title of the endpoint calling this function.
80 request (Request): The incoming request parameters
81
82 Returns:
83 Union[Response, str]: The response if an error occurred, the token otherwise.
84 """
85 token = self.boilerplate_incoming_initialised.get_token_if_present(
86 request
87 )
88 if not token:
89 return self.boilerplate_responses_initialised.invalid_token(title)
90 if not self.boilerplate_non_http_initialised.is_token_correct(token):
91 return self.boilerplate_responses_initialised.invalid_token(title)
92 if not self.boilerplate_non_http_initialised.is_token_admin(token):
93 return self.boilerplate_responses_initialised.insuffisant_rights(title, token)
94 return token
None __init__(self, int error=84, int success=0, bool debug=False)
Definition admin.py:50
Union[Response, str] _get_admin_token(self, str title, Request request)
Definition admin.py:75