'Email Verification', 'message' => 'You have successfully verified your email address' ]; } /** @var emailVerificationActiveAttemptExists */ private $emailVerificationActiveAttemptExists; /** @var CompletesEmailVerificationAttempt */ private $completesEmailVerificationAttempt; /** @var FetchesEmailVerificationAttempt */ private $fetchesEmailVerificationAttempt; /** @var VerifiesUser */ private $verifiesUser; /** @var SendWelcomeVoucherEmail */ private $sendWelcomeVoucherEmail; /** @var FetchesVoucher */ private $fetchesVoucher; /** * UserEmailVerificationLogic constructor. * @param EmailVerificationActiveAttemptExists $emailVerificationActiveAttemptExists * @param CompletesEmailVerificationAttempt $completesEmailVerificationAttempt * @param FetchesEmailVerificationAttempt $fetchesEmailVerificationAttempt * @param VerifiesUser $verifiesUser * @param SendWelcomeVoucherEmail $sendWelcomeVoucherEmail * @param FetchesVoucher $fetchesVoucher */ public function __construct(EmailVerificationActiveAttemptExists $emailVerificationActiveAttemptExists, CompletesEmailVerificationAttempt $completesEmailVerificationAttempt, FetchesEmailVerificationAttempt $fetchesEmailVerificationAttempt, VerifiesUser $verifiesUser, SendWelcomeVoucherEmail $sendWelcomeVoucherEmail, FetchesVoucher $fetchesVoucher) { $this->emailVerificationActiveAttemptExists = $emailVerificationActiveAttemptExists; $this->completesEmailVerificationAttempt = $completesEmailVerificationAttempt; $this->fetchesEmailVerificationAttempt = $fetchesEmailVerificationAttempt; $this->verifiesUser = $verifiesUser; $this->sendWelcomeVoucherEmail = $sendWelcomeVoucherEmail; $this->fetchesVoucher = $fetchesVoucher; } /** * @param Request $request * @return JsonResponse * @throws MalformedRequestException * @throws ResourceNotFoundException */ public function logic(Request $request) : JsonResponse { $token = $request->input('token'); $this->emailVerificationActiveAttemptExists->execute($token); /** @var UserEmailVerification $attempt */ $attempt = $this->fetchesEmailVerificationAttempt->execute(['token' => $token]); $this->completesEmailVerificationAttempt->execute($attempt); $user = $attempt->user; $this->verifiesUser->execute($user); if (app()->environment('production') && env('SENDING_EMAIL_WELCOME_VOUCHER_ENABLED', true)){ try{ //In case voucher got deleted unintentionally $voucher = $this->fetchesVoucher->execute(['code' => Vouchers::WELCOME_50_PERCENT_OFF]); if($voucher) $this->sendWelcomeVoucherEmail::dispatch($user, $voucher, 1); } catch(\Exception $e){} } return $this->response([]); } }