add company domain, models, route

This commit is contained in:
2024-04-08 14:32:50 +00:00
parent 0f5a98b273
commit efdacfa0ce
12 changed files with 131 additions and 6 deletions

View File

@@ -6,12 +6,15 @@ from jose.jwt import decode, encode
from api.application.protocols.date_time import DateTimeProvider
from api.application.protocols.jwt import JwtTokenProcessor
from api.domain.user.error import UserInvalidCredentialsError
from api.domain.user.model import UserId
from api.infrastructure.auth.jwt_settings import JwtSettings
class JoseJwtTokenProcessor(JwtTokenProcessor):
def __init__(self, jwt_options: JwtSettings, date_time_provider: DateTimeProvider) -> None:
def __init__(
self, jwt_options: JwtSettings, date_time_provider: DateTimeProvider
) -> None:
self.jwt_options = jwt_options
self.date_time_provider = date_time_provider
@@ -29,11 +32,15 @@ class JoseJwtTokenProcessor(JwtTokenProcessor):
def validate_token(self, token: str) -> UserId | None:
try:
payload = decode(token, self.jwt_options.secret, [self.jwt_options.algorithm])
payload = decode(
token, self.jwt_options.secret, [self.jwt_options.algorithm]
)
return UserId(UUID(payload["sub"]))
except (JWTError, ValueError, KeyError):
return None
def refresh_token(self, token: str) -> str:
return ""
user = self.validate_token(token)
if user is None:
raise UserInvalidCredentialsError("invalid token")
return self.generate_token(user)