浏览代码

删除|合并不再使用|类似的系统配置&修复用户关闭工单错误的问题

兔姬桑 4 年之前
父节点
当前提交
f83602333f

+ 1 - 1
.github/ISSUE_TEMPLATE/bug-report.md

@@ -3,7 +3,7 @@ name: 错误报告 - Bug Report
 about: '创建错误报告以帮助我们改进 '
 title: "[BUG]"
 labels: ''
-assignees: ZBrettonYe
+assignees: ''
 
 ---
 

+ 5 - 11
app/Http/Controllers/Admin/SystemController.php

@@ -54,17 +54,7 @@ class SystemController extends Controller
 
     private function getCaptcha()
     {
-        if (sysConfig('geetest_id') && sysConfig('geetest_key')) {
-            $captcha[] = '2';
-        }
-        if (sysConfig('google_captcha_secret') && sysConfig('google_captcha_sitekey')) {
-            $captcha[] = '3';
-        }
-        if (sysConfig('hcaptcha_secret') && sysConfig('hcaptcha_sitekey')) {
-            $captcha[] = '4';
-        }
-
-        return $captcha ?? [];
+        return sysConfig('captcha_secret') && sysConfig('captcha_key');
     }
 
     public function setExtend(Request $request): RedirectResponse  // 设置系统扩展信息,例如客服、统计代码
@@ -113,6 +103,10 @@ class SystemController extends Controller
             return Response::json(['status' => 'fail', 'message' => '请先完善该支付渠道的必要参数!']);
         }
 
+        if ($value > 1 && $name === 'is_captcha' && ! $this->getCaptcha()) {
+            return Response::json(['status' => 'fail', 'message' => '请先完善验证码的必要参数!']);
+        }
+
         // 演示环境禁止修改特定配置项
         if (config('app.demo')) {
             $denyConfig = [

+ 3 - 3
app/Http/Controllers/UserController.php

@@ -197,7 +197,7 @@ class UserController extends Controller
         // 余额充值商品,只取10个
         $renewOrder = Order::userActivePlan($user->id)->first();
         $renewPrice = $renewOrder->goods ?? 0;
-        // 有重置日时按照重置日为标准,否就以过期日为标准
+        // 有重置日时按照重置日为标准,否就以过期日为标准
         $dataPlusDays = $user->reset_time ?? $user->expired_at;
 
         return view('user.services', [
@@ -337,7 +337,7 @@ class UserController extends Controller
     {
         $id = $request->input('id');
 
-        if (Ticket::uid()->whereId($id)->close()) {
+        if (Ticket::uid()->whereId($id)->firstOrFail()->close()) {
             return Response::json(['status' => 'success', 'message' => trans('common.close_item', ['attribute' => trans('common.success')])]);
         }
 
@@ -438,7 +438,7 @@ class UserController extends Controller
     public function buy(Goods $good)
     {
         $user = auth()->user();
-        // 有重置日时按照重置日为标准,否就以过期日为标准
+        // 有重置日时按照重置日为标准,否就以过期日为标准
         $dataPlusDays = $user->reset_time ?? $user->expired_at;
 
         return view('user.buy', [

+ 1 - 1
app/Jobs/VNet/editUser.php

@@ -41,7 +41,7 @@ class editUser implements ShouldQueue
             $host = ($node->server ?: $node->ip).':'.$node->push_port;
             $secret = $node->auth->secret;
 
-            // 如果用户已存在节点内,则执行修改;否为添加
+            // 如果用户已存在节点内,则执行修改;否为添加
             $list = $this->list($host, $secret);
             if ($list && in_array($this->data['uid'], $list)) {
                 $this->send($host, $secret);

+ 13 - 12
app/Providers/SettingServiceProvider.php

@@ -15,14 +15,12 @@ class SettingServiceProvider extends ServiceProvider
     public function boot()
     {
         $toApp = collect([
-            'geetest_id'             => 'geetest.id',
-            'geetest_key'            => 'geetest.key',
-            'google_captcha_secret'  => 'NoCaptcha.secret',
-            'google_captcha_sitekey' => 'NoCaptcha.sitekey',
-            'hcaptcha_secret'        => 'HCaptcha.secret',
-            'hcaptcha_sitekey'       => 'HCaptcha.sitekey',
+            2 => ['geetest.id', 'geetest.key'],
+            3 => ['NoCaptcha.secret', 'NoCaptcha.sitekey'],
+            4 => ['HCaptcha.secret', 'HCaptcha.sitekey'],
         ]);
-        $notifications = collect([
+
+        $notifications = [
             'account_expire_notification',
             'data_anomaly_notification',
             'data_exhaust_notification',
@@ -34,14 +32,14 @@ class SettingServiceProvider extends ServiceProvider
             'ticket_closed_notification',
             'ticket_created_notification',
             'ticket_replied_notification',
-        ]);
+        ];
         $payments = ['is_AliPay', 'is_QQPay', 'is_WeChatPay', 'is_otherPay'];
         if (! Cache::has('settings')) {
             Cache::forever('settings', Config::whereNotNull('value')->get());
         }
         $settings = Cache::get('settings');
         $modified = $settings
-            ->whereNotIn('name', $toApp->keys()->merge($notifications)) // 设置一般系统选项
+            ->whereNotIn('name', $notifications) // 设置一般系统选项
             ->pluck('value', 'name')
             ->merge($settings->whereIn('name', $notifications)->pluck('value', 'name')->map(function ($item) {
                 return self::setChannel(json_decode($item, true)); // 设置通知相关选项
@@ -51,9 +49,12 @@ class SettingServiceProvider extends ServiceProvider
             ->toArray();
 
         config(['settings' => $modified]); // 设置系统参数
-        $settings->whereIn('name', $toApp->keys())->pluck('value', 'name')->each(function ($item, $key) use ($toApp) {
-            config([$toApp[$key] => $item]); // 设置PHP软件包相关配置
-        });
+
+        if (config('settings.is_captcha') > 1) {
+            config([$toApp[config('settings.is_captcha')][0] => config('settings.captcha_secret')]);
+            config([$toApp[config('settings.is_captcha')][1] => config('settings.captcha_key')]);
+        }
+
         collect([
             'website_name' => 'app.name',
             'website_url'  => 'app.url',

+ 36 - 0
database/migrations/2021_01_27_080544_config_clean.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+
+class ConfigClean extends Migration
+{
+    protected $configs = [
+        'mix_subscribe',
+        'geetest_id',
+        'geetest_key',
+        'google_captcha_secret',
+        'google_captcha_sitekey',
+        'hcaptcha_secret',
+        'hcaptcha_sitekey',
+    ];
+    protected $newConfigs = [
+        'captcha_key',
+        'captcha_secret',
+    ];
+
+    public function up()
+    {
+        \App\Models\Config::whereIn('name', $this->configs)->delete();
+        foreach ($this->newConfigs as $config) {
+            \App\Models\Config::insert(['name' => $config]);
+        }
+    }
+
+    public function down()
+    {
+        foreach ($this->configs as $config) {
+            \App\Models\Config::insert(['name' => $config]);
+        }
+        \App\Models\Config::whereIn('name', $this->newConfigs)->delete();
+    }
+}

+ 0 - 7
database/seeds/PresetSeeder.php

@@ -94,7 +94,6 @@ class PresetSeeder extends Seeder
             'AppStore_password',
             'is_activate_account',
             'node_daily_report',
-            'mix_subscribe',
             'rand_subscribe',
             'is_custom_subscribe',
             'is_AliPay',
@@ -111,10 +110,6 @@ class PresetSeeder extends Seeder
             'f2fpay_public_key',
             'website_security_code',
             'subject_name',
-            'geetest_id',
-            'geetest_key',
-            'google_captcha_sitekey',
-            'google_captcha_secret',
             'user_invite_days',
             'admin_invite_days',
             'offline_check_times',
@@ -124,8 +119,6 @@ class PresetSeeder extends Seeder
             'maintenance_time',
             'maintenance_content',
             'bark_key',
-            'hcaptcha_secret',
-            'hcaptcha_sitekey',
             'paypal_username',
             'paypal_password',
             'paypal_secret',

+ 1 - 1
resources/lang/zh-CN/user.php

@@ -159,7 +159,7 @@ return [
         'creating'        => '创建支付单中...',
         'redirect_stripe' => '转跳至Stripe支付界面...',
         'qrcode_tips'     => '请使用<strong class="red-600">:software</strong>扫描二维码',
-        'close_tips'      => '请在<code>:minutes分钟</code>内完成支付,否订单将会自动关闭',
+        'close_tips'      => '请在<code>:minutes分钟</code>内完成支付,否订单将会自动关闭',
         'mobile_tips'     => '<strong>手机用户</strong>:长按二维码 -> 保存图片 ->打开支付软件 -> 扫一扫 -> 选择相册 进行付款',
     ],
     'invoice'             => [

+ 20 - 81
resources/views/admin/config/system.blade.php

@@ -469,7 +469,7 @@
                                             <label class="col-md-3 col-form-label" for="subscribe_domain">节点订阅地址</label>
                                             <div class="col-md-7">
                                                 <div class="input-group">
-                                                    <input type="url" class="form-control" id="subscribe_domain" value="{{$subscribe_domain}}"/>
+                                                    <input type="url" class="form-control" id="subscribe_domain" value="{{$subscribe_domain}}" placeholder="默认为 {{$website_url}}"/>
                                                     <span class="input-group-append">
                                                         <button class="btn btn-primary" type="button" onclick="update('subscribe_domain')">{{trans('common.update')}}</button>
                                                     </span>
@@ -493,16 +493,6 @@
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="form-group col-lg-6">
-                                        <div class="row">
-                                            <label class="col-md-3 col-form-label" for="mix_subscribe">混合订阅</label>
-                                            <div class="col-md-9">
-                                                <input type="checkbox" id="mix_subscribe" data-plugin="switchery" @if($mix_subscribe) checked
-                                                       @endif onchange="updateFromOther('switch','mix_subscribe')">
-                                                <span class="text-help">启用后,订阅信息中将包含V2Ray节点信息(仅支持Shadowrocket、Quantumult、v2rayN) </span>
-                                            </div>
-                                        </div>
-                                    </div>
                                     <div class="form-group col-lg-6">
                                         <div class="row">
                                             <label class="col-md-3 col-form-label" for="rand_subscribe">随机订阅</label>
@@ -525,7 +515,7 @@
                                     </div>
                                     <div class="form-group col-lg-6">
                                         <div class="row">
-                                            <label class="col-md-3 col-form-label" for="web_api_url">授权域名</label>
+                                            <label class="col-md-3 col-form-label" for="web_api_url">授权/后端访问域名</label>
                                             <div class="col-md-7">
                                                 <div class="input-group">
                                                     <input type="text" class="form-control" id="web_api_url" value="{{$web_api_url}}"/>
@@ -533,7 +523,7 @@
                                                         <button class="btn btn-primary" type="button" onclick="update('web_api_url')">{{trans('common.update')}}</button>
                                                     </span>
                                                 </div>
-                                                <span class="text-help">用于 VNet后端授权,此域名需要解析A记录到面板,例:https://demo.proxypanel.ml</span>
+                                                <span class="text-help">例:https://demo.proxypanel.ml</span>
                                             </div>
                                         </div>
                                     </div>
@@ -626,9 +616,10 @@
                                             </div>
                                         </div>
                                     </div>
+                                    <hr class="col-lg-12">
                                     <div class="form-group col-lg-6">
                                         <div class="row">
-                                            <label class="col-md-3 col-form-label" for="is_captcha">验证码</label>
+                                            <label class="col-md-3 col-form-label" for="is_captcha">验证码模式</label>
                                             <div class="col-md-9">
                                                 <select id="is_captcha" data-plugin="selectpicker" data-style="btn-outline btn-primary"
                                                         onchange="updateFromOther('select','is_captcha')">
@@ -638,86 +629,32 @@
                                                     <option value="3">Google reCaptcha</option>
                                                     <option value="4">hCaptcha</option>
                                                 </select>
-                                                <span class="text-help"> 启用后登录、注册需要输入验证码 </span>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="form-group col-lg-6">
-                                        <div class="row">
-                                            <label class="col-md-3 col-form-label" for="geetest_id">极验ID</label>
-                                            <div class="col-md-7">
-                                                <div class="input-group">
-                                                    <input type="text" class="form-control" id="geetest_id" value="{{$geetest_id}}"/>
-                                                    <span class="input-group-append">
-                                                        <button class="btn btn-primary" type="button" onclick="update('geetest_id')">{{trans('common.update')}}</button>
-                                                    </span>
-                                                </div>
-                                                <span class="text-help">本功能需要<a href="https://auth.geetest.com/login/" target="_blank">极验后台</a>申请权限及应用</span>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="form-group col-lg-6">
-                                        <div class="row">
-                                            <label class="col-md-3 col-form-label" for="geetest_key">极验Key</label>
-                                            <div class="col-md-7">
-                                                <div class="input-group">
-                                                    <input type="text" class="form-control" id="geetest_key" value="{{$geetest_key}}"/>
-                                                    <span class="input-group-append">
-                                                        <button class="btn btn-primary" type="button" onclick="update('geetest_key')">{{trans('common.update')}}</button>
-                                                    </span>
-                                                </div>
+                                                <span class="text-help"> 启用后 登录/注册 需要进行验证码认证 </span>
                                             </div>
                                         </div>
                                     </div>
                                     <div class="form-group col-lg-6">
                                         <div class="row">
-                                            <label class="col-md-3 control-label" for="google_captcha_secret">密钥</label>
+                                            <label class="col-md-3 col-form-label" for="captcha_key">验证码 Key</label>
                                             <div class="col-md-7">
                                                 <div class="input-group">
-                                                    <input type="text" class="form-control" id="google_captcha_secret" value="{{$google_captcha_secret}}"/>
+                                                    <input type="text" class="form-control" id="captcha_key" value="{{$captcha_key}}"/>
                                                     <span class="input-group-append">
-                                                        <button class="btn btn-primary" type="button" onclick="update('google_captcha_secret')">{{trans('common.update')}}</button>
+                                                        <button class="btn btn-primary" type="button" onclick="update('captcha_key')">{{trans('common.update')}}</button>
                                                     </span>
                                                 </div>
-                                                <span class="text-help">本功能需要<a href="https://www.google.com/recaptcha/admin" target="_blank">GooglereCAPTCHA后台</a>申请权限及应用 (申请需科学上网,日常验证不用)</span>
+                                                <span class="text-help">浏览<a href="https://proxypanel.gitbook.io/wiki/captcha" target="_blank">设置指南</a>来设置</span>
                                             </div>
                                         </div>
                                     </div>
                                     <div class="form-group col-lg-6">
                                         <div class="row">
-                                            <label class="col-md-3 col-form-label" for="google_captcha_sitekey">网站密钥</label>
+                                            <label class="col-md-3 col-form-label" for="captcha_secret">验证码 Secret/ID</label>
                                             <div class="col-md-7">
                                                 <div class="input-group">
-                                                    <input type="text" class="form-control" id="google_captcha_sitekey" value="{{$google_captcha_sitekey}}"/>
+                                                    <input type="text" class="form-control" id="captcha_secret" value="{{$captcha_secret}}"/>
                                                     <span class="input-group-append">
-                                                        <button class="btn btn-primary" type="button" onclick="update('google_captcha_sitekey')">{{trans('common.update')}}</button>
-                                                    </span>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="form-group col-lg-6">
-                                        <div class="row">
-                                            <label class="col-md-3 control-label" for="hcaptcha_secret">hCaptcha Secret密钥</label>
-                                            <div class="col-md-7">
-                                                <div class="input-group">
-                                                    <input type="text" class="form-control" id="hcaptcha_secret" value="{{$hcaptcha_secret}}"/>
-                                                    <span class="input-group-append">
-                                                        <button class="btn btn-primary" type="button" onclick="update('hcaptcha_secret')">{{trans('common.update')}}</button>
-                                                    </span>
-                                                </div>
-                                                <span class="text-help">本功能需要<a href="https://hCaptcha.com/?r=2d46d3aa7a4e" target="_blank">hCaptcha后台</a>申请权限及应用</span>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="form-group col-lg-6">
-                                        <div class="row">
-                                            <label class="col-md-3 col-form-label" for="hcaptcha_sitekey">hCaptcha Site Key网站密钥</label>
-                                            <div class="col-md-7">
-                                                <div class="input-group">
-                                                    <input type="text" class="form-control" id="hcaptcha_sitekey" value="{{$hcaptcha_sitekey}}"/>
-                                                    <span class="input-group-append">
-                                                        <button class="btn btn-primary" type="button" onclick="update('hcaptcha_sitekey')">{{trans('common.update')}}</button>
+                                                        <button class="btn btn-primary" type="button" onclick="update('captcha_secret')">{{trans('common.update')}}</button>
                                                     </span>
                                                 </div>
                                             </div>
@@ -1374,7 +1311,8 @@
                                             <label class="col-md-3 col-form-label" for="website_callback_url">通用支付回调地址</label>
                                             <div class="col-md-7">
                                                 <div class="input-group">
-                                                    <input type="text" class="form-control" id="website_callback_url" value="{{$website_callback_url}}"/>
+                                                    <input type="text" class="form-control" id="website_callback_url" value="{{$website_callback_url}}"
+                                                           placeholder="默认为 {{$website_url}}"/>
                                                     <span class="input-group-append">
                                                             <button class="btn btn-primary" type="button"
                                                                     onclick="update('website_callback_url')">{{trans('common.update')}}</button>
@@ -1807,7 +1745,11 @@
             disablePayment(document.getElementById('is_QQPay').getElementsByTagName('option'));
             disablePayment(document.getElementById('is_WeChatPay').getElementsByTagName('option'));
             disablePayment(document.getElementById('is_otherPay').getElementsByTagName('option'));
+
+            @if (!$captcha)
             disableCaptcha(document.getElementById('is_captcha').getElementsByTagName('option'));
+            @endif
+
         });
 
         function disablePayment(op) {
@@ -1821,10 +1763,7 @@
 
         function disableCaptcha(op) {
             for (let i = 2; i < op.length; i++) {
-                @json($captcha).
-                includes(op[i].value)
-                    ? op[i].disabled = false
-                    : op[i].disabled = true;
+                op[i].disabled = true;
             }
         }
 

+ 1 - 1
resources/views/auth/captcha.blade.php

@@ -2,7 +2,7 @@
     @case(1)<!-- Default Captcha -->
     <div class="form-group form-material floating input-group" data-plugin="formMaterial">
         <input type="text" class="form-control" name="captcha" required/>
-        <label class="floating-label" for="captcha">{{trans('captcha')}}</label>
+        <label class="floating-label" for="captcha">{{trans('auth.captcha.attribute')}}</label>
         <img src="{{captcha_src()}}" class="float-right" onclick="this.src='/captcha/default?'+Math.random()" alt="{{trans('auth.captcha.attribute')}}"/>
     </div>
     @break