feat: 完成邮箱验证

This commit is contained in:
韦荣超 2022-03-03 10:47:40 +08:00
parent 1547b3f53b
commit a76da167eb
7 changed files with 28 additions and 12 deletions

View File

@ -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 = [

View File

@ -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();

View File

@ -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();

View File

@ -319,7 +319,11 @@ export default {
});
}).catch(({data, msg}) => {
this.loadIng--;
if (data.code === 1000) {
$A.modalSuccess(msg);
} else {
$A.modalError(msg);
}
if (data.code === 'need') {
this.reCode();
this.codeNeed = true;

View File

@ -21,6 +21,7 @@
<Radio label="open">{{ $L('开启') }}</Radio>
<Radio label="close">{{ $L('关闭') }}</Radio>
</RadioGroup>
<div v-if="formData.reg_verify == 'open'" class="form-tip">{{$L('开启后账号需验证通过才可登录')}}</div>
</FormItem>
<FormItem :label="$L('开启通知')" prop="notice">
<RadioGroup v-model="formData.notice">

View File

@ -13,7 +13,7 @@
<div>{{$L('2.重复使用验证码')}}</div>
</div>
<div slot="footer" v-if="success">
<Button type="primary" @click="$A.userLogoutV2()" long>{{$L('返回首页')}}</Button>
<Button type="primary" @click="userLogout" long>{{$L('返回首页')}}</Button>
</div>
</div>
</div>
@ -51,6 +51,9 @@ export default {
this.success = false;
this.error = true;
});
},
userLogout() {
this.$store.dispatch("logout", false)
}
},
}

View File

@ -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')
},
]