Fala turma! Estou enfrentando um problema na autenticação de usuários no meu sistema Laravel. Estou utilizando a Facade Auth para fazer o login, mas mesmo com as credenciais corretas, o sistema sempre retorna "usuário inválido". A situação é a seguinte:
Eu estou usando a função Auth::attempt() para validar o login, e na documentação do Laravel diz que ao usar essa função, não é necessário fazer o hash da senha manualmente, pois o próprio Laravel cuida disso internamente. Porém, apesar de seguir esse procedimento, a autenticação não está funcionando e a resposta continua sendo que o usuário é inválido.
Alguns detalhes:
Estou utilizando campos personalizados no banco, como email_Usuario e senha_Usuario, ao invés dos padrões email e password. A chave primária da tabela de usuários também não é o padrão id, mas um campo personalizado chamado CD_Usuario.
Problema atual: Mesmo com as credenciais corretas (email e senha), o Laravel retorna sempre "usuário inválido". E como o Auth::attempt() deve lidar automaticamente com o hash da senha, não entendi por que isso não está funcionando corretamente.
Alguém já passou por algo semelhante ou tem alguma dica de como posso corrigir isso? Segue os códigos abaixo:
Arquivo: UsuarioController.php (cria o usuário):
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class UsuarioController extends Controller
{
//Index
public function index()
{
return view('cadastrar.cadastrar-usuario');
}
//Store (cadastra novo usuário no banco de dados)
public function create(Request $request)
{
$data = $request->except('_token');
$data['senha_Usuario'] = Hash::make($data['senha_Usuario']);
$usuario = User::create($data);
if($usuario){
return to_route('login');
}
return redirect()->back()->withErrors('Erro ao cadatrar o usuário');
}
}
Arquivo LoginController.php (Realiza o login):
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class LoginController extends Controller
{
//Retorna a view página de login
public function index()
{
return view('paginas.login');
}
//Cria o login de fato
public function store(Request $request)
{
if (Auth::attempt($request->only('email_Usuario', 'senha_Usuario'))) {
return redirect()->back()->withErrors('Credenciáis Inválidas');
}
return to_route('auth');
}
//Destoi o login do usuário
public function destroy()
{
Auth::logout();
return to_route('login');
}
}
Arquivo User.php (Model do usuário):
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
protected $connection = 'mysql'; //Educa_Gestor
protected $table = 'usuarios';
protected $primaryKey = 'CD_Usuario';
public $timestamps = false;
protected $fillable = [
'CD_Usuario',
'nome_Usuario',
'email_Usuario',
'escolaridade_Usuario',
'senha_Usuario',
'nivel_Usuario',
'DT_Nasc_Usuario',
'usuario_Cadastrador',
'DT_Cadastro_Usuario',
'status_Usuario',
];
}
**Rotas: **
//Cadastrar Usuário
Route::get('/cadastrar', [UsuarioController::class, 'index'])->name('cadastrar.index');
Route::post('/cadastrar', [UsuarioController::class, 'create'])->name('cadastrar.create');
//Login e Logout
Route::get('/login', [LoginController::class, 'index'])->name('login');
Route::post('/login', [LoginController::class, 'store'])->name('login.store');
Lembrando que o usuário está cadastrado corretamente e a senha é criptografada com sucesso.