feat: implement OTP sending via Kavenegar VerifyLookup and add image cropping modal
- Added support for sending OTP messages using Kavenegar's VerifyLookup method, ensuring compliance with specified token formatting and template usage. - Updated OtpService to handle new template parameters and fallback mechanisms. - Introduced ImageCropModal component for cropping images with a user-friendly interface. - Created utility function for cropping images and generating downloadable files.
This commit is contained in:
@@ -20,6 +20,7 @@ class OtpService
|
||||
private readonly CityRepository $cityRepo,
|
||||
private readonly int $otpTtl = 1200,
|
||||
private readonly string $appEnv = 'dev',
|
||||
private readonly ?string $otpTemplate = null,
|
||||
) {}
|
||||
|
||||
private function key(string $uuid): string
|
||||
@@ -73,7 +74,19 @@ class OtpService
|
||||
if ($this->appEnv !== 'dev') {
|
||||
$site = $this->resolveSiteName($domain);
|
||||
$message = $this->smsText->resolve(SmsLog::TAG_OTP, ['code' => $code, 'site' => $site]);
|
||||
$this->sms->dispatchAsync($mobile, $message, tag: SmsLog::TAG_OTP);
|
||||
|
||||
if ($this->otpTemplate) {
|
||||
// Kavenegar VerifyLookup: code has no spaces → token; site may contain spaces → token10.
|
||||
$this->sms->dispatchAsync(
|
||||
$mobile,
|
||||
$message,
|
||||
templateCode: $this->otpTemplate,
|
||||
templateVars: ['token' => $code, 'token10' => $site],
|
||||
tag: SmsLog::TAG_OTP,
|
||||
);
|
||||
} else {
|
||||
$this->sms->dispatchAsync($mobile, $message, tag: SmsLog::TAG_OTP);
|
||||
}
|
||||
}
|
||||
|
||||
return $uuid;
|
||||
|
||||
Reference in New Issue
Block a user