bookclub-manager/routes/api.php

52 lines
3.2 KiB
PHP

<?php
use App\Http\Controllers\AccountController;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\BookRecommendationController;
use App\Http\Controllers\DeadlineController;
use App\Http\Controllers\UploadController;
use App\Http\Controllers\VoteController;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return ['ok' => true, 'message' => 'Welcome to the API'];
});
Route::prefix('api/v1')->group(function () {
Route::get('login/{provider}/redirect', [AuthController::class, 'redirect'])->name('login.provider.redirect');
Route::get('login/{provider}/callback', [AuthController::class, 'callback'])->name('login.provider.callback');
Route::post('login', [AuthController::class, 'login'])->name('login');
Route::post('register', [AuthController::class, 'register'])->name('register');
Route::post('forgot-password', [AuthController::class, 'sendResetPasswordLink'])->middleware('throttle:5,1')->name('password.email');
Route::post('reset-password', [AuthController::class, 'resetPassword'])->name('password.store');
Route::post('verification-notification', [AuthController::class, 'verificationNotification'])->middleware('throttle:verification-notification')->name('verification.send');
Route::get('verify-email/{ulid}/{hash}', [AuthController::class, 'verifyEmail'])->middleware(['signed', 'throttle:6,1'])->name('verification.verify');
Route::middleware(['auth:sanctum'])->group(function () {
Route::post('logout', [AuthController::class, 'logout'])->name('logout');
Route::post('devices/disconnect', [AuthController::class, 'deviceDisconnect'])->name('devices.disconnect');
Route::get('devices', [AuthController::class, 'devices'])->name('devices');
Route::get('user', [AuthController::class, 'user'])->name('user');
Route::match(['get', 'post'], '/broadcasting/auth', [\Illuminate\Broadcasting\BroadcastController::class, 'authenticate'])->withoutMiddleware(\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class)->name('broadcasting.auth');
Route::resource('book-recommendations', BookRecommendationController::class);
Route::get('/book-recommendations/{bookRecommendationId}/deadlines', [DeadlineController::class, 'deadlinesByBookRecommendation']);
Route::post('/vote', [VoteController::class, 'castVote']);
Route::get('/deadlines', [DeadlineController::class, 'index']);
Route::post('/deadlines', [DeadlineController::class, 'createDeadline']);
Route::put('/user-deadlines/{deadlineId}', [DeadlineController::class, 'updateUserDeadline']);
Route::post('/admin/add-total-votes-all', [VoteController::class, 'addTotalVotesAll']);
Route::post('account/update', [AccountController::class, 'update'])->name('account.update');
Route::post('account/password', [AccountController::class, 'password'])->name('account.password');
Route::post('jobs/fetch-cover', [BookRecommendationController::class, 'fetchCover'])->name('jobs.fetch-cover');
Route::middleware(['throttle:uploads'])->group(function () {
Route::post('upload', [UploadController::class, 'image'])->name('upload.image');
});
});
});