92 lines
4.0 KiB
PHP
92 lines
4.0 KiB
PHP
<?php
|
||
|
||
namespace App\Admin\Controllers;
|
||
|
||
use Illuminate\Support\Arr;
|
||
use Illuminate\Http\Request;
|
||
use Slowlyo\OwlAdmin\Renderers\Tab;
|
||
use Slowlyo\OwlAdmin\Renderers\Tabs;
|
||
use Slowlyo\OwlAdmin\Renderers\Alert;
|
||
use Slowlyo\OwlAdmin\Renderers\InputKV;
|
||
use Slowlyo\OwlAdmin\Renderers\TextControl;
|
||
use Slowlyo\OwlAdmin\Controllers\AdminController;
|
||
|
||
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);
|
||
}
|
||
}
|