ewa / app /Http /Controllers /ApiControllers /V1 /Auth /VerificationController.php
df
gmail api
992488d
<?php
namespace App\Http\Controllers\ApiControllers\V1\Auth;
use App\Http\Controllers\BaseController;
use App\Mails\VerifyMail;
use App\Services\UserServices;
use Illuminate\Auth\Events\Verified;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\EmailVerificationRequest;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Mail;
use Tymon\JWTAuth\Facades\JWTAuth;
class VerificationController extends BaseController
{
private $userServices;
/**
* Instantiate a new VerificationController instance.
*/
public function __construct(UserServices $userServices)
{
// $this->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.'");
}
}