Autenticação Laravel
Autenticação Laravel
Bom dia, estou com um problema em implementar uma autenticação, pois eu tenho uma tabela no banco de usuários pronta, e com usuários cadastrados. Queria trocar a tabela padrão do laravel por essa. Além disso minha tabela as senhas não são criptografadas, a criptografia do laravel também deveria ser desativada. Sei que não é seguro, mas essas senhas não podem ser criptografadas pois são usadas em um sistema.
Primeiramente, para trocar a tabela de usuários é simples, vai no Model que representa a tabela de usuário, por padrão o do Laravel é User que fica em app/User.php Sobrescreva a propriedade $table com o nome da tabela.
Na classe User coloque:
protected $table = "nomeDaTabela"
Segundo, para autenticação, eu sugiro da seguinte maneira:
No seu método de login, que realiza a autenticação, você realiza a comparação de dados normal:
$user = \App\User::where('email', $request->email)->where('password', $request->password)->first();
if(!$user){
// não autenticado
return redirect()->back()->withErrors(['message' => 'Usuário e/ou senha inválidos']);
}
// Se ele encontrar o registro pode utilizar o helper que representa a Facade de autenticação para autenticar o usuário no sistema
auth()->loginUsingId($user->id);
// Depois daqui você pode redirecionar para alguma rota autenticada.
Link para referência: https://laravel.com/docs/5.5/authentication
Uma observação quanto a recuperação de senha. Por padrão, o Laravel executa o bcrypt em seu fluxo de alteração de senha. Recomendo sobrescrever o método que realiza essa atualização.
Caso o nome da sua tabela seja diferente de users você deve criar outro model para trabalhar com ela.
Se for users em outro formato, por ex: USERS, basta você ir no App\User e adicionar a propriedade protected $table = "nome_da_sua_tablea", assim como o @davidrtpereira disse.
Caso você precise criar outro model você precisa além de criá-lo, ir em config/auth.php e em providers.users.model sobreescrever com o seu novo model.
Ai temos outro problema, por padrão o Laravel usa a coluna email da tabela para autenticar os usuários, caso sua coluna seja outra, por ex: username, e você queira utilizar o LoginController já existente no Laravel, você precisa implementar um método username no LoginController, no qual ele deve retornar o nome da coluna que você irá usar na sua tabela de autenticação:
public function username()
{
return 'username';
}
Lembrando que isso apenas se você for utilizar o `LoginController, caso você queira autenticar de maneira manual, você pode seguir o tutorial da documentação que vai funcionar perfeitamente