Download Laravel App
composer create-project --prefer-dist laravel/laravel my-app
C:\xampp\htdocs\laravel>composer create-project --prefer-dist laravel/laravel my-app
Connecting our Database
open .env file root directory.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laraveldb
DB_USERNAME=root
DB_PASSWORD=
Install Laravel Passport https://laravel.com/docs/9.x/passport
composer require laravel/passport
C:\xampp\htdocs\laravel\my-app>composer require laravel/passport
php artisan migrate
C:\xampp\htdocs\laravel\my-app>php artisan migrate
php artisan passport:install
C:\xampp\htdocs\laravel\my-app>php artisan passport:install
Create Controller Files
app/Http/Controllers/API/BaseController.php
//app/Http/Controllers/API/BaseController.php <?php namespace App\Http\Controllers\API; use Illuminate\Http\Request; use App\Http\Controllers\Controller as Controller; class BaseController extends Controller { /** * success response method. * * @return \Illuminate\Http\Response */ public function sendResponse($result, $message) { $response = [ 'success' => true, 'data' => $result, 'message' => $message, ]; return response()->json($response, 200); } /** * return error response. * * @return \Illuminate\Http\Response */ public function sendError($error, $errorMessages = [], $code = 404) { $response = [ 'success' => false, 'message' => $error, ]; if(!empty($errorMessages)){ $response['data'] = $errorMessages; } return response()->json($response, $code); } }app/Http/Controllers/API/RegisterController.php
//app/Http/Controllers/API/RegisterController.php <?php namespace App\Http\Controllers\API; use Illuminate\Http\Request; use App\Http\Controllers\API\BaseController as BaseController; use App\Models\User; use Illuminate\Support\Facades\Auth; use Validator; class RegisterController extends BaseController { /** * Register api * * @return \Illuminate\Http\Response */ public function register(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', 'password' => 'required', 'c_password' => 'required|same:password', ]); if($validator->fails()){ return $this->sendError('Validation Error.', $validator->errors()); } $input = $request->all(); $input['password'] = bcrypt($input['password']); $user = User::create($input); $success['token'] = $user->createToken('MyApp')->accessToken; $success['name'] = $user->name; return $this->sendResponse($success, 'User register successfully.'); } /** * Login api * * @return \Illuminate\Http\Response */ public function login(Request $request) { if(Auth::attempt(['email' => $request->email, 'password' => $request->password])){ $user = Auth::user(); $success['token'] = $user->createToken('MyApp')-> accessToken; $success['name'] = $user->name; return $this->sendResponse($success, 'User login successfully.'); } else{ return $this->sendError('Unauthorised.', ['error'=>'Unauthorised']); } } }Passport Configuration
app/Models/User.php
config/auth.php
//config/auth.php <?php return [ 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ], ];API Routes
routes/api.php
//routes/api.php <?php use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; use App\Http\Controllers\API\RegisterController; use App\Http\Controllers\API\ProductController; //Route::middleware('auth:sanctum')->get('/user', function (Request $request) { // return $request->user(); //}); Route::post('register', [RegisterController::class, 'register']); Route::post('login', [RegisterController::class, 'login']); Route::middleware('auth:api')->group( function () { Route::resource('products', ProductController::class); });Run C:\xampp\htdocs\laravel\my-app>php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
Check API Results in Postman
https://www.postman.com/downloads/
URL
1) Register API: URL:http://localhost:8000/api/register
2. Login API: URL:http://localhost:8000/api/login