File size: 1,928 Bytes
49dca2b
83d3e07
e068917
49dca2b
ec584cc
 
 
e068917
 
9534137
e068917
a9ad028
 
 
 
 
 
 
 
 
e068917
 
ec584cc
55c4d30
d2bc0ec
 
49dca2b
d2bc0ec
b2c6295
49dca2b
 
a9ad028
21bda7d
49dca2b
a9ad028
 
 
 
 
 
 
ec55133
 
 
 
a9ad028
ec55133
a9ad028
 
 
ec55133
a9ad028
 
49dca2b
 
 
44ce6d8
 
49dca2b
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from fastapi import FastAPI, Request, Response, HTTPException, Cookie
from fastapi.responses import JSONResponse
from fastapi.middleware.cors import CORSMiddleware
from typing import Optional

app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=["https://ancient-time-545042.framer.app"],
    allow_credentials=True,
    allow_methods=["GET", "POST", "OPTIONS"],
    allow_headers=[
        "Content-Type", 
        "Authorization",
        "Access-Control-Allow-Credentials",
        "Access-Control-Allow-Origin",
        "Access-Control-Allow-Headers",
    ],
    expose_headers=["Set-Cookie"]
)

@app.get("/")
def greet_json(request: Request):
    response = JSONResponse(content={
        "Hello": "World!",
        "cookies": request.cookies
    })
    return response

@app.post("/auth")
async def auth(request: Request):
    data = await request.json()
    if data.get("username") == "admin" and data.get("password") == "password":
        # Create response
        response = JSONResponse(
            content={"message": "Authentication successful"},
            status_code=200
        )
        
        # Set cookie with correct parameters for cross-origin
        response.set_cookie(
            key="comfy_session",
            value="dummy_session_value",
            httponly=True,
            secure=True,
            samesite="none",  # Required for cross-origin
            # Don't set domain to allow the cookie to be set on the Framer domain
            max_age=1800,  # 30 minutes
            path="/"
        )
        
        return response
    raise HTTPException(status_code=401, detail="Invalid credentials")

@app.get("/protected")
def protected_route(comfy_session: Optional[str] = Cookie(None)):
    if comfy_session != "dummy_session_value":
        raise HTTPException(status_code=401, detail="Unauthorized")
    return {"message": "Access granted to protected route"}