Passport

https://laravel.com/docs/5.7/passport
https://tutsforweb.com/laravel-passport-create-rest-api-with-authentication/
laravel 5.5 
  composer require laravel/passport=~4.0

1. composer require laravel/passport
2. php artisan migrate
3. php artisan passport:install
1. User.php
use Laravel\Passport\HasApiTokens;
class User{
use HasApiTokens, ...
}

2. AuthServiceProvider.php
  use Laravel\Passport\Passport;
  boot(){
      Passport::routes();
  }

3. config\auth.php
  'api' => [
    'driver' => 'passport',
    'provider' => 'users'
  ]
Route::post('login', 'PassportController@login');
Route::post('register', 'PassportController@register');
Route::middleware('auth:api')->get('user', 'PassportController@details');

public function register(Request $request)
{
    $this->validate($request, [
        'name' => 'required|min:3',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:6',
    ]);
 
    $user = User::create([
        'name' => $request->name,
        'email' => $request->email,
        'password' => bcrypt($request->password)
    ]);
 
    $token = $user->createToken('TutsForWeb')->accessToken;
 
    return response()->json(['token' => $token], 200);
}

public function login(Request $request)
{
    $credentials = [
        'email' => $request->email,
        'password' => $request->password
    ];
 
    if (auth()->attempt($credentials)) {
        $token = auth()->user()->createToken('TutsForWeb')->accessToken;
        return response()->json(['token' => $token], 200);
    } else {
        return response()->json(['error' => 'UnAuthorised'], 401);
    }
}

public function details()
{
    return response()->json(['user' => auth()->user()], 200);
}


public function logout(Request $request){
    $logged_out = false;		
    if (auth()->check())
        $logged_out = auth()->user()->token()->revoke();	
    $data = ['logged_out' => $logged_out];
    return response()->json($data, 200);
}