From a76da167ebab9f504e690e6f5d332ba799bbc62b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9F=A6=E8=8D=A3=E8=B6=85?= <302645122@qq.com>
Date: Thu, 3 Mar 2022 10:47:40 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E9=82=AE=E7=AE=B1?=
=?UTF-8?q?=E9=AA=8C=E8=AF=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/Http/Controllers/Api/UsersController.php | 9 +++++++--
app/Models/UserEmailVerification.php | 5 ++++-
app/Models/WebSocketDialog.php | 2 +-
resources/assets/js/pages/login.vue | 6 +++++-
.../js/pages/manage/setting/system/EmailSetting.vue | 1 +
.../assets/js/pages/{email => single}/validEmail.vue | 5 ++++-
resources/assets/js/routes.js | 12 ++++++------
7 files changed, 28 insertions(+), 12 deletions(-)
rename resources/assets/js/pages/{email => single}/validEmail.vue (92%)
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 @@