diff options
| author | altaf-creator <dev@altafcreator.com> | 2025-12-29 21:24:16 +0800 |
|---|---|---|
| committer | altaf-creator <dev@altafcreator.com> | 2025-12-29 21:24:16 +0800 |
| commit | 16c3515d1ad083b3c2c9ec273fe58577aa16e091 (patch) | |
| tree | fd202efeb08917a2c6dcae4fbe8d37acdbda72f8 /backend/main.py | |
| parent | 3f655971b2c090bc92cdeec7240480e282760434 (diff) | |
backend hopefully full implementation of new push subscription thing
Diffstat (limited to 'backend/main.py')
| -rw-r--r-- | backend/main.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/backend/main.py b/backend/main.py index fec436b..a507303 100644 --- a/backend/main.py +++ b/backend/main.py @@ -107,7 +107,6 @@ ONESIGNAL_APP_ID = "83901cc7-d964-475a-90ec-9f854df4ba52" class RequestData(BaseModel): duration: int machine_id: str - onesignal_subscription_id: str class InformationRequestData(BaseModel): @@ -260,7 +259,7 @@ restart_terminated_schedules() # eugh. too complex. TODO: refactor perhaps # it's so complex even the linter is complaining @app.post("/start", response_class=PlainTextResponse) -def start_new_timer(data: RequestData, response: fastapi.Response, session_key: Annotated[str | None, fastapi.Cookie()] = None, auth_block: Annotated[str | None, fastapi.Cookie()] = None): +def start_new_timer(data: RequestData, response: fastapi.Response, session_key: Annotated[str | None, fastapi.Cookie()] = None, auth_block: Annotated[str | None, fastapi.Cookie()] = None, subscription_endpoint: Annotated[str | None, fastapi.Cookie()] = None): now = datetime.datetime.now() try: if not session_key: @@ -285,12 +284,17 @@ def start_new_timer(data: RequestData, response: fastapi.Response, session_key: else: authenticate_block(response, machine_id=data.machine_id) + if not subscription_endpoint: + print("user is not subscribed to notif") + response.status_code = fastapi.status = fastapi.status.HTTP_401_UNAUTHORIZED + return "a notification subscription is required to start a timer" + try: print("session key valid", session_key) end_date = now + datetime.timedelta(minutes=(data.duration * 30)) cursor.execute(""" INSERT INTO timers (user_id, start_time, end_time, block, machine, status, subscription_id) - VALUES (?, ?, ?, ?, ?, ?, ?)""", (session_key, now.isoformat(), end_date.isoformat(), block, machine, 'RUNNING', data.onesignal_subscription_id,)) + VALUES (?, ?, ?, ?, ?, ?, ?)""", (session_key, now.isoformat(), end_date.isoformat(), block, machine, 'RUNNING', subscription_endpoint,)) conn.commit() cursor.execute("SELECT * FROM timers WHERE end_time = ?;", (end_date.isoformat(),)) out = cursor.fetchall() @@ -453,5 +457,5 @@ def uri_to_information(data: InformationRequestData, response: fastapi.Response, @app.post("/notif_subscribe") def notif_subscribe(data: notif.PushSubscriptionData, response: fastapi.Response): endpoint = notif.subscribe(data) - response.set_cookie("subscription_endpoint", endpoint) + response.set_cookie("subscription_endpoint", endpoint, domain=".altafcreator.com") response.status_code = fastapi.status.HTTP_200_OK |
