sábado, 27 de setembro de 2014

Campos customizados para autenticação com Laravel 4.2

Olá galera,

O Laravel, por padrão, utiliza os campos username e password para autenticação. Dessa forma, nós podemos utilizar o método Auth::attempt sem que seja necessário fazer nenhuma alteração.

Agora supondo que a nossa tabela utilize campos como email e senha, quais alterações precisam ser feitas para que o método Auth::attempt passe a funcionar?

A primeira delas deve ser feita no seu model de usuário, onde é implementado o método getAuthPassword com o meu atributo.

    public function getAuthPassword()
    {
       return $this->senha;
    }
  

Abaixo eu implementei um método, no controller de usuário, chamado validate que será chamado quando um formulário de login foi submetido.

    public function validate()
    {
       $user = array(
            'email' => Input::get('email'),
            'password' => Input::get('senha'),
            'ativo' => 1
        );

        if (Auth::attempt($user, false)) {
            echo 'Logado com sucesso!';
        } else {
            echo 'Não foi possível efetuar o login.';
        }
    }
  

Note que o segredo está no campo da senha. A chave que eu utilizo no array tem que ser exatamente password. Os demais parâmetros terão que ser o nome dos nossos campos na tabela de usuários. Inclusive podem ser passados vários atributos para serem validados como foi o caso do ativo.

Fica aí a dica. Grande abraço

Nenhum comentário:

Postar um comentário