Senin, 07 Desember 2020

Laravel 8 Jwt-Auth

  • 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
  • <?php

    namespace 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',
    ];
    }


     menjadi
  • <?php

    namespace 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
  • <?php

    namespace 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)
    {
    //
    }
    }


     menjadi
  •  
    <?php

    namespace 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

flutter firebase notification