someshit going on

This commit is contained in:
2025-09-22 18:31:00 +05:00
parent a04c5b1f00
commit 4911a37cfd
9 changed files with 194 additions and 0 deletions

View File

@@ -32,11 +32,17 @@ class Register extends BaseRegister
protected function beforeValidate(): void
{
info(['$this->data' => $this->data]);
if (isset($this->data['phone_number'])) {
$this->data['phone_number'] = str_replace(' ', '', $this->data['phone_number']);
}
}
protected function afterRegister(): void
{
module('SMS')->verify($this->data['phone_number']);
}
protected function mutateFormDataBeforeRegister(array $data): array
{
$data['phone_number'] = str_replace(' ', '', $data['phone_number']);

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Modules\OTPVerification\Rules\OTPVerificationRule;
use App\Modules\PhoneNumberVerification\Rules\PhoneNumberVerificationRule;
use App\Models\User;
use Illuminate\Http\Request;
class OTPVericationController extends Controller
{
public function index()
{
return view('pages.auth.otp-verify');
}
public function store(Request $request)
{
$request->validate([
'code' => ['required', 'integer', new OTPVerificationRule(auth()->user()->phone_number)],
]);
User::find(auth()->id())->update([
'phone_number_verified_at' => now(),
]);
return redirect('/');
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Modules\OTPVerification\Rules\OTPVerificationRule;
use Illuminate\Http\Request;
class OTPVerificationController extends Controller
{
public function index()
{
return view('pages.auth.otp-verify');
}
public function store(Request $request)
{
$request->validate([
'code' => ['required', 'integer', new OTPVerificationRule(auth()->user()->phone_number)],
]);
auth()->user()->update([
'phone_number_verified_at' => now(),
]);
return redirect('/');
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class EnsurePhoneNumberIsValidated
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
if ($request->user() && ! $request->user()->phone_number_verified_at) {
return redirect()->route('otp.verify');
}
return $next($request);
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class RedirectIfPhoneNumberIsVerified
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
if ($request->user() && $request->user()->phone_number_verified_at) {
return redirect('/');
}
return $next($request);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Modules\OTPVerification\Rules;
use App\Modules\OTPVerification\Models\OTPVerification;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
class OTPVerificationRule implements ValidationRule
{
public function __construct(public null|int|string $username)
{
}
/**
* Run the validation rule.
*
* @param \Closure(string, ?string=): \Illuminate\Translation\PotentiallyTranslatedString $fail
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{
if (! $value || ! $this->username) {
$fail(__('Write a correct data please'));
return;
}
OTPVerification::where('username', $this->username)
->where('code', $value)
->existsOr(fn () => $fail(__('Write a correct data please')));
}
}

View File

@@ -4,6 +4,7 @@ namespace App\Providers\Filament;
use App\Filament\Pages\Auth\Login;
use App\Filament\Pages\Auth\Register;
use App\Http\Middleware\EnsurePhoneNumberIsValidated;
use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent;
@@ -49,6 +50,7 @@ class AdminPanelProvider extends PanelProvider
ShareErrorsFromSession::class,
VerifyCsrfToken::class,
SubstituteBindings::class,
EnsurePhoneNumberIsValidated::class,
DisableBladeIconComponents::class,
DispatchServingFilamentEvent::class,
])