You've already forked Atomcms-edit
57 lines
1.7 KiB
PHP
Executable File
57 lines
1.7 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Controllers\Miscellaneous;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Miscellaneous\WebsiteSetting;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Str;
|
|
use Illuminate\View\View;
|
|
|
|
class LogoGeneratorController extends Controller
|
|
{
|
|
public function index(): View|RedirectResponse
|
|
{
|
|
if (! hasPermission('generate_logo')) {
|
|
return to_route('me.show')->with([
|
|
'message' => __('You do not have permission to do this.'),
|
|
]);
|
|
}
|
|
|
|
return view('logo-generator');
|
|
}
|
|
|
|
public function store(Request $request): JsonResponse
|
|
{
|
|
$request->validate([
|
|
'logo' => [
|
|
'required',
|
|
'image',
|
|
'mimes:jpeg,png,gif,webp',
|
|
'max:5120',
|
|
],
|
|
]);
|
|
|
|
$file = $request->file('logo');
|
|
$mime = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $file->getPathname());
|
|
$allowedMimes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
|
|
|
|
if (! in_array($mime, $allowedMimes, true)) {
|
|
return response()->json(['success' => false, 'message' => 'Invalid file type.'], 422);
|
|
}
|
|
|
|
$filename = 'logo_' . Str::random(16) . '.' . $file->getClientOriginalExtension();
|
|
$path = $file->storeAs('generated-logos', $filename, 'public');
|
|
|
|
$setting = WebsiteSetting::where('key', 'cms_logo')->first();
|
|
|
|
$setting?->update([
|
|
'value' => '/storage/' . $path,
|
|
]);
|
|
|
|
return response()->json(['success' => true, 'message' => 'Logo updated!']);
|
|
}
|
|
}
|