Bläddra i källkod

Admin Login Logic Tweak

Apply fixes from StyleCI
BrettonYe 2 år sedan
förälder
incheckning
5e2c588621
1 ändrade filer med 142 tillägg och 142 borttagningar
  1. 142 142
      app/Http/Controllers/AuthController.php

+ 142 - 142
app/Http/Controllers/AuthController.php

@@ -66,12 +66,15 @@ class AuthController extends Controller
             return Redirect::back()->withInput()->withErrors(trans('auth.error.login_error'));
         }
 
-        if ($request->routeIs('admin.login.post') && $user->cannot('admin.index')) {
-            // 管理页面登录
-            // 非权限者清场
+        if ($user->can('admin.index')) {
+            return redirect()->back();
+        }
+
+        if ($request->routeIs('admin.login.post')) {
+            // 管理页面登录, 非权限者清场
             Auth::logout();
 
-            return Redirect::route('login');
+            return Redirect::route('login')->withErrors(trans('common.failed_item', ['attribute' => trans('auth.login')]));
         }
 
         // 校验普通用户账号状态
@@ -84,10 +87,7 @@ class AuthController extends Controller
         if ($user->status === 0 && sysConfig('is_activate_account')) {
             Auth::logout(); // 强制销毁会话,因为Auth::attempt的时候会产生会话
 
-            return Redirect::back()->withInput()->withErrors(trans('auth.active.promotion', [
-                'action' => '<a href="'.route('active', ['username' => $user->username]).'" 
-            target="_blank">'.trans('common.active_item', ['attribute' => trans('common.account')]).'</span></a><br>',
-            ]));
+            return Redirect::back()->withInput()->withErrors(trans('auth.active.promotion', ['action' => '<a href="'.route('active', ['username' => $user->username]).'" target="_blank">'.trans('common.active_item', ['attribute' => trans('common.account')]).'</a>']));
         }
 
         Helpers::userLoginAction($user, IP::getClientIp()); // 用户登录后操作
@@ -95,6 +95,42 @@ class AuthController extends Controller
         return redirect()->back();
     }
 
+    private function check_captcha(Request $request)
+    { // 校验验证码
+        switch (sysConfig('is_captcha')) {
+            case 1: // 默认图形验证码
+                if (! Captcha::check($request->input('captcha'))) {
+                    return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed'));
+                }
+                break;
+            case 2: // Geetest
+                $validator = Validator::make($request->all(), ['geetest_challenge' => 'required|geetest']);
+
+                if ($validator->fails()) {
+                    return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed'));
+                }
+                break;
+            case 3: // Google reCAPTCHA
+                $validator = Validator::make($request->all(), ['g-recaptcha-response' => 'required|NoCaptcha']);
+
+                if ($validator->fails()) {
+                    return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed'));
+                }
+                break;
+            case 4: // hCaptcha
+                $validator = Validator::make($request->all(), ['h-captcha-response' => 'required|HCaptcha']);
+
+                if ($validator->fails()) {
+                    return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed'));
+                }
+                break;
+            default: // 不启用验证码
+                break;
+        }
+
+        return false;
+    }
+
     public function logout(Request $request): RedirectResponse
     { // 退出
         Auth::logout();
@@ -246,6 +282,104 @@ class AuthController extends Controller
         return Redirect::route('login')->withInput();
     }
 
+    private function emailChecker($email, $returnType = 0)
+    { // 邮箱检查
+        $emailFilterList = EmailFilter::whereType(sysConfig('is_email_filtering'))->pluck('words')->toArray();
+        $emailSuffix = explode('@', $email); // 提取邮箱后缀
+
+        if ($emailSuffix) {
+            switch (sysConfig('is_email_filtering')) {
+                case 1: // 黑名单
+                    if (in_array(strtolower($emailSuffix[1]), $emailFilterList, true)) {
+                        if ($returnType) {
+                            return Redirect::back()->withErrors(trans('auth.email.error.banned'));
+                        }
+
+                        return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.banned')]);
+                    }
+                    break;
+                case 2: // 白名单
+                    if (! in_array(strtolower($emailSuffix[1]), $emailFilterList, true)) {
+                        if ($returnType) {
+                            return Redirect::back()->withErrors(trans('auth.email.error.invalid'));
+                        }
+
+                        return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.invalid')]);
+                    }
+                    break;
+                default:
+                    if ($returnType) {
+                        return Redirect::back()->withErrors(trans('auth.email.error.invalid'));
+                    }
+
+                    return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.invalid')]);
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * 获取AFF.
+     *
+     * @param  string|null  $code  邀请码
+     * @param  int|null  $aff  URL中的aff参数
+     * @return array
+     */
+    private function getAff($code = null, $aff = null): array
+    {
+        $data = ['inviter_id' => null, 'code_id' => 0]; // 邀请人ID 与 邀请码ID
+
+        // 有邀请码先用邀请码,用谁的邀请码就给谁返利
+        if ($code) {
+            $inviteCode = Invite::whereCode($code)->whereStatus(0)->first();
+            if ($inviteCode) {
+                $data['inviter_id'] = $inviteCode->inviter_id;
+                $data['code_id'] = $inviteCode->id;
+            }
+        }
+
+        // 没有用邀请码或者邀请码是管理员生成的,则检查cookie或者url链接
+        if (! $data['inviter_id']) {
+            // 检查一下cookie里有没有aff
+            $cookieAff = \request()->cookie('register_aff');
+            if ($cookieAff) {
+                $cookieAff = $this->affConvert($cookieAff);
+                $data['inviter_id'] = $cookieAff && User::find($cookieAff) ? $cookieAff : null;
+            } elseif ($aff) { // 如果cookie里没有aff,就再检查一下请求的url里有没有aff,因为有些人的浏览器会禁用了cookie,比如chrome开了隐私模式
+                $aff = $this->affConvert($aff);
+                $data['inviter_id'] = $aff && User::find($aff) ? $aff : null;
+            }
+        }
+
+        return $data;
+    }
+
+    private function affConvert($aff)
+    {
+        if (is_numeric($aff)) {
+            return $aff;
+        }
+
+        $decode = (new Hashids(sysConfig('aff_salt'), 8))->decode($aff);
+        if ($decode) {
+            return $decode[0];
+        }
+
+        return false;
+    }
+
+    private function addVerifyUrl($uid, $email)
+    { // 生成申请的请求地址
+        $token = md5(sysConfig('website_name').$email.microtime());
+        $verify = new Verify();
+        $verify->user_id = $uid;
+        $verify->token = $token;
+        $verify->save();
+
+        return $token;
+    }
+
     public function resetPassword(Request $request)
     { // 重设密码页
         if ($request->isMethod('POST')) {
@@ -510,138 +644,4 @@ class AuthController extends Controller
 
         return Redirect::back();
     }
-
-    private function check_captcha(Request $request)
-    { // 校验验证码
-        switch (sysConfig('is_captcha')) {
-            case 1: // 默认图形验证码
-                if (! Captcha::check($request->input('captcha'))) {
-                    return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed'));
-                }
-                break;
-            case 2: // Geetest
-                $validator = Validator::make($request->all(), ['geetest_challenge' => 'required|geetest']);
-
-                if ($validator->fails()) {
-                    return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed'));
-                }
-                break;
-            case 3: // Google reCAPTCHA
-                $validator = Validator::make($request->all(), ['g-recaptcha-response' => 'required|NoCaptcha']);
-
-                if ($validator->fails()) {
-                    return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed'));
-                }
-                break;
-            case 4: // hCaptcha
-                $validator = Validator::make($request->all(), ['h-captcha-response' => 'required|HCaptcha']);
-
-                if ($validator->fails()) {
-                    return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed'));
-                }
-                break;
-            default: // 不启用验证码
-                break;
-        }
-
-        return false;
-    }
-
-    private function emailChecker($email, $returnType = 0)
-    { // 邮箱检查
-        $emailFilterList = EmailFilter::whereType(sysConfig('is_email_filtering'))->pluck('words')->toArray();
-        $emailSuffix = explode('@', $email); // 提取邮箱后缀
-
-        if ($emailSuffix) {
-            switch (sysConfig('is_email_filtering')) {
-                case 1: // 黑名单
-                    if (in_array(strtolower($emailSuffix[1]), $emailFilterList, true)) {
-                        if ($returnType) {
-                            return Redirect::back()->withErrors(trans('auth.email.error.banned'));
-                        }
-
-                        return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.banned')]);
-                    }
-                    break;
-                case 2: // 白名单
-                    if (! in_array(strtolower($emailSuffix[1]), $emailFilterList, true)) {
-                        if ($returnType) {
-                            return Redirect::back()->withErrors(trans('auth.email.error.invalid'));
-                        }
-
-                        return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.invalid')]);
-                    }
-                    break;
-                default:
-                    if ($returnType) {
-                        return Redirect::back()->withErrors(trans('auth.email.error.invalid'));
-                    }
-
-                    return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.invalid')]);
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * 获取AFF.
-     *
-     * @param  string|null  $code  邀请码
-     * @param  int|null  $aff  URL中的aff参数
-     * @return array
-     */
-    private function getAff($code = null, $aff = null): array
-    {
-        $data = ['inviter_id' => null, 'code_id' => 0]; // 邀请人ID 与 邀请码ID
-
-        // 有邀请码先用邀请码,用谁的邀请码就给谁返利
-        if ($code) {
-            $inviteCode = Invite::whereCode($code)->whereStatus(0)->first();
-            if ($inviteCode) {
-                $data['inviter_id'] = $inviteCode->inviter_id;
-                $data['code_id'] = $inviteCode->id;
-            }
-        }
-
-        // 没有用邀请码或者邀请码是管理员生成的,则检查cookie或者url链接
-        if (! $data['inviter_id']) {
-            // 检查一下cookie里有没有aff
-            $cookieAff = \request()->cookie('register_aff');
-            if ($cookieAff) {
-                $cookieAff = $this->affConvert($cookieAff);
-                $data['inviter_id'] = $cookieAff && User::find($cookieAff) ? $cookieAff : null;
-            } elseif ($aff) { // 如果cookie里没有aff,就再检查一下请求的url里有没有aff,因为有些人的浏览器会禁用了cookie,比如chrome开了隐私模式
-                $aff = $this->affConvert($aff);
-                $data['inviter_id'] = $aff && User::find($aff) ? $aff : null;
-            }
-        }
-
-        return $data;
-    }
-
-    private function affConvert($aff)
-    {
-        if (is_numeric($aff)) {
-            return $aff;
-        }
-
-        $decode = (new Hashids(sysConfig('aff_salt'), 8))->decode($aff);
-        if ($decode) {
-            return $decode[0];
-        }
-
-        return false;
-    }
-
-    private function addVerifyUrl($uid, $email)
-    { // 生成申请的请求地址
-        $token = md5(sysConfig('website_name').$email.microtime());
-        $verify = new Verify();
-        $verify->user_id = $uid;
-        $verify->token = $token;
-        $verify->save();
-
-        return $token;
-    }
 }