migrants-nt-sec/routes/api.php

34 lines
1.4 KiB
PHP

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PersonController;
use App\Http\Controllers\PublicSearchController;
use App\Http\Controllers\AuthController;
Route::post('/login', [AuthController::class, 'login'])->name('login');
// Public search endpoints - allow searching without authentication
Route::get('/persons/search', [PublicSearchController::class, 'search'])->name('persons.public.search');
// Public endpoint to get a specific migrant's full record
Route::get('/migrants/{person_id}', [PublicSearchController::class, 'getRecord'])->name('migrants.get');
// Protected routes - require Sanctum authentication
Route::middleware('auth:sanctum')->group(function () {
// User authentication routes
Route::get('/user', [AuthController::class, 'me'])->name('user.profile');
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
// Admin-only routes
Route::middleware('ability:admin')->group(function () {
Route::post('/register', [AuthController::class, 'register'])->name('register');
});
// Person API endpoints - all CRUD operations protected by authentication
Route::apiResource('persons', PersonController::class);
// Custom route for finding a person by ID card number
Route::get('persons/id-card/{idCardNo}', [PersonController::class, 'findByIdCard'])->name('persons.findByIdCard');
});