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';
protected $fillable = [
'email',
];
protected $hidden = [
'password',
];
}
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
{
public function gerarToken(Request $request)
{
// $this->validate($request, [
// 'email' => 'required|email',
// 'password' => 'required'
// ]);
$usuario = User::where('email', $request->email);
if (is_null($usuario) || !Hash::check($request->password, $usuario->password)) {
return response()->json('', 401);
}
$token = JWT::encode(['email' => $request->email], env('JWT_KEY'));
return [
'access_token' => $token,
];
}
}
migration
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CriarTabelaUsuarios extends Migration
{
public function up()
{
Schema::create('usuarios', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('email')->unique();
$table->string('password');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('usuarios');
}
}
DatabaseSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(UsuarioSeeder::class);
}
}
UsuarioSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
class UsuarioSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
\App\Models\User::create([
'email' => 'teste@email',
'password' => Hash::make('senha')
]);
}
}