middleware('auth'); // $this->middleware('signed')->only('verify'); // $this->middleware('throttle:6,1')->only('verify', 'resend'); $this->userServices = $userServices; } /** * Display an email verification notice. * * @return \Illuminate\Http\Response */ public function notice(Request $request) { return $request->user()->hasVerifiedEmail() ? $this->responseErrorJson('fail', Response::HTTP_FAILED_DEPENDENCY, 'User fail verified') : $this->responseJson("sucess", Response::HTTP_OK, 'User successfully verified'); } /** * User's email verificaiton. * * @param \Illuminate\Http\EmailVerificationRequest $request * @return \Illuminate\Http\Response */ public function verify(Request $request) { $token = $request->query('token')??""; $user = JWTAuth::setToken($token)->authenticate(); if (!$request->hasValidSignature()) { $this->responseErrorJson("fail", Response::HTTP_BAD_REQUEST, 'Invalid or expired link'); } if (!$user->hasVerifiedEmail()) { $user->markEmailAsVerified(); event(new Verified($user)); return redirect('http://localhost:3000/login'); } return $this->responseJson('fail', Response::HTTP_BAD_REQUEST, 'User is incorrect'); } /** * Resent verificaiton email to user. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function resend(Request $request) { $user = $this->userServices->getUserByEmail($request->email); if (!$user) { return $this->responseErrorJson('fail', Response::HTTP_OK, "'User does not exist.'"); } $token = JWTAuth::fromUser($user); $verificationUrl = $this->genUrlVerify($token); $gmailProvider = new Mail; $gmailProvider->from('lisatthu35@gmail.com'); $gmailProvider->subject( "noreply-mail" ); $gmailProvider->to($user->email); $mailableInstance = new VerifyMail($verificationUrl); $gmailProvider->message($mailableInstance->render()); $gmailProvider->send(); //Mail::to($user->email)->send(new VerifyMail($verificationUrl)); return $this->responseJson('success', Response::HTTP_OK, "'A fresh verification link has been sent to your email address.'"); } }