Files
nyone/app/Http/Controllers/AdminChannelCreationController.php

74 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\AdminAuditLog;
use App\Models\PlatformSetting;
use App\Models\User;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
class AdminChannelCreationController extends Controller
{
public function updateDefault(Request $request): RedirectResponse
{
$validated = $request->validate([
'channel_creation_open' => ['required', 'boolean'],
]);
$settings = PlatformSetting::current();
$settings->forceFill([
'channel_creation_open' => (bool) $validated['channel_creation_open'],
])->save();
$this->audit($request, $settings, 'platform.channel_creation_default.updated', [
'channel_creation_open' => $settings->channel_creation_open,
]);
return back()->with(
'success',
$settings->channel_creation_open
? __('All verified users can create channels.')
: __('Channel creation now requires admin approval.'),
);
}
public function updateUser(Request $request, User $user): RedirectResponse
{
$validated = $request->validate([
'can_create_channel' => ['required', 'boolean'],
]);
$user->forceFill([
'can_create_channel' => (bool) $validated['can_create_channel'],
])->save();
$this->audit($request, $user, 'user.creator_access.updated', [
'can_create_channel' => $user->can_create_channel,
]);
return back()->with(
'success',
$user->can_create_channel
? __('User can create a channel.')
: __('User channel creation access removed.'),
);
}
/**
* @param array<string, mixed> $metadata
*/
private function audit(Request $request, object $subject, string $action, array $metadata = []): void
{
AdminAuditLog::query()->create([
'admin_user_id' => $request->user()?->id,
'subject_type' => $subject::class,
'subject_id' => $subject->id,
'action' => $action,
'metadata' => $metadata === [] ? null : $metadata,
'created_at' => now(),
]);
}
}