generated from liutk/owl-admin-base
89 lines
3.8 KiB
PHP
89 lines
3.8 KiB
PHP
<?php
|
||
|
||
namespace App\Admin\Controllers;
|
||
|
||
use Illuminate\Http\Request;
|
||
use Illuminate\Support\Arr;
|
||
use Slowlyo\OwlAdmin\Controllers\AdminController;
|
||
use Slowlyo\OwlAdmin\Renderers\Tab;
|
||
use Slowlyo\OwlAdmin\Renderers\Tabs;
|
||
|
||
class SettingController extends AdminController
|
||
{
|
||
public function index()
|
||
{
|
||
$page = $this->basePage()->body([
|
||
$this->form(),
|
||
]);
|
||
|
||
return $this->response()->success($page);
|
||
}
|
||
|
||
public function form()
|
||
{
|
||
return $this->baseForm(false)
|
||
->redirect('')->labelWidth('200px')
|
||
->api($this->getStorePath())
|
||
->data(settings()->all())
|
||
->body(
|
||
Tabs::make()->tabs([
|
||
Tab::make()->title('上传设置')->body([
|
||
amis()->RadiosControl('upload_disk', '上传驱动')->options([
|
||
'public' => '本地存储',
|
||
'oss' => '阿里云OSS',
|
||
])->value('public')->required(true),
|
||
amis()->TextControl('oss_config.access_key_id', '阿里云AccessKeyId')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}'),
|
||
amis()->TextControl('oss_config.access_key_secret', '阿里云AccessKeySecret')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}'),
|
||
amis()->TextControl('oss_config.bucket', '对象存储Bucket')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('示例: my-bucket'),
|
||
amis()->TextControl('oss_config.endpoint', '对象存储endpoint')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('示例: oss-cn-shanghai.aliyuncs.com'),
|
||
amis()->TextControl('oss_config.domain', '自有域名')->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('填写即启用 示例: my-domain.com'),
|
||
amis()->SwitchControl('oss_config.use_ssl', '开启SSL')->value(false)->visibleOn('${upload_disk == "oss"}'),
|
||
]),
|
||
])
|
||
);
|
||
}
|
||
|
||
public function store(Request $request)
|
||
{
|
||
$data = $request->only([
|
||
'upload_disk',
|
||
'oss_config',
|
||
]);
|
||
|
||
//上传设置-修改env文件内配置;
|
||
if (! empty($data['upload_disk'])) {
|
||
$envData['FILESYSTEM_DISK'] = $data['upload_disk'];
|
||
if ($envData['FILESYSTEM_DISK'] == 'oss') {//如果设置为OSS驱动,则配置env变量
|
||
$envData['OSS_ACCESS_KEY_ID'] = Arr::get($data['oss_config'], 'access_key_id');
|
||
$envData['OSS_ACCESS_KEY_SECRET'] = Arr::get($data['oss_config'], 'access_key_secret');
|
||
$envData['OSS_BUCKET'] = Arr::get($data['oss_config'], 'bucket');
|
||
$envData['OSS_ENDPOINT'] = Arr::get($data['oss_config'], 'endpoint');
|
||
$envData['OSS_DOMAIN'] = Arr::get($data['oss_config'], 'domain');
|
||
if (! empty($envData['OSS_DOMAIN'])) {
|
||
$envData['OSS_CNAME'] = 'true';
|
||
} else {
|
||
$envData['OSS_CNAME'] = 'false';
|
||
}
|
||
$envData['OSS_SSL'] = Arr::get($data['oss_config'], 'use_ssl') ? 'true' : 'false';
|
||
}
|
||
$envPath = base_path().DIRECTORY_SEPARATOR.'.env';
|
||
$contentArray = collect(file($envPath, FILE_IGNORE_NEW_LINES));
|
||
$contentArray->transform(function ($item) use ($envData) {
|
||
foreach ($envData as $key => $value) {
|
||
if (str_contains($item, $key)) {
|
||
|
||
return $key.'='.$value;
|
||
}
|
||
}
|
||
|
||
return $item;
|
||
});
|
||
|
||
$content = implode("\n", $contentArray->toArray());
|
||
\File::put($envPath, $content);
|
||
}
|
||
|
||
return settings()->adminSetMany($data);
|
||
}
|
||
}
|