Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao validar a senha

Hash::check sempre está retornando false.

TokenController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Firebase\JWT\JWT;
use App\User;
use Illuminate\Support\Facades\Hash;

class TokenController extends Controller
{
    public function gerarToken(Request $request)
    {
        $this->validate($request, [
            'email'    => 'required|email',
            'password' => 'required'
        ]);
        $usuario = User::where('email',$request->email)->first();
        //dd($usuario);
        if(is_null($usuario) || !Hash::check($request->password, $usuario->usuario)){
            return response()->json('Usuário ou senha inválidos', 401);
        }

        $token = JWT::encode(['email' => $request->email], env('JWT_KEY'));

        return [
            'access_token' => $token
        ];

    }

}

UsuarioSeeder.php

<?php

use Illuminate\Database\Seeder;
use App\User;
use Illuminate\Support\Facades\Hash;

class UsuarioSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        User::create([
            'email'=> 'teste@email',
            'password'=> Hash::make('senha')
        ]);
    }
}

No Postman estou enviando para "http://localhost:8000/api/login" via POST:

{
    "email" : "teste@email",
    "password": "senha"
}

Porém a resposta é ""Usuário ou senha inválidos";

2 respostas
solução!

Olá, Alan!

Na linha Hash::check($request->password, $usuario->usuario você está validando $usuario->usuario ao invés de validar a senha. Faça a validação com $usuario->password.

Ou seja, mude sua linha para:

if(is_null($usuario) || !Hash::check($request->password, $usuario->password))
{
    ...

É verdade... Que cego q sou. Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software