HEX
Server: LiteSpeed
System: Linux s3604.bom1.stableserver.net 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User: dmstechonline (1480)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/dmstechonline/whatsapp.dmstech.online/backup-2.7-swiftchats/app/Rules/Tfa.php
<?php

namespace App\Rules;

use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
use RobThree\Auth\TwoFactorAuth;
use RobThree\Auth\Providers\Qr\BaconQrCodeProvider;

class Tfa implements ValidationRule
{
  protected $status;
  protected $userSecret;

  /**
   * Create a new rule instance.
   *
   * @param bool $status
   * @param string $userSecret
   */
  public function __construct($status, $userSecret)
  {
    $this->status = $status;
    $this->userSecret = $userSecret;
  }

  /**
   * Determine if the validation rule passes.
   */
  public function validate(string $attribute, mixed $value, Closure $fail): void
  {
    if ($this->status) {
      $tfa = new TwoFactorAuth(new BaconQrCodeProvider());
      $verify = $tfa->verifyCode($this->userSecret, $value);

      if (!$verify) {
        $fail('Invalid token');
      }
    }
  }
}