Pular para o conteúdo

Criar Sistema de Login

Criar layout da página de login

  • criar rota de login (página raiz)

alt text

  • criar LoginController
php artisan make:controller LoginController
  • criar o método index

alt text

  • criar diretório login dentro da pasta resources/views, arquivo index.blade.php

  • criar layout login dentro da pasta resources/views/layout, arquivo login.blade.php

  • após configurar o layout, incluindo a diretiva @yield no arquivo login.blade.php, incluído extends e section no arquivo index.blade.php

alt text

alt text

Validar usuário e senha no login

  • receber os dados do formulário e validar e-mail e senha do usuário

  • criar rota para validação de login

alt text

  • implementar as mensagens de validação no arquivo LoginRequest e na controller LoginController

alt text

alt text

  • OBS: como estou usando model Usuario.php ao invés de User.php (padrão do laravel), ao tentar validar usuario e senha com Auth, obtive o erro abaixo

alt text

  • para resolver o erro, necessário ajustar o arquivo config/auth.php

alt text

alt text

  • foi configurado na controller para manter os dados no formulário em caso de erro, conforme imagem abaixo. Porém, para que os dados sejam mantidos no formulário, necessário acrescentar {{ old('nome_da_coluna') }} nos atributos necessários dentro do form

alt text

alt text

  • implementar a validação de login

alt text

  • OBS: ao utilizar a validação de login com Auth (dentro do método loginProcess), ao tentar logar não era possível ter a validação por conta da tabela e informações de Usuário estar em pt-br. Precisei retornar tudo para o inglês (nome tabela, colunas, model, controller etc) para funcionar… ☹️

  • No dia seguinte, consegui retornar para pt-br configurando conforme imagens abaixo

alt text

alt text

  • é possível incluir rota logout (sair) do tipo post. Caso seja definido como post, necessário implementar um formulário do tipo post no botão “Sair”. No curso, será tratado como tipo get

alt text

  • incluir método destroy em LoginController

alt text

  • ajustar os botões que possuem o link de sair e incluir a rota para deslogar (layouts/admin.blade.php)

  • incluir na view o nome do usuário logado

alt text

alt text

Usar middleware para criar rota pública e restrita

  • middlewares são por padrão executados antes das rotas. Dessa forma os middlewares validam se a rota que tentamos acessar precisa de autenticação

  • para restringir rotas, envolver as rotas privadas/restritas dentro de um grupo middleware no arquivo web.php, especificando que essas rotas necessitam de autenticação

alt text

  • no arquivo app/Http/Middleware/Authenticate.php, especificar qual rota será redirecionado caso tente acessar uma rota sem estar autenticado/logado

  • rota padrão -> route(‘login’), alterado para -> route(‘login.index’)

alt text

  • Obs Laravel 11:

alt text

Cadastrar usuário na página login

  • criar rotas

alt text

  • criar métodos na controller

  • criar view (login/create.blade.php)

  • criar arquivo request para validações (app/Http/Requests/LoginUserRequest.php)

Criar visualizar e editar perfil

  • criar rotas restritas para o perfil

  • criar controller com os métodos definidos para as rotas

  • criar o arquivo de request (PerfilRequest)

  • criar as views

  • ajustar os links de href para acessar o Perfil (layouts/admin.blade.php)

Criar formulário recuperar senha

  • OBS: criado uma variável (debug_form) no arquivo config/app.php e inserida no arquivo env. Variável de debug dos formulários, para ignorar type email (o type email html valida automaticamente e-mails válidos), requireds etc..

  • criar rota get

  • criar controller

  • configurar o href do link “Esqueceu senha” no arquivo login.index

  • criar o arquivo forgotPassword na pasta login (login.forgotPassword)

  • criar rota post

  • como salvar no bd uma chave e enviar e-mail com o link para o usuário

  • incluir try catch na controller RecuperarSenhaController, conforme imagem abaixo

alt text

  • no momento, ao tentar recuperar senha irá cair no catch gerando erro abaixo

alt text

alt text

  • necessário criar uma rota password.reset conforme imagem do log

  • necessário configurar variáveis de e-mail no arquivo .env - (utilizado mailtrap.io para testes)

alt text

alt text

  • comando para configurar layout de e-mail recuperar senha
php artisan vendor:publish --tag=laravel-mail

alt text

  • todos os arquivos podem ser personalizados dentro da pasta resources/views/vendor/mail

  • na aula, iremos alterar o conteúdo de header.blade.php (carregar uma imagem, ao invés de carregar a variavel APP_NAME do arquivo .env)

  • ao clicar no botão Recuperar da página forgotPassword, alterar a mensagem do botão de “Recuperar” para “Recuperando”

alt text

  • alterar link disponibilizado para recuperar senha
de: http://127.0.0.1:8000/?token=1bc1dc888a60d4c456b610dad1d58eed4fd5ba792abc72ab3aa56c305d3ab4f4&email=gabriel%40zemuner.com.br
para: http://127.0.0.1:8000/recuperar-senha/1bc1dc888a60d4c456b610dad1d58eed4fd5ba792abc72ab3aa56c305d3ab4f4&email=gabriel%40zemuner.com.br
  • alteração acima é realizada no arquivo providers/AuthServiceProvider.php

alt text

  • com a variável APP_URL do arquivo .env setada como localhost (APP_URL=http://localhost), o link para recuperar senha traz essa informação. Ao alterar o APP_URL para o ip do servidor (APP_URL=http://127.0.0.1:8000), ao clicar em “Modificar Senha”, é carregada uma página (no momento página não existe) conforme imagem abaixo

alt text

alt text

  • criar nova rota e página que será carregada ao clicar em “Modificar Senha”

  • criar método showResetPassword na controller RecuperarSenhaController

alt text

Criar formulário atualizar senha

  • criar a view atualizar senha (login/resetPassword)

  • criar a rota post para receber os dados do formulário

alt text

  • criar método submitResetPassword (seguindo validate da documentação laravel)

alt text

alt text