Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cadastro e Login #1

Closed
michelereginabora opened this issue Sep 12, 2024 · 2 comments · Fixed by #2
Closed

Cadastro e Login #1

michelereginabora opened this issue Sep 12, 2024 · 2 comments · Fixed by #2
Assignees
Labels
enhancement New feature or request

Comments

@michelereginabora
Copy link
Owner

michelereginabora commented Sep 12, 2024

  1. Configuração inicial do projeto

    • Criar projeto Spring Boot com dependências necessárias
    • Configurar conexão com o banco de dados PostgreSQL
  2. Implementação das entidades

    • Criar entidade Usuario (campos comuns)
  3. Camada de casos de uso (regras de negócio)

    • Implementar caso de uso de cadastro de usuário
    • Implementar caso de uso de login
  4. Camada de repositórios

    • Criar interface de repositório para Usuario
    • Implementar repositório usando Spring Data JPA
  5. Camada de controllers (API REST)

    • Implementar controller para cadastro de usuário
    • Implementar controller para login
  6. Implementação de validações

    • Criar validadores para campos obrigatórios
    • Implementar validação de formato de e-mail
    • Implementar validação de formato de telefone
  7. Implementação de segurança

    • Configurar Spring Security
    • Implementar autenticação baseada em token JWT
    • Implementar proteção de rotas
  8. Tratamento de erros e exceções

    • Criar handler para exceções personalizadas
    • Implementar respostas de erro padronizadas
  9. Documentação da API

    • Configurar Swagger para documentação automática da API
@michelereginabora michelereginabora moved this to Backlog in Adote na Web Sep 12, 2024
@michelereginabora michelereginabora added the enhancement New feature or request label Sep 12, 2024
@michelereginabora michelereginabora pinned this issue Sep 12, 2024
@michelereginabora
Copy link
Owner Author

michelereginabora commented Sep 12, 2024

Image


Legenda da Modelagem UML:

  1. Entidades Principais:

    • User: Representa o usuário principal do sistema.
    • ProfileType: Enum que define os tipos de perfil disponíveis.
    • Location: Armazena informações detalhadas de localização.
    • NGOProfile: Perfil específico para ONGs.
    • IndependentProtectorProfile: Perfil para protetores independentes.
    • AdopterProfile: Perfil para adotantes.
    • CommonUserProfile: Perfil para usuários comuns.
  2. Atributos-chave:

    • id: Identificador único para cada entidade.
    • email, phone, name, password: Informações básicas do usuário.
    • profileType: Define o tipo de perfil ativo do usuário.
    • isAdmin: Indica se o usuário tem privilégios de administrador.
    • creationDate: Data de criação da conta.
    • profilePicture: URL ou caminho para a foto de perfil (opcional).
  3. Métodos importantes:

    • register(): Realiza o registro do usuário.
    • authenticate(): Autentica o usuário.
    • resetPassword(): Permite a redefinição de senha.
    • updateProfile(): Atualiza as informações do perfil.
    • updateProfilePicture(): Atualiza especificamente a foto de perfil.
  4. Relações:

    • User tem exatamente um ProfileType.
    • User está associado a um dos perfis específicos (NGO, IndependentProtector, Adopter, ou CommonUser), dependendo do ProfileType.
    • NGOProfile, IndependentProtectorProfile, e AdopterProfile estão associados a uma Location.
  5. Notas importantes:

    • Embora o diagrama mostre relações "1 para 1" entre User e todos os tipos de perfil, na implementação, um User terá apenas um perfil ativo baseado no profileType.
    • O CommonUserProfile é o perfil padrão se nenhum outro for especificado durante o registro.
    • A foto de perfil é opcional e pode ser nula ou vazia.
    • Location é obrigatória para NGO, IndependentProtector e Adopter, mas não para CommonUser.
  6. Campos específicos por tipo de perfil:

    • NGOProfile e IndependentProtectorProfile:
      • description: Descrição da ONG ou do protetor.
      • communicationChannels: Lista de canais de comunicação.
      • financialAidMethods: Métodos para receber auxílio financeiro.
    • NGOProfile: cnpj (obrigatório)
    • IndependentProtectorProfile: cpf (obrigatório)
    • AdopterProfile: adoptionPreferences (preferências de adoção)
    • CommonUserProfile: additionalInfo (informações adicionais opcionais)
  7. Implementação:

    • O sistema deve garantir que apenas um perfil esteja ativo por usuário, correspondendo ao profileType.
    • A lógica de negócios deve tratar o CommonUserProfile como padrão se nenhum outro for escolhido.
    • Campos opcionais (como profilePicture) devem ser tratados adequadamente na interface e no banco de dados.
  8. Considerações de banco de dados:

    • Cada tipo de perfil (NGO, IndependentProtector, Adopter, CommonUser) pode ser implementado como uma tabela separada, todas relacionadas à tabela principal de usuários.
    • A tabela de usuários deve incluir uma coluna para o tipo de perfil (profileType) para fácil referência.

Relações:
a. Associação (linha contínua com seta aberta):

Entre User e ProfileType: Indica que um User está associado a um ProfileType.
Entre User e os perfis específicos (NGOProfile, IndependentProtectorProfile, AdopterProfile, CommonUserProfile): Representa a associação entre um usuário e seu perfil específico.
Entre os perfis específicos (NGO, IndependentProtector, Adopter) e Location: Indica que estes perfis estão associados a uma localização.

b. Enumeração (indicado pelo estereótipo <>):

ProfileType: Representa um conjunto fixo de valores para os tipos de perfil.

c. Multiplicidade:

"1" em todas as relações: Indica que cada entidade está relacionada a exatamente uma instância da outra entidade.

Esta modelagem proporciona uma estrutura flexível para gerenciar diferentes tipos de usuários, mantendo informações comuns centralizadas e permitindo extensões específicas para cada tipo de perfil.

@michelereginabora michelereginabora moved this from Ready to In progress in Adote na Web Sep 23, 2024
@michelereginabora michelereginabora self-assigned this Sep 23, 2024
@michelereginabora
Copy link
Owner Author

Implementado JWT e role de usuário
As rotas foram organizadas em Públicas, Autenticadas e de Admin

@michelereginabora michelereginabora linked a pull request Oct 12, 2024 that will close this issue
@github-project-automation github-project-automation bot moved this from In progress to Done in Adote na Web Oct 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

1 participant