Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Autenticação com Auth

Opa, estou fazendo a autenticação com a Facade Auth, e ao fazer o login sempre da usuário invalido.

Na documentação do Laravel fala que ao usar o Auth::attempt não precisa fazer o hash da senha pois ele faz automaticamente, porem nada da certo.

Segue o código:

arquivo UsersController.php (Cria o usuario)

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;

class UsersController extends Controller
{
    public function create()
    {
        return view('users.create');
    }

    public function store(Request $request)
    {
        // pega todos os campos do formulario exceto o token
        $data = $request->except(['_token']);

        // gera um hash da senha para salvar no banco com o Facade Hash::make
        $data['password'] = Hash::make($data['password']);

        // cria o usuario no banco 
        $user = User::create($data);

        // Faz o login dele
        Auth::login($user);

        return to_route('series.index');
    }
}

arquivo LoginController.php (Faz o login)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

use function GuzzleHttp\Promise\all;

class LoginController extends Controller
{
    public function index()
    {   
        return view('login.index');
    }

    public function store(Request $request)
    {
        // dd($request->only(['email', 'password']));
        if(!Auth::attempt($request->only(['email', 'password'])));
        {
            return redirect()->back()->withErrors(['Usuario ou senha inválidos'])->onlyInput('email');
        }

        return to_route('series.index');
    }
}

Rotas:

Route::get('/login', [LoginController::class, 'index'])->name('login');
Route::post('/login', [LoginController::class, 'store'])->name('sign');

Route::get('/register', [UsersController::class, 'create'])->name('users.create');
Route::post('/register', [UsersController::class, 'store'])->name('users.store');
2 respostas
solução!

Oii, Bruno!

Você colocou um ponto e vírgula no final da linha if(!Auth::attempt($request->only(['email', 'password'])));, isso faz com que a condição seja encerrada ali e o bloco de código abaixo seja executado independente do resultado da condição.

Espero ter ajudado e bons estudos!

Nossa... não tinha reparado nesse detalhe kkkkk

Era isso mesmo, valew Vinicius!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software