unique token for each separate logins

This commit is contained in:
Maxim Devaev
2024-01-08 23:50:38 +02:00
parent f355c38fe1
commit 0676a3cee9
2 changed files with 29 additions and 16 deletions

View File

@@ -117,9 +117,6 @@ class AuthManager:
assert user
assert self.__enabled
if (await self.authorize(user, passwd)):
for (token, token_user) in self.__tokens.items():
if user == token_user:
return token
token = self.__make_new_token()
self.__tokens[token] = user
get_logger().info("Logged in user %r", user)
@@ -136,9 +133,14 @@ class AuthManager:
def logout(self, token: str) -> None:
assert self.__enabled
user = self.__tokens.pop(token, "")
if user:
get_logger().info("Logged out user %r", user)
if token in self.__tokens:
user = self.__tokens[token]
count = 0
for (r_token, r_user) in list(self.__tokens.items()):
if r_user == user:
count += 1
del self.__tokens[r_token]
get_logger().info("Logged out user %r (%d)", user, count)
def check(self, token: str) -> (str | None):
assert self.__enabled