Files
shinalokandClaude Sonnet 5 ef2a3ea082 prepare app for public app store distribution
- rebrand from 습관 트래커 to 해빗랩 across templates, manifest, service worker
- add HTTPS redirect middleware for reverse-proxied deployments
- add public landing page (/) and privacy policy page with real data
  handling disclosures
- add in-app account deletion (Apple review requirement)
- add Android TWA Digital Asset Links support (/.well-known/assetlinks.json)
- add SFTP deployment script for the Synology-hosted server

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 13:41:50 +09:00

47 lines
1.4 KiB
Python

from fastapi import APIRouter, Depends, Request
from pydantic import BaseModel
from sqlalchemy.orm import Session
from app.config import settings
from app.database import get_db
from app.models.user import User
from app.schemas.push import PushSubscribeRequest
from app.security import require_login
from app.services import push_service
router = APIRouter(prefix="/api/push", tags=["push"], dependencies=[Depends(require_login)])
class UnsubscribeRequest(BaseModel):
endpoint: str
@router.get("/vapid-public-key")
def get_vapid_public_key():
return {"publicKey": settings.vapid_public_key}
@router.post("/subscribe")
def subscribe(
data: PushSubscribeRequest,
request: Request,
db: Session = Depends(get_db),
current_user: User = Depends(require_login),
):
push_service.save_subscription(db, current_user.id, data, user_agent=request.headers.get("user-agent"))
return {"ok": True}
@router.post("/unsubscribe")
def unsubscribe(
data: UnsubscribeRequest, db: Session = Depends(get_db), current_user: User = Depends(require_login)
):
push_service.delete_subscription(db, data.endpoint)
return {"ok": True}
@router.post("/test")
def send_test(db: Session = Depends(get_db), current_user: User = Depends(require_login)):
sent = push_service.send_to_user(db, current_user.id, title="해빗랩", body="테스트 알림입니다.")
return {"sent": sent}