Create Rest API with Laravel Passport Authentication
In this blog, we will learn how to setup passport on project and use for api.
In this example, we will work with basic installations.
Now Lets Start.
First create project using command '.
composer create-project laravel/laravel projectname
Now enter into project and install passport package using follwing commands.
cd project name /**********install package********/ composer require laravel/passport
Now place service provider in config/app.php file
config/app.php 'providers' =>[ Laravel\Passport\PassportServiceProvider::class, ],
Now run migrations and install passport into project
php artisan migrate php artisan passport:install
Make Configuration app/User.php
namespace App\Providers; use Laravel\Passport\Passport; use Illuminate\Support\Facades\Gate; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; class AuthServiceProvider extends ServiceProvider { protected $policies = [ 'App\Model' => 'App\Policies\ModelPolicy', ]; public function boot() { $this->registerPolicies(); Passport::routes(); }
Make Configuration config/auth.php
return [ 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ], }
Create route for api
Route::post('login_user', 'API_FOLDER\UserController@login_user'); Route::post('register_user', 'API_FOLDER\UserController@register_user'); Route::group(['middleware' => 'auth:api'], function(){ Route::post('user_details', 'API_FOLDER\UserController@user_details'); });
Create controller
namespace App\Http\Controllers\API; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\User; use Illuminate\Support\Facades\Auth; use Validator; class UserController extends Controller { public function login_user() { $arr=[]; if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){ $user = Auth::user(); $arr['data']['token'] = $user->createToken('ANYSTRING')-> accessToken; $arr['status']=1; $arr['message']='Login Sucessfully'; return response()->json($arr, 200); } else{ $arr['status']=0; $arr['message']='Login fails'; $arr['data']=NULL; return response()->json(['error'=>'Unauthorised'], 200); } } public function register_user(Request $request) { $arr=[]; $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', 'password' => 'required', ]); if ($validator->fails()) { return response()->json(['error'=>'Try again'], 200); } $input = $request->all(); $input['password'] = bcrypt($input['password']); $user = User::create($input); $arr['status'] = 1; $arr['message'] = 'Success'; $arr['data']['token'] = $user->createToken('ANYSTRING')-> accessToken; $arr['data']['name'] = $user->name; return response()->json($arr, 200); } public function user_details() { $arr=[]; $user = Auth::user(); $arr['status']=1; $arr['message']='Success'; $arr['data']=$user; return response()->json($arr, 200); } }