浏览代码

feature: google recaptcha

Tokumeikoi 4 年之前
父节点
当前提交
54ab44c3fd

+ 4 - 1
app/Http/Controllers/Admin/ConfigController.php

@@ -60,7 +60,10 @@ class ConfigController extends Controller
                     'try_out_hour' => (int)config('v2board.try_out_hour', 1),
                     'email_whitelist_enable' => (int)config('v2board.email_whitelist_enable', 0),
                     'email_whitelist_suffix' => config('v2board.email_whitelist_suffix', Dict::EMAIL_WHITELIST_SUFFIX_DEFAULT),
-                    'email_gmail_limit_enable' => config('v2board.email_gmail_limit_enable', 0)
+                    'email_gmail_limit_enable' => config('v2board.email_gmail_limit_enable', 0),
+                    'recaptcha_enable' => (int)config('v2board.recaptcha_enable', 0),
+                    'recaptcha_key' => config('v2board.recaptcha_key'),
+                    'recaptcha_site_key' => config('v2board.recaptcha_site_key')
                 ],
                 'subscribe' => [
                     'plan_change_enable' => (int)config('v2board.plan_change_enable', 1),

+ 2 - 1
app/Http/Controllers/Admin/CouponController.php

@@ -12,7 +12,8 @@ class CouponController extends Controller
 {
     public function fetch(Request $request)
     {
-        $coupons = Coupon::all();
+        $coupon = Coupon::orderBy('created_at', 'desc');
+        $coupons = $coupon->get();
         foreach ($coupons as $k => $v) {
             if ($coupons[$k]['limit_plan_ids']) $coupons[$k]['limit_plan_ids'] = json_decode($coupons[$k]['limit_plan_ids']);
         }

+ 8 - 0
app/Http/Controllers/Passport/AuthController.php

@@ -14,11 +14,19 @@ use App\Models\InviteCode;
 use App\Utils\Helper;
 use App\Utils\Dict;
 use App\Utils\CacheKey;
+use ReCaptcha\ReCaptcha;
 
 class AuthController extends Controller
 {
     public function register(AuthRegister $request)
     {
+        if ((int)config('v2board.recaptcha_enable', 0)) {
+            $recaptcha = new ReCaptcha(config('v2board.recaptcha_key'));
+            $recaptchaResp = $recaptcha->verify($request->input('recaptcha_data'));
+            if (!$recaptchaResp->isSuccess()) {
+                abort(500, '验证码有误');
+            }
+        }
         if ((int)config('v2board.email_whitelist_enable', 0)) {
             if (!Helper::emailSuffixVerify(
                 $request->input('email'),

+ 11 - 1
app/Http/Controllers/Passport/CommController.php

@@ -13,6 +13,7 @@ use App\Jobs\SendEmailJob;
 use App\Models\InviteCode;
 use App\Utils\Dict;
 use App\Utils\CacheKey;
+use ReCaptcha\ReCaptcha;
 
 class CommController extends Controller
 {
@@ -24,7 +25,9 @@ class CommController extends Controller
                 'isInviteForce' => (int)config('v2board.invite_force', 0) ? 1 : 0,
                 'emailWhitelistSuffix' => (int)config('v2board.email_whitelist_enable', 0)
                     ? $this->getEmailSuffix()
-                    : 0
+                    : 0,
+                'isRecaptcha' => (int)config('v2board.recaptcha_enable', 0) ? 1 : 0,
+                'recaptchaSiteKey' => config('v2board.recaptcha_site_key')
             ]
         ]);
     }
@@ -38,6 +41,13 @@ class CommController extends Controller
 
     public function sendEmailVerify(CommSendEmailVerify $request)
     {
+        if ((int)config('v2board.recaptcha_enable', 0)) {
+            $recaptcha = new ReCaptcha(config('v2board.recaptcha_key'));
+            $recaptchaResp = $recaptcha->verify($request->input('recaptcha_data'));
+            if (!$recaptchaResp->isSuccess()) {
+                abort(500, '验证码有误');
+            }
+        }
         $email = $request->input('email');
         if (Cache::get(CacheKey::get('LAST_SEND_EMAIL_VERIFY_TIMESTAMP', $email))) {
             abort(500, '验证码已发送,请过一会再请求');

+ 3 - 0
app/Http/Requests/Admin/ConfigSave.php

@@ -35,6 +35,9 @@ class ConfigSave extends FormRequest
             'email_whitelist_enable' => 'in:0,1',
             'email_whitelist_suffix' => '',
             'email_gmail_limit_enable' => 'in:0,1',
+            'recaptcha_enable' => 'in:0,1',
+            'recaptcha_key' => '',
+            'recaptcha_site_key' => '',
             // subscribe
             'plan_change_enable' => 'in:0,1',
             'reset_traffic_method' => 'in:0,1',

+ 1 - 0
composer.json

@@ -11,6 +11,7 @@
     "require": {
         "php": "^7.2",
         "fideloper/proxy": "^4.0",
+        "google/recaptcha": "^1.2",
         "laravel/framework": "^6.0",
         "laravel/tinker": "^1.0",
         "lokielse/omnipay-alipay": "3.0.6",

文件差异内容过多而无法显示
+ 0 - 0
public/assets/user/umi.js


部分文件因为文件数量过多而无法显示