Bom dia galera. estou com um problema, sou novo na parte de programação.
Estou tentando fazer com que o login faça a autentificação do email e senha do usuario.
Procurei em varios locais mas nao acho a solução:
<?php
namespace App\Http\Controllers;
use App\Models\Usuario;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class Usuarios extends Controller
{
public function cadastrar()
{
$usuario = new Usuario(Request::all());
$usuario->save();
return redirect('/')->with('mensagem_sucesso', 'Cadastro efetuado com sucesso!');
}
public function index()
{
return view('layout/cadastrousuario');
}
public function indexlogin()
{
return view('layout/login');
}
public function logar(Request $request)
{
if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) {
dd('voce esta logado');
} else {
dd('voce nao esta logado');
}
}
}
Esse é meu controller, que tem que fazer na função logar, ir no banco de dados e verificar se email e senha são iguais os que estão no banco de dados. porem ele vai direto pro "else", ele nao esta passando pelo "if", mesmo eu acabando de fazer um cadastro e colocando email e senha identicos.
Estou usando o Debeaver, logo nao preciso colocar a conexão com o banco de dados pois ela ja se encontra no ".env".
Dica geral: ao postar código, formate-o com o botão </>, pra que fique mais legível pra gente. Seu código será exibido mais ou menos assim:
<?php
namespace App\Http\Controllers;
use App\Models\Usuario;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class Usuarios extends Controller {
public function cadastrar() {
$usuario = new Usuario(Request::all());
$usuario->save();
return redirect('/')->with('mensagem_sucesso', 'Cadastro efetuado com sucesso!');
}
public function index() {
return view('layout/cadastrousuario');
}
public function indexlogin() {
return view('layout/login');
}
public function logar(Request $request) {
if (Auth::attempt(['email' => $request->email, 'password' => $request->password]))
{
dd('voce esta logado');
}
else
{
dd('voce nao esta logado');
}
}
}
Supondo que a conexão funciona (como você citou - e imagino que testou também), recomendo você tentar isolar o problema, começando por passar valores válidos (existentes no banco) para a função Auth::attempt, pra ver se a verificação dela realmente está funcionando. Algo como:
public function logar(Request $request) {
$emailEPassword = array('email' => 'string com email de usuario valido do seu banco de dados', 'password' => 'senha referente ao emai _valido');
if (Auth::attempt($emailEPassword ))
{
dd('voce esta logado');
}
else
{
dd('voce nao esta logado');
}
}
Feito isso, o passo seguinte é verificar se $request tem os dados que você precisa, na posição que precisa (em vez de um sub array, por exemplo), fazendo um dump da variável:
public function logar(Request $request) {
var_dump($request);
// resto do código
Por fim, verifique se seu código está disparando exceções ou afins (se os logs do php estiverem habilitados).
Com essas informações, possivelmente ficará mais claro qual o problema real.
Abraço.
foi mal pelo codigo embolado, ja fazia tempo que nao postava, ai foi meio que na correria…
então, não deu certo, fazendo o mesmo que vc passou…
mas sera que tem algum outro modo de autenticar?
ou sera que é algo em algum arquivo que modifiquei?
Não deu certo é muito vago. Qual parte não funcionou? O que o método
Auth::attempt retorna? Consegue pegar esse retorno? Dá alguma exceção? Apareceu algo no log?
Você disse que a conexão funciona, mas testou isso realmente (ex: fazendo um select simples)?
Tenha em mente que a gente não tem seu código completo aqui, nem seu ambiente configurado, só as informações que você passar. Então você precisa analisar seu código, testar as possíveis causas e nos fornecer o máximo de informações que puder. Fazer vários testes e ir removendo da listas de testes as coisas que funcionam é parte do processo de aprendizado e desenvolvimento.
Abraço.