Criar Sistema de Login
Criar layout da página de login
- criar rota de login (página raiz)

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

-
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


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

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


- 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

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


- 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


- implementar a validação de login

-
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


Criar link sair do sistema
- é 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

- incluir método destroy em LoginController

-
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


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

-
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’)

- Obs Laravel 11:

Cadastrar usuário na página login
- criar rotas

-
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
Enviar e-mail com o link recuperar senha
-
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

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


-
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)


- comando para configurar layout de e-mail recuperar senha
php artisan vendor:publish --tag=laravel-mail
-
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”

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

- 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


-
criar nova rota e página que será carregada ao clicar em “Modificar Senha”
-
criar método showResetPassword na controller RecuperarSenhaController
![]()
Criar formulário atualizar senha
-
criar a view atualizar senha (login/resetPassword)
-
criar a rota post para receber os dados do formulário
![]()
- criar método submitResetPassword (seguindo validate da documentação laravel)

