问题描述
我要发送两封不同的电子邮件。一个来自 VerifyMail,另一个来自 ForgetEmail,但 laravel 抛出了 VerifyMail 没有退出的错误。当我没有添加 ForgetMail 类时,它工作得很好。 这是我使用VerifyMail的代码
<?PHP
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\User;
use App\VerifyUser;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Carbon;
use App\Mail\VerifyMail;
class UserRegisterController extends Controller
{
public function __construct()
{
$this->middleware('guest:user');
}
public function showRegisterForm() {
return view('user.registerForm');
}
public function register(Request $request) {
$userValidated = $this->validate($request,[
'name' => 'required|string','email' => 'required|string|unique:users','password' => 'required|string|min:6|confirmed'
]);
$register = [
'name' => $userValidated['name'],'email' => $userValidated['email'],'password' => Hash::make($userValidated['password']),];
$user =User::create($register);
VerifyUser::create([
'token' => str::random(60),'user_id' => $user->id,]);
Mail::to($user->email)->send(new VerifyMail($user));
return redirect('user/login')->with('email','An email was sent to you for verification');
}
public function verifyEmail($token,$date) {
$dates = date(strtotime($date));
if(time() - $dates > 60 * 60) {
return redirect('/user/login')->with('Failed','Oops! Something went wrong');
}
$verifiedUser = VerifyUser::where('token',$token)->first();
if(isset($verifiedUser)) {
$user = $verifiedUser->user;
if($user->email_verified_at == '') {
$user->email_verified_at = carbon::Now();
$user->save();
return redirect('/user/login')->with('success','Your email was successfully verified');
} else {
return redirect('/user/login')->with('Failed','Oops! Something went wrong');
}
}
}
}
这是我使用 ForgetEmail 的代码
<?PHP
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
// use Symfony\Component\HttpFoundation\Session\Session;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\Session;
use App\Forgetpassword;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Mail;
use App\Mail\ForgetEmail;
use App\User;
use Illuminate\Support\Facades\Hash;
class UserLoginController extends Controller
{
protected $guard;
use AuthenticatesUsers;
public function __construct()
{
$this->middleware('guest:user')->except('logout');
$this->guard = Auth::guard('user');
}
public function showLoginForm()
{
return view('user.login');
}
public function forgetpasswordForm() {
return view('user.forget');
}
public function passwordResetForm($id) {
$user = User::where('id',$id)->first();
return view('user.resetForm',['id' => $id]);
}
public function userLogin(Request $request) {
$validated = $this->validate($request,[
'email' => 'required|email','password' => 'required|min:6',]);
if(Auth::guard('user')->attempt(['email' => $validated['email'],'password' => $validated['password']],$request->remember)) {
$user = Auth::guard('user')->user();
if($user->email_verified_at != null) {
return redirect()->route('user.dashboard');
} else {
$this->logout($msg = 1);
}
}
return redirect()->back();
}
public function forgetpassword(Request $request) {
$email = $this->validate($request,[
'email' => 'required|email|exists:users',]);
$forgetpass = User::where('email',$email['email'])->first();
$forgetArray = array(
'user_id' => $forgetpass->id,'token' => str::random(60),);
$forgetpassword = Forgetpassword::create($forgetArray);
Mail::to($email['email'])->send(new ForgetEmail($forgetpassword->user));
return redirect('user/forgetpassword')->with('email','We have sent you an email to reset your password');
}
public function passwordReset($token,$date) {
$checkTime = strtotime($date);
if(time() - $checkTime > 20 * 60) {
return redirect('user/login/')->with('passes','Looks like the link has expired');
}
$passReset = Forgetpassword::where('token',$token)->first();
if(isset($passReset)) {
$user = $passReset->user;
if($user->password) {
return redirect('/user/passwordReset'. '/'. $user->id);
}
}
}
public function passwordUpdate(Request $request,$id) {
$validatePass = $this->validate($request,[
'password' => 'required|string|min:6|confirmed',]);
$pass = User::where('id',$id)->first();
$pass->password = Hash::make($validatePass['password']);
$pass->save();
return redirect('/user/login')->with('reset','Your password has been reset');
}
public function logout($msg = 0) {
$cookieName = $this->guard->getRecallerName();
$cookie = Cookie::forget($cookieName);
Auth::logout();
Session::flush();
if($msg == 0) {
return redirect()->route('user.login')->withCookie($cookie);
} else {
return redirect()->route('user.login')->withCookie($cookie)->with('verify','Your email is not verified');
}
}
}
在我没有在邮件中添加 ForgetEmail 类之前,我的所有代码都运行良好。我不知道这里有什么问题。如果你能帮我找到它会很高兴的。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)