Source code for sagace.auth.domain.authentication_repository
"""
--------------------------------------------------------------------------------------------------------------------
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 ...core import Token, TokenStorage
from abc import ABC, abstractmethod
[docs]
class AuthenticationRepository(ABC):
"""
Interface abstrata para repositórios de autenticação.
Esta interface define o contrato para qualquer classe que implemente um repositório
de autenticação, garantindo a padronização do método de autenticação.
Princípios aplicados:
- **Dependency Inversion (D - SOLID)**: Depende de abstração para desacoplamento, garantindo flexibilidade
na implementação sem afetar os consumidores dessa interface.
"""
[docs]
@abstractmethod
def authenticate(self, base_url: str, username: str, password: str, application_token: str,
token_storage: TokenStorage) -> Token:
"""
Autentica um usuário e retorna um 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
"""
pass