From 162232e2709b16e17a597efa36696752653ccb95 Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Mon, 3 Mar 2025 15:55:11 +0500 Subject: [PATCH] password reset added --- .../Controllers/PasswordChangeController.php | 31 +++++++++ .../Middleware/CheckPasswordMustBeChanged.php | 2 +- .../VisaMasterPaymentOrderFieldsForDetail.php | 1 - app/Nova/User.php | 38 +++++++---- .../views/auth/password-change.blade.php | 63 +++++++++++++++++++ routes/web.php | 7 ++- 6 files changed, 124 insertions(+), 18 deletions(-) create mode 100644 app/Http/Controllers/PasswordChangeController.php create mode 100644 resources/views/auth/password-change.blade.php diff --git a/app/Http/Controllers/PasswordChangeController.php b/app/Http/Controllers/PasswordChangeController.php new file mode 100644 index 0000000..2ce5bc6 --- /dev/null +++ b/app/Http/Controllers/PasswordChangeController.php @@ -0,0 +1,31 @@ +validate([ + 'password' => ['string', 'min:8', 'confirmed'], + ]); + + $request->user()->update([ + 'password' => bcrypt($request->password), + 'password_must_be_changed' => false, + ]); + + storeAuthEvent(EventType::PASSWORD_RESET, request()); + + return redirect(Nova::path()); + } +} diff --git a/app/Http/Middleware/CheckPasswordMustBeChanged.php b/app/Http/Middleware/CheckPasswordMustBeChanged.php index 1c23f4f..e84b733 100644 --- a/app/Http/Middleware/CheckPasswordMustBeChanged.php +++ b/app/Http/Middleware/CheckPasswordMustBeChanged.php @@ -24,7 +24,7 @@ class CheckPasswordMustBeChanged } if (boolval($request->user()->password_must_be_changed)) { - return to_route('sms-verification'); + return to_route('password-change'); } return $next($request); diff --git a/app/Modules/VisaMasterPaymentOrder/Nova/Resources/Concerns/VisaMasterPaymentOrderFieldsForDetail.php b/app/Modules/VisaMasterPaymentOrder/Nova/Resources/Concerns/VisaMasterPaymentOrderFieldsForDetail.php index e62e985..2ba25f5 100644 --- a/app/Modules/VisaMasterPaymentOrder/Nova/Resources/Concerns/VisaMasterPaymentOrderFieldsForDetail.php +++ b/app/Modules/VisaMasterPaymentOrder/Nova/Resources/Concerns/VisaMasterPaymentOrderFieldsForDetail.php @@ -13,7 +13,6 @@ use Ebess\AdvancedNovaMediaLibrary\Fields\Files; use Laravel\Nova\Fields\Badge; use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\HasMany; -use Laravel\Nova\Fields\Hidden; use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\Select; use Laravel\Nova\Fields\Text; diff --git a/app/Nova/User.php b/app/Nova/User.php index 0ce52b8..1197355 100644 --- a/app/Nova/User.php +++ b/app/Nova/User.php @@ -7,6 +7,7 @@ use App\Nova\Resources\Branch\Branch; use App\Nova\Resources\System\Roles\Permission; use App\Nova\Resources\System\Roles\Role; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; use Illuminate\Validation\Rules; use Laravel\Nova\Fields\BelongsToMany; @@ -14,10 +15,10 @@ use Laravel\Nova\Fields\Boolean; use Laravel\Nova\Fields\Hidden; use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\MorphToMany; +use Laravel\Nova\Fields\Number; use Laravel\Nova\Fields\Password; use Laravel\Nova\Fields\Text; use Laravel\Nova\Http\Requests\NovaRequest; -use Nurmuhammet\NovaInputmask\NovaInputmask; class User extends Resource { @@ -29,11 +30,12 @@ class User extends Resource public static $model = \App\Models\User::class; /** - * The single value that should be used to represent the resource when being displayed. - * - * @var string + * Get the value that should be displayed to represent the resource. */ - public static $title = 'name'; + public function title(): string + { + return $this->username.sprintf(' (%s)', $this->phone); + } /** * The columns that should be searched. @@ -71,6 +73,18 @@ class User extends Resource return __('User'); } + /** + * Register a callback to be called after the resource is created. + * + * @param \Laravel\Nova\Http\Requests\NovaRequest $request + * @param \Illuminate\Database\Eloquent\Model $model + * @return void + */ + public static function afterCreate(NovaRequest $request, Model $model) + { + sendSMSVerification($model->phone); + } + /** * Get the fields displayed by the resource. * @@ -91,10 +105,8 @@ class User extends Resource ->sortable() ->rules('required', 'max:255'), - NovaInputmask::make(__('Phone'), 'phone') - ->mask('+(\\9\\93)-99-99-99-99') - ->storeRawValue() - ->rules('nullable', 'integer', 'between:61000000, 71999999'), + Number::make(__('Phone'), 'phone') + ->rules('required', 'integer', 'between:61000000,71999999', 'unique:users,phone'), Text::make(__('Email'), 'email') ->sortable() @@ -142,7 +154,7 @@ class User extends Resource * * @return array */ - public function cards(NovaRequest $request) + public function cards(NovaRequest $request): array { return []; } @@ -152,7 +164,7 @@ class User extends Resource * * @return array */ - public function filters(NovaRequest $request) + public function filters(NovaRequest $request): array { return []; } @@ -162,7 +174,7 @@ class User extends Resource * * @return array */ - public function lenses(NovaRequest $request) + public function lenses(NovaRequest $request): array { return []; } @@ -172,7 +184,7 @@ class User extends Resource * * @return array */ - public function actions(NovaRequest $request) + public function actions(NovaRequest $request): array { return []; } diff --git a/resources/views/auth/password-change.blade.php b/resources/views/auth/password-change.blade.php new file mode 100644 index 0000000..bb3f00e --- /dev/null +++ b/resources/views/auth/password-change.blade.php @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + +
+
+ {{ __('Online panel') }} +
+
+
+ @csrf +

{{ __('Reset Password') }}

+ + + +
+ + + + + + + @if($errors->any()) + @foreach($errors->all() as $error) +

{{ $error }}

+ @endforeach + @endif +
+ +
+
+
+ + + + diff --git a/routes/web.php b/routes/web.php index cd01e8d..cd66114 100644 --- a/routes/web.php +++ b/routes/web.php @@ -5,7 +5,7 @@ use App\Http\Controllers\Auth\RegisterController; use App\Http\Controllers\Auth\ResetPasswordController; use App\Http\Controllers\LocaleController; use App\Http\Controllers\OnlinePaymentController; -use App\Http\Middleware\CheckPasswordMustBeChanged; +use App\Http\Controllers\PasswordChangeController; use Illuminate\Support\Facades\Route; /* @@ -37,8 +37,9 @@ Route::middleware(['auth', 'unVerified'])->group(function () { Route::post('sms-verification', [RegisterController::class, 'verifySmsCode']); }); -Route::middleware(['auth', CheckPasswordMustBeChanged::class])->group(function () { - +Route::middleware(['auth'])->group(function () { + Route::get('password-change', [PasswordChangeController::class, 'index'])->name('password-change'); + Route::post('password-change', [PasswordChangeController::class, 'update'])->name('password-change.update'); }); Route::get('online-payment-store', [OnlinePaymentController::class, 'store'])