Skip to content

Simplificar "alesAuth" e "alesUser" no frontend #10

Open
@Maronato

Description

@Maronato

alesAuth e alesUser fazem parte do sistema de autorização que o frontend vai implementar na comunicação com o backend.

Como é agora

Atualmente apenas a autenticação acontece no Auth0, com todo o processo de autorização e permissões vivendo no backend. Isso permite muito mais flexibilidade e controle sobre quais endpoints o usuário tem permissão pra ver e quais roles o usuário tem.

Porém, isso faz com que o frontend tenha essencialmente dois "tipos" de dados de usuário.

Um é o user simples que contém os dados do usuário dentro do Auth0. Esses dados são as coisas que vieram da rede social, os dados do pré-cadastro e as contas que o usuário tem linkadas.

Outro é o alesUser, o usuário que existe no banco de dados do Django. Esse usuário contém os dados dentro do banco, como escola, série, matérias que o aluno faz, etc.

Para um aluno ter um user tudo que ele tem que fazer é clicar em "inscrever-se" na página principal. Quando o Auth0 retorna, o aluno já possui seus dados em user. alesUser é diferente e só existe para usuários que foram até o final do processo de pré-cadastro (veja #8). alesUser também existe para usuários finais que já fizeram a confirmação presencial de cadastro, mas com dados extras (dados de matérias, guardiões, perfil, etc).

Problemas

  • Não está clara a diferença entre o alesUser após pré-cadastro e após confirmação presencial do cadastro (usuários finais).
  • Flow que o frontend usa para pegar esses dados e verificar as permissões é confuso.

Possíveis soluções

Não criar um alesUser até o usuário virar usuário final

Usar uma flag no Auth0 para marcar que o usuário já enviou seu pré-cadastro. Podemos usar a API de pesquisa do Auth0 para filtrar e encontrar o usuário durante o cadastro presencial.
Só criamos o alesUser quando o cadastro presencial for completado e aí passamos todos os dados do formulário para o servidor.

Reconstruir o flow de autorização(alesAuth)

Flow atual é uma série de middlewares do Nuxt que são executados quando a página carrega, injetando vários métodos no this.$auth e coletando os dados do usuário.
Também há um middleware que é executado em cada navegação que procura por uma chave no SFC chamada alesUser que diz se usuários com (ou sem) alesUser podem ver aquela tela.

Simplificar isso com apenas um middleware que também consegue testar permissões e roles do usuário.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfrontendIssues related to the frontend

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions