feat: add installer, ranks/groups enhancements, and founder protections

This commit is contained in:
2026-01-23 19:26:35 +01:00
parent 24c16ed0dd
commit d4fb86633b
43 changed files with 6176 additions and 4039 deletions

View File

@@ -5,6 +5,7 @@ use App\Http\Controllers\ForumController;
use App\Http\Controllers\I18nController;
use App\Http\Controllers\PortalController;
use App\Http\Controllers\PostController;
use App\Http\Controllers\PostThankController;
use App\Http\Controllers\SettingController;
use App\Http\Controllers\StatsController;
use App\Http\Controllers\ThreadController;
@@ -13,6 +14,7 @@ use App\Http\Controllers\UserSettingController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\VersionController;
use App\Http\Controllers\RankController;
use App\Http\Controllers\RoleController;
use Illuminate\Support\Facades\Route;
Route::post('/login', [AuthController::class, 'login']);
@@ -43,6 +45,12 @@ Route::get('/user/me', [UserController::class, 'me'])->middleware('auth:sanctum'
Route::patch('/user/me', [UserController::class, 'updateMe'])->middleware('auth:sanctum');
Route::get('/user/profile/{user}', [UserController::class, 'profile'])->middleware('auth:sanctum');
Route::patch('/users/{user}/rank', [UserController::class, 'updateRank'])->middleware('auth:sanctum');
Route::get('/roles', [RoleController::class, 'index'])->middleware('auth:sanctum');
Route::post('/roles', [RoleController::class, 'store'])->middleware('auth:sanctum');
Route::patch('/roles/{role}', [RoleController::class, 'update'])->middleware('auth:sanctum');
Route::delete('/roles/{role}', [RoleController::class, 'destroy'])->middleware('auth:sanctum');
Route::get('/user/{user}/thanks/given', [PostThankController::class, 'given'])->middleware('auth:sanctum');
Route::get('/user/{user}/thanks/received', [PostThankController::class, 'received'])->middleware('auth:sanctum');
Route::get('/ranks', [RankController::class, 'index'])->middleware('auth:sanctum');
Route::post('/ranks', [RankController::class, 'store'])->middleware('auth:sanctum');
Route::patch('/ranks/{rank}', [RankController::class, 'update'])->middleware('auth:sanctum');
@@ -63,4 +71,6 @@ Route::delete('/threads/{thread}', [ThreadController::class, 'destroy'])->middle
Route::get('/posts', [PostController::class, 'index']);
Route::post('/posts', [PostController::class, 'store'])->middleware('auth:sanctum');
Route::post('/posts/{post}/thanks', [PostThankController::class, 'store'])->middleware('auth:sanctum');
Route::delete('/posts/{post}/thanks', [PostThankController::class, 'destroy'])->middleware('auth:sanctum');
Route::delete('/posts/{post}', [PostController::class, 'destroy'])->middleware('auth:sanctum');

View File

@@ -1,9 +1,37 @@
<?php
use App\Http\Controllers\InstallerController;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
use Illuminate\Support\Facades\Route;
Route::view('/', 'app');
Route::view('/login', 'app')->name('login');
Route::view('/reset-password', 'app')->name('password.reset');
Route::get('/install', [InstallerController::class, 'show']);
Route::post('/install', [InstallerController::class, 'store'])
->withoutMiddleware([VerifyCsrfToken::class]);
Route::view('/{any}', 'app')->where('any', '^(?!api).*$');
Route::get('/', function () {
if (!file_exists(base_path('.env'))) {
return redirect('/install');
}
return view('app');
});
Route::get('/login', function () {
if (!file_exists(base_path('.env'))) {
return redirect('/install');
}
return view('app');
})->name('login');
Route::get('/reset-password', function () {
if (!file_exists(base_path('.env'))) {
return redirect('/install');
}
return view('app');
})->name('password.reset');
Route::get('/{any}', function () {
if (!file_exists(base_path('.env'))) {
return redirect('/install');
}
return view('app');
})->where('any', '^(?!api).*$');