mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 03:01:12 +00:00
feat: 完成邮箱验证
This commit is contained in:
parent
1547b3f53b
commit
a76da167eb
@ -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 = [
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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)
|
||||
}
|
||||
},
|
||||
}
|
||||
12
resources/assets/js/routes.js
vendored
12
resources/assets/js/routes.js
vendored
@ -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')
|
||||
},
|
||||
]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user