Skip to content
Snippets Groups Projects

feat: add database configuration management

14 files
+ 290
57
Compare changes
  • Side-by-side
  • Inline

Files

@@ -4,6 +4,7 @@
use App\Http\Controllers\Controller;
use App\Mail\AdminInvitationMail;
use App\Models\DbConfig;
use App\Models\User;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
@@ -22,16 +23,30 @@ class SettingsController extends Controller
'label' => 'Général',
'icon' => 'circle-user',
],
[
'route' => 'admin.settings.users',
'label' => 'Utilisateurs',
'icon' => 'users',
],
];
protected bool $isSuperAdmin;
public function __construct()
{
$this->isSuperAdmin = Auth::user()->email === config('app.protected_account_email');
if ($this->isSuperAdmin) {
$this->headerRoutes[] = [
'route' => 'admin.settings.users',
'label' => 'Utilisateurs',
'icon' => 'users',
];
$this->headerRoutes[] = [
'route' => 'admin.settings.website-config',
'label' => 'Configuration du site',
'icon' => 'gear',
];
}
}
public function userListPage(): View
{
$isSuperAdmin = auth()->user()->email === config('app.protected_account_email');
$users = User::all();
foreach ($users as $user) {
@@ -41,7 +56,7 @@ public function userListPage(): View
return view('admin.settings.users', [
'headerRoutes' => $this->headerRoutes,
'users' => $users,
'isSuperAdmin' => $isSuperAdmin,
'isSuperAdmin' => $this->isSuperAdmin,
]);
}
@@ -52,9 +67,7 @@ public function createUser(Request $request): RedirectResponse
'email' => 'required|string|email|max:255|unique:users',
]);
$isSuperAdmin = Auth::user()->email === config('app.protected_account_email');
if (! $isSuperAdmin) {
if (! $this->isSuperAdmin) {
return redirect()->route('admin.settings.users')
->with('error', 'Vous n\'avez pas les droits pour effectuer cette action.');
}
@@ -73,9 +86,7 @@ public function createUser(Request $request): RedirectResponse
public function deleteUser(int $id): RedirectResponse
{
$isSuperAdmin = auth()->user()->email === config('app.protected_account_email');
if (! $isSuperAdmin) {
if (! $this->isSuperAdmin) {
return redirect()->route('admin.settings.users')
->with('error', 'Vous n\'avez pas les droits pour effectuer cette action.');
}
@@ -140,4 +151,39 @@ public function updateUserInfos(Request $request): RedirectResponse
return redirect()->route('admin.settings.general')->with('success', 'Informations mises à jour.');
}
public function websiteConfigPage(): RedirectResponse|View
{
if (! $this->isSuperAdmin) {
return redirect()->route('admin.settings.general')
->with('error', 'Vous n\'avez pas les droits pour effectuer cette action.');
}
return view('admin.settings.website-config', [
'headerRoutes' => $this->headerRoutes,
]);
}
public function updateWebsiteConfig(Request $request): RedirectResponse
{
$request->validate([
'maintenance_mode' => 'sometimes|nullable|string|in:true,false',
'website_name' => 'sometimes|nullable|string|max:255',
]);
if (! $this->isSuperAdmin) {
return redirect()->route('admin.settings.general')
->with('error', 'Vous n\'avez pas les droits pour effectuer cette action.');
}
if ($request->has('maintenance_mode')) {
DbConfig::set('maintenance_mode', $request->maintenance_mode);
}
if ($request->has('website_name')) {
DbConfig::set('website_name', $request->website_name);
}
return redirect()->route('admin.settings.website-config')->with('success', 'Configuration mise à jour.');
}
}
Loading