UNI12345 commited on
Commit
e8aaec2
·
1 Parent(s): dca84d4

Implement guest login bypass endpoint and mock credentials validation

Browse files
Files changed (2) hide show
  1. app/routers/auth.py +39 -0
  2. app/utils/security.py +13 -5
app/routers/auth.py CHANGED
@@ -90,6 +90,45 @@ async def update_mode(body: schemas.ModeUpdate, current_user: models.User = Depe
90
  await db.refresh(current_user)
91
  return current_user
92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  @router.post("/logout")
94
  async def logout(response: Response):
95
  # Clear the session cookie
 
90
  await db.refresh(current_user)
91
  return current_user
92
 
93
+ @router.post("/guest", response_model=schemas.UserResponse)
94
+ async def guest_login(response: Response, db: AsyncSession = Depends(get_db)):
95
+ result = await db.execute(select(models.User).where(models.User.firebase_uid == "guest_uid_123"))
96
+ user = result.scalars().first()
97
+
98
+ if not user:
99
+ user = models.User(
100
+ firebase_uid="guest_uid_123",
101
+ email="guest@archvise.com",
102
+ name="Archvise Guest",
103
+ avatar_url=None,
104
+ plan="pro",
105
+ display_mode="founder",
106
+ credits_remaining=999999,
107
+ credits_reset_at=datetime.utcnow() + timedelta(days=30),
108
+ is_active=True
109
+ )
110
+ db.add(user)
111
+ await db.commit()
112
+ await db.refresh(user)
113
+ elif user.plan != "pro" or user.credits_remaining != 999999:
114
+ user.plan = "pro"
115
+ user.credits_remaining = 999999
116
+ db.add(user)
117
+ await db.commit()
118
+ await db.refresh(user)
119
+
120
+ response.set_cookie(
121
+ key="archvise_session",
122
+ value="guest_token_session_2026",
123
+ max_age=5 * 24 * 60 * 60, # 5 days
124
+ httponly=True,
125
+ secure=not settings.DEBUG,
126
+ samesite="lax",
127
+ path="/"
128
+ )
129
+
130
+ return user
131
+
132
  @router.post("/logout")
133
  async def logout(response: Response):
134
  # Clear the session cookie
app/utils/security.py CHANGED
@@ -15,8 +15,16 @@ async def get_current_user(request: Request, db: AsyncSession = Depends(get_db))
15
  )
16
 
17
  try:
18
- # Verify Firebase Session Cookie
19
- decoded_claims = verify_session_cookie(session_cookie, check_revoked=True)
 
 
 
 
 
 
 
 
20
  except Exception as e:
21
  raise HTTPException(
22
  status_code=status.HTTP_401_UNAUTHORIZED,
@@ -39,9 +47,9 @@ async def get_current_user(request: Request, db: AsyncSession = Depends(get_db))
39
  email=email,
40
  name=name,
41
  avatar_url=avatar_url,
42
- plan="free",
43
  display_mode="founder",
44
- credits_remaining=2,
45
  credits_reset_at=datetime.utcnow() + timedelta(days=30),
46
  is_active=True
47
  )
@@ -51,7 +59,7 @@ async def get_current_user(request: Request, db: AsyncSession = Depends(get_db))
51
 
52
  # Check if credits need to be reset
53
  if user.credits_reset_at and datetime.utcnow() > user.credits_reset_at:
54
- user.credits_remaining = 2 if user.plan == "free" else (5 if user.plan == "starter" else 999999)
55
  user.credits_reset_at = datetime.utcnow() + timedelta(days=30)
56
  db.add(user)
57
  await db.commit()
 
15
  )
16
 
17
  try:
18
+ if session_cookie == "guest_token_session_2026":
19
+ decoded_claims = {
20
+ "uid": "guest_uid_123",
21
+ "email": "guest@archvise.com",
22
+ "name": "Archvise Guest",
23
+ "picture": None
24
+ }
25
+ else:
26
+ # Verify Firebase Session Cookie
27
+ decoded_claims = verify_session_cookie(session_cookie, check_revoked=True)
28
  except Exception as e:
29
  raise HTTPException(
30
  status_code=status.HTTP_401_UNAUTHORIZED,
 
47
  email=email,
48
  name=name,
49
  avatar_url=avatar_url,
50
+ plan="pro",
51
  display_mode="founder",
52
+ credits_remaining=999999,
53
  credits_reset_at=datetime.utcnow() + timedelta(days=30),
54
  is_active=True
55
  )
 
59
 
60
  # Check if credits need to be reset
61
  if user.credits_reset_at and datetime.utcnow() > user.credits_reset_at:
62
+ user.credits_remaining = 999999
63
  user.credits_reset_at = datetime.utcnow() + timedelta(days=30)
64
  db.add(user)
65
  await db.commit()