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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | //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 ); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | //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' ]); } } } |
app/Models/User.php
config/auth.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //config/auth.php <?php return [ 'guards' => [ 'web' => [ 'driver' => 'session' , 'provider' => 'users' , ], 'api' => [ 'driver' => 'passport' , 'provider' => 'users' , ], ], ]; |
routes/api.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //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 ); }); |
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