- laravel new jwt
- cd jwt
- composer require tymon/jwt-auth
- php artisan vendor:publish
- pilih yang = Tymon\JWTAuth\Providers\LaravelServiceProvider
- php artisan jwt:secret
- edit file app/models/user.php
- menjadi<?phpnamespace App\Models;use Illuminate\Contracts\Auth\MustVerifyEmail;use Illuminate\Database\Eloquent\Factories\HasFactory;use Illuminate\Foundation\Auth\User as Authenticatable;use Illuminate\Notifications\Notifiable;class User extends Authenticatable{use HasFactory, Notifiable;protected $fillable = ['name','email','password',];protected $hidden = ['password','remember_token',];protected $casts = ['email_verified_at' => 'datetime',];}
- <?phpnamespace App\Models;use Illuminate\Contracts\Auth\MustVerifyEmail;use Illuminate\Database\Eloquent\Factories\HasFactory;use Illuminate\Foundation\Auth\User as Authenticatable;use Illuminate\Notifications\Notifiable;use Tymon\JWTAuth\Contracts\JWTSubject;class User extends Authenticatable implements JWTSubject{use HasFactory, Notifiable;protected $fillable = ['name','email','password',];protected $hidden = ['password','remember_token',];protected $casts = ['email_verified_at' => 'datetime',];public function getJWTIdentifier(){return $this->getKey();}public function getJWTCustomClaims(){return [];}}
- php artisan make:controller Api/Auth/LoginController -i
- ubah file app/Http/Controllers/Api/Auth/LoginController.php
- menjadi<?phpnamespace App\Http\Controllers\Auth;use App\Http\Controllers\Controller;use Illuminate\Http\Request;class LoginController extends Controller{/*** Handle the incoming request.** @param \Illuminate\Http\Request $request* @return \Illuminate\Http\Response*/public function __invoke(Request $request){//}}
- <?phpnamespace App\Http\Controllers\Auth;use App\Http\Controllers\Controller;use Illuminate\Http\Request;class LoginController extends Controller{public function __invoke(Request $request){$request->validate(['email' => 'required','password' => 'required']);$credentials = request(['email', 'password']);if (!$token = auth('api')->attempt($credentials)) {return response()->json(['status' => '0','data' => 'login','result' => ['message' => 'Phone atau Password Salah',]], 401);}$data = ['status' => '1','data' => 'login','result' => ['token' => $token]];return response()->json($data,200);}}
tambah route di api.php
Route::post('login','Api/Auth/LoginController');
mengedit app/config/auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
menjadi
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
],
cek postman
localhost:8000/api/Login
localhost:8000/api/users
Tidak ada komentar:
Posting Komentar