TIDE/backend/routes/api.php
Yisroel Baum a3f90d1e85
implement user search and admin promote endpoints
GET /users?q=... is public; POST /admin/users/promote is auth
required and admin-checked inside the use case.
2026-05-06 22:36:15 +03:00

58 lines
2 KiB
PHP

<?php
use App\Controllers\AuthController;
use App\Controllers\CommentController;
use App\Controllers\PostController;
use App\Controllers\UserController;
use App\Http\Middleware\AuthMiddleware;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return '';
});
Route::post('/signup', [AuthController::class, 'signup']);
Route::post('/confirm-email', [AuthController::class, 'confirmEmail']);
Route::post('/login', [AuthController::class, 'login']);
Route::post('/logout', [AuthController::class, 'logout'])
->middleware(AuthMiddleware::class);
Route::get('/me', [AuthController::class, 'me'])
->middleware(AuthMiddleware::class);
Route::get('/posts', [PostController::class, 'recent']);
Route::get('/posts/featured', [PostController::class, 'listFeatured']);
Route::get('/posts/{id}', [PostController::class, 'show'])
->whereNumber('id');
Route::post('/posts', [PostController::class, 'create'])
->middleware(AuthMiddleware::class);
Route::delete('/posts/{id}', [PostController::class, 'delete'])
->whereNumber('id')
->middleware(AuthMiddleware::class);
Route::post('/admin/posts/feature', [PostController::class, 'feature'])
->middleware(AuthMiddleware::class);
Route::post('/admin/posts/unfeature', [PostController::class, 'unfeature'])
->middleware(AuthMiddleware::class);
Route::get('/users', [UserController::class, 'search']);
Route::post('/admin/users/promote', [UserController::class, 'promote'])
->middleware(AuthMiddleware::class);
Route::get(
'/users/{displayName}/posts',
[PostController::class, 'listByUser'],
);
Route::get(
'/posts/{postId}/comments',
[CommentController::class, 'listForPost'],
)->whereNumber('postId');
Route::post(
'/posts/{postId}/comments',
[CommentController::class, 'create'],
)->whereNumber('postId')
->middleware(AuthMiddleware::class);
Route::delete(
'/comments/{id}',
[CommentController::class, 'delete'],
)->whereNumber('id')
->middleware(AuthMiddleware::class);