Pessoal se alguém puder me ajudar, eu travei bonito nessa parte, já revisei várias vezes a aula mas não tá rolando.
Esses são os fontes que escrevi baseados na aula:
TokenController.php
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Firebase\JWT\JWT;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class TokenController extends Controller // Extende Controller para ter acesso ao método validate() no $this
{
public function gerarToken (Request $request)
{
// Garante que os dados estão na requisição
$this->validate($request, [
'email' => 'required|email',
'password' => 'required'
]);
// Faz a query e pega o primeiro resultado
$usuario = User::where(['email', $request->email])->first();
if (is_null($usuario) || !Hash::check($request->password, $usuario->password)) {
return response()->json('Usuário ou senha inválidos.', 401);
}
$token = JWT::encode(
['email' => $request->email],
env('JWT_KEY')
);
return [
'access_token' => $token
];
}
}
a migration criar_tabela_usuarios
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CriarTabelaUsuarios extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('usuarios', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('email')->unique();
$table->string('password');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('usuarios');
}
}
A model User.php:
<?php
namespace App\Models;
use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Laravel\Lumen\Auth\Authorizable;
class User extends Model implements AuthenticatableContract, AuthorizableContract
{
use Authenticatable, Authorizable, HasFactory;
protected $table = 'usuarios';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'email',
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
'password',
];
}