Source code for sagace.auth.application.authentication_use_case
"""
--------------------------------------------------------------------------------------------------------------------
Descrição:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Este módulo implementa a autenticação de usuários no sistema SAGACE, utilizando um repositório de autenticação
para verificação das credenciais e armazenamento do token de acesso.
Principais funcionalidades:
- Autenticação de usuários por meio de credenciais.
- Armazenamento do token JWT retornado pela API.
- Interface para diferentes métodos de armazenamento de tokens.
Classes:
- ``AuthenticateUser``: Classe responsável por gerenciar a autenticação de usuários.
- ``AuthenticationRepository``: Interface abstrata para repositórios de autenticação.
Exemplo de uso:
.. code-block:: python
from sagace.auth import AuthenticateUser
from sagace.domain import AuthenticationRepository
from sagace.core import TokenStorage
repo = AuthenticationRepository()
token_storage = TokenStorage()
auth = AuthenticateUser(repo)
token = auth.execute("https://api.sagace.online", "usuario", "senha", "app_token", token_storage)
print(token)
Autor:
Diego Yosiura
Última Atualização:
27/02/2025 15:31
Criado em:
27/02/2025 15:31
Copyright:
(c) Ampere Consultoria Ltda
Projeto Original:
sagace-v2-package
IDE:
PyCharm
"""
from ..domain import AuthenticationRepository
from ...core import Token, TokenStorage
[docs]
class AuthenticateUser:
"""
Caso de uso para autenticação de usuário.
Esta classe gerencia a autenticação de usuários utilizando um repositório de autenticação.
Princípios aplicados:
- **Single Responsibility (S - SOLID)**: A classe tem a única responsabilidade de gerenciar o processo de autenticação.
- **Dependency Inversion (D - SOLID)**: Depende de uma abstração (``AuthenticationRepository``), permitindo diferentes
implementações do repositório sem modificar esta classe.
:param auth_repository: Repositório responsável pela autenticação.
:type auth_repository: AuthenticationRepository
"""
def __init__(self, auth_repository: AuthenticationRepository):
"""
Inicializa a classe AuthenticateUser.
:param auth_repository: Instância do repositório de autenticação.
:type auth_repository: AuthenticationRepository
"""
self.auth_repository = auth_repository
[docs]
def execute(self, base_url: str, username: str, password: str, application_token: str, token_storage: TokenStorage) -> Token:
"""
Executa a autenticação e retorna o token JWT.
:param base_url: URL base da API de autenticação.
:type base_url: str
:param username: Nome de usuário para autenticação.
:type username: str
:param password: Senha do usuário.
:type password: str
:param application_token: Token da aplicação para autenticação.
:type application_token: str
:param token_storage: Objeto responsável por armazenar o token JWT.
:type token_storage: TokenStorage
:return: Token JWT retornado pela API.
:rtype: Token
"""
# Chama o repositório de autenticação para validar as credenciais do usuário
# Segue o princípio de Inversão de Dependência (D - SOLID), pois trabalha com uma abstração
return self.auth_repository.authenticate(base_url, username, password, application_token, token_storage)