2025-10-31 15:19:04 +03:00

67 lines
2.9 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\AuthController;
use App\Http\Controllers\Api\ClientController;
use App\Http\Controllers\Api\ClientGroupController;
use App\Http\Controllers\Api\ClientLocationController;
use App\Http\Controllers\Api\ContactController;
use App\Http\Controllers\Api\ClientCategoryController;
use App\Http\Controllers\Api\FournisseurController;
use App\Http\Controllers\Api\ProductController;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| These routes are loaded with the "api" middleware group and are prefixed
| with /api automatically via bootstrap/app.php.
|
*/
Route::prefix('auth')->group(function () {
Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']);
Route::middleware('auth:sanctum')->group(function () {
Route::get('/me', [AuthController::class, 'me']);
// Alias to support clients calling /api/auth/user
Route::get('/user', [AuthController::class, 'me']);
Route::post('/logout', [AuthController::class, 'logout']);
Route::post('/logout-all', [AuthController::class, 'logoutAll']);
});
});
// Protected API routes
Route::middleware('auth:sanctum')->group(function () {
// Client management
// IMPORTANT: Specific routes must come before apiResource
Route::get('/clients/searchBy', [ClientController::class, 'searchBy']);
Route::apiResource('clients', ClientController::class);
Route::apiResource('client-groups', ClientGroupController::class);
Route::apiResource('client-locations', ClientLocationController::class);
Route::get('clients/{clientId}/locations', [ClientLocationController::class, 'getLocationsByClient']);
// Contact management
Route::apiResource('contacts', ContactController::class);
Route::get('clients/{clientId}/contacts', [ContactController::class, 'getContactsByClient']);
Route::apiResource('client-categories', ClientCategoryController::class);
// Fournisseur management
Route::get('/fournisseurs/searchBy', [FournisseurController::class, 'searchBy']);
Route::apiResource('fournisseurs', FournisseurController::class);
Route::get('fournisseurs/{fournisseurId}/contacts', [ContactController::class, 'getContactsByFournisseur']);
// Product management
Route::get('/products/searchBy', [ProductController::class, 'searchBy']);
Route::get('/products/low-stock', [ProductController::class, 'lowStock']);
Route::get('/products/by-category', [ProductController::class, 'byCategory']);
Route::get('/products/statistics', [ProductController::class, 'statistics']);
Route::apiResource('products', ProductController::class);
Route::patch('/products/{id}/stock', [ProductController::class, 'updateStock']);
});