diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index af42bfc85..2be109eb2 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -47,6 +47,7 @@ class UsersController extends AbstractController $type = trim(Request::input('type')); $email = trim(Request::input('email')); $password = trim(Request::input('password')); + $isRegVerify = Base::settingFind('emailSetting', 'reg_verify') === 'open' ? true : false; if ($type == 'reg') { $setting = Base::setting('system'); if ($setting['reg'] == 'close') { @@ -58,9 +59,9 @@ class UsersController extends AbstractController } } $user = User::reg($email, $password); - $isRegVerify = false;//Base::settingFind('emailSetting', 'reg_verify') === 'open' ? true : false; if ($isRegVerify) { UserEmailVerification::userEmailSend($user); + return Base::retError('注册成功,请验证邮箱后登录', ['code' => 1000]); } } else { $needCode = !Base::isError(User::needCode($email)); @@ -77,7 +78,7 @@ class UsersController extends AbstractController $retError = function ($msg) use ($email) { Cache::forever("code::" . $email, "need"); $needCode = !Base::isError(User::needCode($email)); - $needData = [ 'code' => $needCode ? 'need' : 'no' ]; + $needData = ['code' => $needCode ? 'need' : 'no']; return Base::retError($msg, $needData); }; $user = User::whereEmail($email)->first(); @@ -92,6 +93,10 @@ class UsersController extends AbstractController return $retError('帐号已停用...'); } Cache::forget("code::" . $email); + if ($isRegVerify && $user->is_email_verity === 0) { + UserEmailVerification::userEmailSend($user); + return $retError('请验证邮箱后再登录'); + } } // $array = [ diff --git a/app/Models/UserEmailVerification.php b/app/Models/UserEmailVerification.php index 7ce22ab82..5d9ce1610 100644 --- a/app/Models/UserEmailVerification.php +++ b/app/Models/UserEmailVerification.php @@ -6,6 +6,7 @@ namespace App\Models; use App\Exceptions\ApiException; use App\Module\Base; +use Carbon\Carbon; use Config; use Exception; use Mail; @@ -41,13 +42,15 @@ class UserEmailVerification extends AbstractModel */ public static function userEmailSend(User $user) { + $res = self::where('userid', $user->userid)->where('created_at', '>', Carbon::now()->subMinutes(1440))->first(); + if ($res) return; //删除 self::where('userid', $user->userid)->delete(); $info['created_at'] = date("Y-m-d H:i:s"); $info['userid'] = $user->userid; $info['email'] = $user->email; $info['code'] = md5(uniqid(md5(microtime(true)), true)) . md5($user->userid . md5('lddsgagsgkdiid' . microtime(true))); - $url = Base::fillUrl('valid/email') . '?code=' . $info['code']; + $url = Base::fillUrl('single/valid/email') . '?code=' . $info['code']; $info['status'] = 0; $userEmailVerification = self::createInstance($info); $userEmailVerification->save(); diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index ceb33c8f7..602faf116 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -112,7 +112,7 @@ class WebSocketDialog extends AbstractModel // 对方信息 $dialog->dialog_user = null; $dialog->group_info = null; - $dialog->top_at = WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($userid)->value('top_at'); + $dialog->top_at = $dialog->top_at ?? WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($userid)->value('top_at'); switch ($dialog->type) { case "user": $dialog_user = $builder->where('userid', '!=', $userid)->first(); diff --git a/resources/assets/js/pages/login.vue b/resources/assets/js/pages/login.vue index 532f12285..b2f860d6d 100644 --- a/resources/assets/js/pages/login.vue +++ b/resources/assets/js/pages/login.vue @@ -319,7 +319,11 @@ export default { }); }).catch(({data, msg}) => { this.loadIng--; - $A.modalError(msg); + if (data.code === 1000) { + $A.modalSuccess(msg); + } else { + $A.modalError(msg); + } if (data.code === 'need') { this.reCode(); this.codeNeed = true; diff --git a/resources/assets/js/pages/manage/setting/system/EmailSetting.vue b/resources/assets/js/pages/manage/setting/system/EmailSetting.vue index 929b3f8f8..adbbbe3b3 100644 --- a/resources/assets/js/pages/manage/setting/system/EmailSetting.vue +++ b/resources/assets/js/pages/manage/setting/system/EmailSetting.vue @@ -21,6 +21,7 @@ {{ $L('开启') }} {{ $L('关闭') }} +
{{$L('开启后账号需验证通过才可登录')}}
diff --git a/resources/assets/js/pages/email/validEmail.vue b/resources/assets/js/pages/single/validEmail.vue similarity index 92% rename from resources/assets/js/pages/email/validEmail.vue rename to resources/assets/js/pages/single/validEmail.vue index 010047150..62d3a9f88 100644 --- a/resources/assets/js/pages/email/validEmail.vue +++ b/resources/assets/js/pages/single/validEmail.vue @@ -13,7 +13,7 @@
{{$L('2.重复使用验证码')}}
- +
@@ -51,6 +51,9 @@ export default { this.success = false; this.error = true; }); + }, + userLogout() { + this.$store.dispatch("logout", false) } }, } diff --git a/resources/assets/js/routes.js b/resources/assets/js/routes.js index 080853628..5b237de7d 100755 --- a/resources/assets/js/routes.js +++ b/resources/assets/js/routes.js @@ -90,6 +90,12 @@ export default [ path: '/single/task/:id', component: () => import('./pages/single/task.vue'), }, + { + name: 'valid-email', + path: '/single/valid/email', + meta: {title: '验证绑定邮箱'}, + component: () => import('./pages/single/validEmail.vue') + }, { name: 'login', path: '/login', @@ -100,10 +106,4 @@ export default [ path: '*', component: () => import('./pages/404.vue') }, - { - name: 'validEmail', - path: '/valid/email', - meta: {title: '验证绑定邮箱'}, - component: () => import('./pages/email/validEmail.vue') - }, ]