less topicstat
This commit is contained in:
@@ -9,7 +9,7 @@ from starlette.requests import HTTPConnection
|
||||
from auth.credentials import AuthCredentials, AuthUser
|
||||
from auth.jwtcodec import JWTCodec
|
||||
from auth.tokenstorage import TokenStorage
|
||||
from base.exceptions import InvalidToken
|
||||
from base.exceptions import ExpiredToken, InvalidToken
|
||||
from services.auth.users import UserStorage
|
||||
from settings import SESSION_TOKEN_HEADER
|
||||
|
||||
@@ -33,12 +33,12 @@ class SessionToken:
|
||||
except ExpiredSignatureError:
|
||||
payload = JWTCodec.decode(token, verify_exp=False)
|
||||
if not await cls.get(payload.user_id, token):
|
||||
raise InvalidToken("Session token has expired, please try again")
|
||||
raise ExpiredToken("Token signature has expired, please try again")
|
||||
except DecodeError as e:
|
||||
raise InvalidToken("token format error") from e
|
||||
else:
|
||||
if not await cls.get(payload.user_id, token):
|
||||
raise InvalidToken("Session token has expired, please login again")
|
||||
raise ExpiredToken("Session token has expired, please login again")
|
||||
return payload
|
||||
|
||||
@classmethod
|
||||
|
@@ -8,10 +8,8 @@ from settings import JWT_ALGORITHM, JWT_SECRET_KEY
|
||||
class JWTCodec:
|
||||
@staticmethod
|
||||
def encode(user: AuthInput, exp: datetime) -> str:
|
||||
issued = int(datetime.now().timestamp())
|
||||
print('[auth.jwtcodec] issued at %r' % issued)
|
||||
expires = int(exp.timestamp())
|
||||
print('[auth.jwtcodec] expires at %r' % expires)
|
||||
expires = int(exp.timestamp() * 1000)
|
||||
issued = int(datetime.now().timestamp() * 1000)
|
||||
payload = {
|
||||
"user_id": user.id,
|
||||
"username": user.email or user.phone,
|
||||
@@ -42,8 +40,10 @@ class JWTCodec:
|
||||
print('[auth.jwtcodec] debug payload %r' % r)
|
||||
return r
|
||||
except jwt.InvalidIssuedAtError:
|
||||
print('[auth.jwtcodec] invalid issued at: %r' % r)
|
||||
raise ExpiredToken('check token issued time')
|
||||
except jwt.ExpiredSignatureError:
|
||||
print('[auth.jwtcodec] expired signature %r' % r)
|
||||
raise ExpiredToken('check token lifetime')
|
||||
except jwt.InvalidTokenError:
|
||||
raise InvalidToken('token is not valid')
|
||||
|
@@ -42,7 +42,7 @@ class TokenStorage:
|
||||
payload = JWTCodec.decode(token)
|
||||
except: # noqa
|
||||
pass
|
||||
finally:
|
||||
else:
|
||||
await redis.execute("DEL", f"{payload.user_id}-{token}")
|
||||
return True
|
||||
|
||||
|
Reference in New Issue
Block a user