forum icon indicating copy to clipboard operation
forum copied to clipboard

Autenticação Laravel

Open GeovaneCavalcante opened this issue 7 years ago • 2 comments

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.

GeovaneCavalcante avatar Dec 21 '17 12:12 GeovaneCavalcante

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.

davidrtpereira avatar Dec 21 '17 22:12 davidrtpereira

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

omarkdev avatar Mar 01 '18 11:03 omarkdev