Estou com um problema de autenticação em uma aplicação Laravel e espero que alguém possa me ajudar a identificar o erro.
Contexto: Estou criando um sistema de login onde, no banco de dados, as colunas de email e senha são email_Usuario e senha_Usuario, respectivamente (em vez de email e password como padrão no Laravel). O modelo de User foi modificado para refletir essas colunas personalizadas.
Modelo User (com colunas personalizadas):
<?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 $table = 'usuarios';
protected $fillable = [
/*'name',*/
/*'email',
'password',*/
'email_Usuario',
'senha_Usuario',
];
protected $hidden = [
'senha_Usuario',
'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
//Retorna a senha do usuário
public function getAuthPassword()
{
return $this->senha_Usuario;
}
}
**Controller LoginController: **
<?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)
{
// Validação dos dados
$request->validate([
'email_Usuario' => 'required|email',
'senha_Usuario' => 'required',
]);
// Credenciais
$credenciais = $request->only('email_Usuario', 'senha_Usuario');
dd(Auth::attempt($credenciais));
//Programa Interropido pelo 'dd' e sempre retorna falso, mesmo existindo um registro com email_Usuario e senha_Usuario existentes
if(Auth::attempt($credenciais)){
return redirect()->route('home');
}
// Senha incorreta ou usuário não encontrado
return redirect()->back()->withErrors(['login' => 'Credenciais inválidas.']);
}
//Destoi o login do usuário
public function destroy()
{
Auth::logout();
return to_route('login');
}
}
Problema:
Quando tento usar Auth::attempt() com senha_Usuario e email_Usuario, a autenticação retorna false.
Tentei comparar a senha diretamente com md5() e fiz a comparação de forma manual, mas o problema persiste.
Já configurei o método getAuthPassword() para retornar a senha correta, mas não estou conseguindo fazer a comparação com a senha armazenada corretamente.
O que eu tentei:
Modificar o modelo User para usar a coluna senha_Usuario.
Usar md5() para comparar a senha fornecida com a senha armazenada no banco de dados (embora o Laravel use bcrypt() por padrão). Usar Auth::attempt($credenciais) sem sucesso.
Gostaria de saber se alguém já passou por um problema similar ou tem alguma ideia de como resolver a autenticação utilizando colunas personalizadas para email e senha.
Agradeço desde já pela ajuda!