diff --git a/app/Classes/TimedTOTP.php b/app/Classes/TimedTOTP.php new file mode 100644 index 00000000..f3c87743 --- /dev/null +++ b/app/Classes/TimedTOTP.php @@ -0,0 +1,42 @@ + $otp->now(), + 'position' => $positionInCurrentPeriod + ]; + + return $totp; + + } + + +} diff --git a/app/Http/Controllers/TwoFAccountController.php b/app/Http/Controllers/TwoFAccountController.php index 518a395a..07212d5b 100644 --- a/app/Http/Controllers/TwoFAccountController.php +++ b/app/Http/Controllers/TwoFAccountController.php @@ -6,6 +6,7 @@ use App\TwoFAccount; use OTPHP\TOTP; use OTPHP\Factory; +use App\Classes\TimedTOTP; use Illuminate\Http\Request; use ParagonIE\ConstantTime\Base32; use Illuminate\Support\Facades\Storage; @@ -78,25 +79,8 @@ public function show(TwoFAccount $twofaccount) */ public function generateTOTP(TwoFAccount $twofaccount) { - try { - $otp = Factory::loadFromProvisioningUri($twofaccount->uri); - } catch (InvalidArgumentException $exception) { - return response()->json([ - 'message' => 'Error generating TOTP', - ], 500); - } - $currentPosition = time(); - $PeriodCount = floor($currentPosition / 30); //nombre de période de 30s depuis T0 - $currentPeriodStartAt = $PeriodCount * 30; - $currentPeriodendAt = $currentPeriodStartAt + 30; - $positionInCurrentPeriod = $currentPosition - $currentPeriodStartAt; - - - return response()->json([ - 'totp' => $otp->now(), - 'position' => $positionInCurrentPeriod - ], 200); + return response()->json(TimedTOTP::get($twofaccount->uri), 200); }