UNI12345 commited on
Commit
0b15d14
·
1 Parent(s): db1baa2

Configure robust guest_login retrieval and database field defaults

Browse files
Files changed (1) hide show
  1. app/routers/auth.py +42 -7
app/routers/auth.py CHANGED
@@ -92,7 +92,13 @@ async def update_mode(body: schemas.ModeUpdate, current_user: models.User = Depe
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:
@@ -105,17 +111,46 @@ async def guest_login(response: Response, db: AsyncSession = Depends(get_db)):
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",
 
92
 
93
  @router.post("/guest", response_model=schemas.UserResponse)
94
  async def guest_login(response: Response, db: AsyncSession = Depends(get_db)):
95
+ # Look up by either UID or email to prevent uniqueness conflicts if rows already exist
96
+ result = await db.execute(
97
+ select(models.User).where(
98
+ (models.User.firebase_uid == "guest_uid_123") |
99
+ (models.User.email == "guest@archvise.com")
100
+ )
101
+ )
102
  user = result.scalars().first()
103
 
104
  if not user:
 
111
  display_mode="founder",
112
  credits_remaining=999999,
113
  credits_reset_at=datetime.utcnow() + timedelta(days=30),
114
+ github_connected=False,
115
+ total_audits=0,
116
+ total_designs=0,
117
  is_active=True
118
  )
119
  db.add(user)
120
  await db.commit()
121
  await db.refresh(user)
122
+ else:
123
+ # Guarantee all non-nullable schema fields are populated on the existing guest user
124
+ dirty = False
125
+ if user.firebase_uid != "guest_uid_123":
126
+ user.firebase_uid = "guest_uid_123"
127
+ dirty = True
128
+ if user.email != "guest@archvise.com":
129
+ user.email = "guest@archvise.com"
130
+ dirty = True
131
+ if user.plan != "pro":
132
+ user.plan = "pro"
133
+ dirty = True
134
+ if user.credits_remaining != 999999:
135
+ user.credits_remaining = 999999
136
+ dirty = True
137
+ if user.github_connected is None:
138
+ user.github_connected = False
139
+ dirty = True
140
+ if user.total_audits is None:
141
+ user.total_audits = 0
142
+ dirty = True
143
+ if user.total_designs is None:
144
+ user.total_designs = 0
145
+ dirty = True
146
+ if user.is_active is None:
147
+ user.is_active = True
148
+ dirty = True
149
+
150
+ if dirty:
151
+ db.add(user)
152
+ await db.commit()
153
+ await db.refresh(user)
154
 
155
  response.set_cookie(
156
  key="archvise_session",