Criando A Entidade User No Phoenix: Guia Completo

by Marco 50 views

📋 Descrição

Fala, galera! Vamos mergulhar na criação da entidade User no nosso projeto Phoenix. Essa tarefa é crucial, pois é a base para gerenciar os usuários do nosso sistema no contexto Admin dentro do apps/core. Usaremos o bom e velho mix phx.gen.html para gerar tudo o que precisamos: contexto, schema, controller e views. É como ter um assistente que faz a maior parte do trabalho pesado por nós! A ideia é ter uma estrutura pronta e funcional para interagir com os dados dos usuários, como seus logins, tipos, status, etc.

Com essa entidade User pronta, podemos começar a construir as funcionalidades de login, gerenciamento de perfis e controle de acesso. Imagine só, ter o controle total sobre quem pode fazer o quê no seu sistema!

Por que isso é importante?

Criar a entidade User é o pontapé inicial para qualquer sistema que precise autenticar e autorizar usuários. Sem ela, seria como construir uma casa sem alicerces. Não importa o quão bonitas sejam as paredes, se a base não for sólida, tudo desmorona.

Neste guia, vamos te mostrar o passo a passo para gerar essa entidade, configurar as rotas e garantir que tudo funcione perfeitamente. Prepare-se para aprender, codar e, acima de tudo, se divertir! Afinal, programar não precisa ser chato, né?

🎯 Objetivos

Nossos objetivos são claros como água: gerar tudo o que precisamos para interagir com a entidade User no nosso projeto Phoenix. Vamos gerar o contexto, o schema, o controller e as views para a entidade User. Além disso, precisamos adicionar as rotas geradas no arquivo router.ex para que possamos acessar e manipular os dados dos usuários através do navegador ou de outras ferramentas.

Detalhando os objetivos

  • Gerar o contexto, schema, controller e views: O contexto é como um organizador, que agrupa as funções relacionadas à entidade User. O schema define a estrutura dos dados, o controller lida com as requisições HTTP e as views exibem os dados no formato desejado. É como ter uma equipe completa trabalhando para você!
  • Adicionar as rotas geradas no arquivo router.ex: As rotas são os caminhos que nos permitem acessar as diferentes funcionalidades da entidade User, como criar, ler, atualizar e deletar usuários. Sem as rotas, seria impossível interagir com os dados!

Ao final deste processo, teremos uma entidade User completamente funcional, pronta para ser usada no nosso sistema.

📝 Passos da Tarefa

Chegou a hora de botar a mão na massa! Vamos executar os comandos necessários e configurar tudo para que a entidade User funcione perfeitamente. Siga cada passo com atenção e, se precisar, volte e revise. A prática leva à perfeição!

Passo 1: Gerando a entidade User

O primeiro passo é executar o comando mágico que gera a entidade User com todos os campos que precisamos. Abra o terminal, navegue até o diretório do seu projeto Phoenix e digite o seguinte comando:

mix phx.gen.html Admin User users op_id:string user_type:string status:string username:string password:string otp:string
  • mix phx.gen.html: Este é o comando que gera o contexto, schema, controller e views.
  • Admin: O contexto em que a entidade User será criada.
  • User: O nome da entidade (e também do schema).
  • users: O nome da tabela no banco de dados.
  • op_id:string user_type:string status:string username:string password:string otp:string: Os campos da entidade e seus tipos de dados.

Após executar este comando, o Phoenix vai gerar um monte de arquivos para você. É como um passe de mágica! Agora, você tem a base para interagir com a entidade User.

Passo 2: Configurando as rotas

Com a entidade User gerada, o próximo passo é configurar as rotas para que possamos acessar as suas funcionalidades. Para isso, abra o arquivo router.ex, que fica no diretório lib/<seu_projeto_nome>_web/router.ex. Dentro do bloco pipeline :browser, adicione a seguinte linha:

resources "/users", UserController

Isso vai criar as rotas para as operações CRUD (Create, Read, Update, Delete) da entidade User. Agora, você pode acessar as funcionalidades da entidade através das seguintes rotas:

  • /users: Lista todos os usuários.
  • /users/new: Exibe o formulário para criar um novo usuário.
  • /users/:id: Exibe os detalhes de um usuário específico.
  • /users/:id/edit: Exibe o formulário para editar um usuário existente.
  • /users/:id: Atualiza um usuário existente (requisição PUT).
  • /users: Cria um novo usuário (requisição POST).
  • /users/:id: Deleta um usuário (requisição DELETE).

Dica: Para visualizar as rotas criadas, você pode usar o comando mix phx.routes.

🗂️ Campos da Entidade

Vamos detalhar os campos da entidade User. Cada um deles tem uma função específica e é essencial para o funcionamento do nosso sistema. Entender cada campo é crucial para customizar a entidade da forma que você precisa. Vamos lá!

  • op_id: string - ID do operador. Este campo é usado para identificar o operador responsável por uma ação específica. Imagine que você tem um sistema de suporte técnico. O op_id pode ser o ID do atendente que resolveu o problema. É uma forma de rastrear e auditar as ações no sistema.
  • user_type: string - Tipo de usuário. Define o tipo de usuário (ex: administrador, cliente, vendedor). Isso é essencial para controlar o acesso às funcionalidades do sistema. Um administrador pode ter acesso a tudo, enquanto um cliente só pode ver as suas informações.
  • status: string - Status do usuário. Indica o status do usuário (ex: ativo, inativo, bloqueado). É importante para controlar o acesso e a disponibilidade dos usuários no sistema. Por exemplo, um usuário inativo não poderá fazer login.
  • username: string - Nome de usuário. É o nome que o usuário usa para fazer login no sistema. Precisa ser único para cada usuário. Uma boa prática é validar a unicidade do username no momento da criação do usuário.
  • password: string - Senha. A senha do usuário. É crucial armazená-la de forma segura, usando técnicas de hashing (como o bcrypt) para proteger contra ataques.
  • otp: string - One-time password (OTP). Um código de segurança de uso único, usado para autenticação de dois fatores (2FA). É uma camada extra de segurança para proteger as contas dos usuários. Imagine que um hacker consiga a sua senha. Com a 2FA, ele ainda precisará do OTP para acessar a sua conta.

Resultado Esperado

Após seguir todos os passos, o resultado esperado é um projeto Phoenix com a entidade User criada e funcionando perfeitamente. Vamos conferir os detalhes:

  • A entidade User criada com os campos definidos: A entidade User deve estar presente no seu projeto, com todos os campos definidos no passo 1. Você deve ser capaz de visualizar o schema, o controller e as views geradas.
  • Acessível via rotas no projeto Phoenix: As rotas configuradas no router.ex devem estar funcionando corretamente. Você deve ser capaz de acessar as funcionalidades da entidade User através das rotas definidas (ex: listar usuários, criar um novo usuário, etc.).
  • O projeto compila sem erros: Ao compilar o projeto (ex: mix phx.server), não deve haver erros. Se houver algum erro, revise os passos e verifique se você seguiu tudo corretamente.

Se você chegar até aqui e tudo estiver funcionando, parabéns! Você concluiu a tarefa com sucesso e criou a base para gerenciar os usuários do seu sistema. Agora, você pode começar a customizar a entidade User de acordo com as suas necessidades, adicionar validações, implementar a autenticação e muito mais.

🏷️ Labels

As labels são tags que ajudam a categorizar e organizar as tarefas do projeto. Elas facilitam a busca e o rastreamento das tarefas. Vamos entender cada uma delas:

  • entity: Indica que a tarefa está relacionada à criação ou modificação de uma entidade.
  • admin: Indica que a tarefa está relacionada ao contexto administrativo do sistema.
  • core: Indica que a tarefa está relacionada ao núcleo do sistema.
  • high-priority: Indica que a tarefa tem alta prioridade.

Essas labels são úteis para você e sua equipe manterem o controle sobre o andamento do projeto.