Check file extensions

This commit is contained in:
2023-12-02 22:29:57 +05:00
parent b780a31a00
commit e940d17bad
9 changed files with 48 additions and 23 deletions

View File

@@ -7,7 +7,6 @@ use Illuminate\Support\Facades\Log;
/** /**
* Un mask phone from "+(993)-xx-xx-xx-xx" * Un mask phone from "+(993)-xx-xx-xx-xx"
* @param string|int $phone
*/ */
function unMaskPhone(string|int $phone): string function unMaskPhone(string|int $phone): string
{ {
@@ -24,7 +23,7 @@ function sendSMS(string|int $phone, string|int $message)
$client = new Client(); $client = new Client();
$headers = [ $headers = [
'Content-Type' => 'application/json;charset=utf-8;', 'Content-Type' => 'application/json;charset=utf-8;',
'Charset' => 'UTF-8' 'Charset' => 'UTF-8',
]; ];
$body = 'JSON={ $body = 'JSON={
"SendRequest": { "SendRequest": {

View File

@@ -8,12 +8,11 @@ use App\Models\User;
use App\Rules\PhoneCodeVerification; use App\Rules\PhoneCodeVerification;
use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Events\Registered;
use Illuminate\Contracts\View\View; use Illuminate\Contracts\View\View;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Laravel\Nova\Nova;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Laravel\Nova\Nova;
class RegisterController extends Controller class RegisterController extends Controller
{ {
@@ -39,7 +38,6 @@ class RegisterController extends Controller
/** /**
* Handle a registration request for the application. * Handle a registration request for the application.
* *
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
*/ */
public function register(Request $request) public function register(Request $request)
@@ -104,11 +102,11 @@ class RegisterController extends Controller
public function verifySmsCode(Request $request) public function verifySmsCode(Request $request)
{ {
$request->validate([ $request->validate([
'code' => ['required', 'integer', new PhoneCodeVerification()] 'code' => ['required', 'integer', new PhoneCodeVerification()],
]); ]);
auth()->user()->update([ auth()->user()->update([
'phone_verified_at' => now() 'phone_verified_at' => now(),
]); ]);
return redirect(Nova::path()); return redirect(Nova::path());

View File

@@ -64,5 +64,6 @@ class Kernel extends HttpKernel
'signed' => \App\Http\Middleware\ValidateSignature::class, 'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'un_verified' => \App\Http\Middleware\RedirectIfPhoneIsVerified::class,
]; ];
} }

View File

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

View File

@@ -114,4 +114,12 @@ class User extends Authenticatable
{ {
return $this->id === $loanOrder->user_id; return $this->id === $loanOrder->user_id;
} }
/**
* Check if phone is verified
*/
public function phoneIsVerified(): bool
{
return ! is_null($this->phone_verified_at);
}
} }

View File

@@ -316,28 +316,28 @@ class LoanOrder extends Resource
Image::make(__('Passport (page 1)'), 'passport_one') Image::make(__('Passport (page 1)'), 'passport_one')
->size('w-1/2') ->size('w-1/2')
->deletable(false) ->deletable(false)
->rules('max:2048') ->rules('max:2048', 'mimes:jpg,png,jpeg')
->creationRules('required') ->creationRules('required')
->updateRules('nullable'), ->updateRules('nullable'),
Image::make(__('Passport (page 2-3)'), 'passport_two') Image::make(__('Passport (page 2-3)'), 'passport_two')
->size('w-1/2') ->size('w-1/2')
->deletable(false) ->deletable(false)
->rules('max:2048') ->rules('max:2048', 'mimes:jpg,png,jpeg')
->creationRules('required') ->creationRules('required')
->updateRules('nullable'), ->updateRules('nullable'),
Image::make(__('Passport (page 8-9)'), 'passport_three') Image::make(__('Passport (page 8-9)'), 'passport_three')
->size('w-1/2') ->size('w-1/2')
->deletable(false) ->deletable(false)
->rules('max:2048') ->rules('max:2048', 'mimes:jpg,png,jpeg')
->creationRules('required') ->creationRules('required')
->updateRules('nullable'), ->updateRules('nullable'),
Image::make(__('Passport (page 32)'), 'passport_four') Image::make(__('Passport (page 32)'), 'passport_four')
->size('w-1/2') ->size('w-1/2')
->deletable(false) ->deletable(false)
->rules('max:2048') ->rules('max:2048', 'mimes:jpg,png,jpeg')
->creationRules('required') ->creationRules('required')
->updateRules('nullable'), ->updateRules('nullable'),
]), ]),

View File

@@ -90,13 +90,7 @@
</span> </span>
@enderror @enderror
</div> </div>
<div class="flex mb-6"> <div class="mb-6"></div>
<div class="ml-auto">
<a class="text-gray-500 font-bold no-underline" href="">
{{ __('Forgot your password?') }}
</a>
</div>
</div>
<button class="w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 mb-3 w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center" type="submit"> <button class="w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 mb-3 w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center" type="submit">
<span class=""><span>{{ __('Register') }}</span></span> <span class=""><span>{{ __('Register') }}</span></span>
</button> </button>

View File

@@ -20,7 +20,7 @@ Route::middleware('guest')->group(function () {
Route::post('/register', [RegisterController::class, 'register']); Route::post('/register', [RegisterController::class, 'register']);
}); });
Route::middleware('auth')->group(function () { Route::middleware(['auth', 'un_verified'])->group(function () {
Route::get('sms-verification', [RegisterController::class, 'smsVerification'])->name('sms-verification'); Route::get('sms-verification', [RegisterController::class, 'smsVerification'])->name('sms-verification');
Route::post('sms-verification', [RegisterController::class, 'verifySmsCode']); Route::post('sms-verification', [RegisterController::class, 'verifySmsCode']);
}); });