summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authoraltaf-creator <dev@altafcreator.com>2025-12-29 21:24:16 +0800
committeraltaf-creator <dev@altafcreator.com>2025-12-29 21:24:16 +0800
commit16c3515d1ad083b3c2c9ec273fe58577aa16e091 (patch)
treefd202efeb08917a2c6dcae4fbe8d37acdbda72f8 /backend
parent3f655971b2c090bc92cdeec7240480e282760434 (diff)
backend hopefully full implementation of new push subscription thing
Diffstat (limited to 'backend')
-rw-r--r--backend/main.py12
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