Skip to content

Commit a30b6e9

Browse files
committed
tweaking auth
1 parent 445482f commit a30b6e9

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

demo/auth.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ async def profile(user: Annotated[User | None, Depends(get_user)]) -> list[AnyCo
9090
@router.post('/logout', response_model=FastUI, response_model_exclude_none=True)
9191
async def logout_form_post(user: Annotated[User | None, Depends(get_user)]) -> list[AnyComponent]:
9292
if user is not None:
93-
await user_db.save_user(user)
93+
await user_db.delete_user(user)
9494
return [c.FireEvent(event=AuthEvent(token=False, url='/auth/login'))]
9595

9696

@@ -118,6 +118,9 @@ async def get_user(self, token: str) -> User | None:
118118
return op_user
119119

120120
async def save_user(self, user: User) -> None:
121+
for k, v in list(self._users.items()):
122+
if v.email == user.email:
123+
del self._users[k]
121124
self._users[user.token] = user
122125
self._sync()
123126

@@ -126,15 +129,15 @@ async def delete_user(self, user: User) -> None:
126129
self._sync()
127130

128131
async def count(self):
132+
self._sync()
129133
return len(self._users)
130134

131135
def _sync(self) -> None:
132136
# keep only the most recently active 1000 users
133-
if len(self._users) > 1000:
134-
active = datetime.now() - timedelta(minutes=30)
135-
users = [u for u in self._users.values() if u.last_active > active]
136-
users.sort(key=lambda u: u.last_active, reverse=True)
137-
self._users = {u.token: u for u in users[:1000]}
137+
active = datetime.now() - timedelta(minutes=30)
138+
users = [u for u in self._users.values() if u.last_active > active]
139+
users.sort(key=lambda u: u.last_active, reverse=True)
140+
self._users = {u.token: u for u in users[:1000]}
138141

139142
# save
140143
self._file.write_bytes(self._ta.dump_json(list(self._users.values()), indent=2))

0 commit comments

Comments
 (0)