auth = $auth;
}
/*验证邮箱token*/
public function verifyToken($action,$token)
{
$emailToken = EmailToken::where('action','=',$action)->where('token','=',$token)->first();
if(!$emailToken){
return $this->error(route('website.ask'),'token信息不存在');
}
if($emailToken->created_at->diffInMinutes() > 60){
return $this->error(route('website.ask'),'token信息已失效,请重新发送');
}
$user = User::where('email','=',$emailToken->email)->first();
if(!$user){
return $this->error(route('website.ask'),'用户不存在或已被删除');
}
if(in_array($action,['register','verify'])){
if($user->status==0){
$user->status=1;
$user->save();
$user->userData->email_status = 1;
$user->userData->save();
}
$this->auth->login($user);
EmailToken::clear($user->email,$action);
return $this->success(route('auth.profile.base'),'邮箱验证成功');
}
}
public function sendToken(Request $request)
{
$lastEmailToken = EmailToken::where('email','=',$request->user()->email)->orderBy('created_at','DESC')->first();
if($lastEmailToken && $lastEmailToken->created_at->diffInMinutes() < 1)
{
return response('tooFast');
}
$emailToken = EmailToken::create([
'email' => $request->user()->email,
'action' => 'verify',
'token' => EmailToken::createToken(),
]);
if($emailToken){
$subject = '请激活您在 '.Setting()->get('website_name').' 的邮箱!';
$content = "「".$request->user()->name."」您好,请激活您在 ".Setting()->get('website_name')." 的邮箱!
请在1小时内点击该链接激活注册账号 → ".route('auth.email.verifyToken',['action'=>$emailToken->action,'token'=>$emailToken->token])."
如非本人操作,请忽略此邮件!";
$this->sendEmail($emailToken->email,$subject,$content);
return response('success');
}
return response('failed');
}
}