Closes Module 1: 9 auth endpoints under /api/v1/auth, OTP via SMS (Semaphore + log + fake drivers), role middleware, role + admin seeders, 27 feature tests passing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
44 lines
2.0 KiB
PHP
44 lines
2.0 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Api\V1\Auth\ForgotPasswordController;
|
|
use App\Http\Controllers\Api\V1\Auth\LoginController;
|
|
use App\Http\Controllers\Api\V1\Auth\LogoutController;
|
|
use App\Http\Controllers\Api\V1\Auth\MeController;
|
|
use App\Http\Controllers\Api\V1\Auth\RefreshTokenController;
|
|
use App\Http\Controllers\Api\V1\Auth\RegisterController;
|
|
use App\Http\Controllers\Api\V1\Auth\ResendOtpController;
|
|
use App\Http\Controllers\Api\V1\Auth\ResetPasswordController;
|
|
use App\Http\Controllers\Api\V1\Auth\VerifyOtpController;
|
|
use App\Http\Controllers\Api\V1\HealthController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| API Routes (v1)
|
|
|--------------------------------------------------------------------------
|
|
| All routes here are prefixed with /api/v1 (configured in bootstrap/app.php).
|
|
*/
|
|
|
|
Route::get('/health', HealthController::class)->name('api.v1.health');
|
|
|
|
Route::prefix('auth')->name('api.v1.auth.')->group(function () {
|
|
Route::middleware('throttle:10,1')->group(function () {
|
|
Route::post('/register', RegisterController::class)->name('register');
|
|
Route::post('/login', LoginController::class)->name('login');
|
|
Route::post('/forgot-password', ForgotPasswordController::class)->name('forgot-password');
|
|
Route::post('/reset-password', ResetPasswordController::class)->name('reset-password');
|
|
Route::post('/otp/verify', VerifyOtpController::class)->name('otp.verify');
|
|
Route::post('/otp/resend', ResendOtpController::class)->name('otp.resend');
|
|
});
|
|
|
|
Route::middleware('auth:sanctum')->group(function () {
|
|
Route::post('/logout', LogoutController::class)->name('logout');
|
|
Route::post('/refresh', RefreshTokenController::class)->name('refresh');
|
|
Route::get('/me', MeController::class)->name('me');
|
|
});
|
|
});
|
|
|
|
Route::middleware('auth:sanctum')->group(function () {
|
|
Route::get('/me', MeController::class)->name('api.v1.me');
|
|
});
|