password reset added
This commit is contained in:
31
app/Http/Controllers/PasswordChangeController.php
Normal file
31
app/Http/Controllers/PasswordChangeController.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Events\EventType;
|
||||
use Illuminate\Http\Request;
|
||||
use Laravel\Nova\Nova;
|
||||
|
||||
class PasswordChangeController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view('auth.password-change');
|
||||
}
|
||||
|
||||
public function update(Request $request)
|
||||
{
|
||||
$request->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());
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<int, string>
|
||||
*/
|
||||
public function cards(NovaRequest $request)
|
||||
public function cards(NovaRequest $request): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
@@ -152,7 +164,7 @@ class User extends Resource
|
||||
*
|
||||
* @return array<int, string>
|
||||
*/
|
||||
public function filters(NovaRequest $request)
|
||||
public function filters(NovaRequest $request): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
@@ -162,7 +174,7 @@ class User extends Resource
|
||||
*
|
||||
* @return array<int, string>
|
||||
*/
|
||||
public function lenses(NovaRequest $request)
|
||||
public function lenses(NovaRequest $request): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
@@ -172,7 +184,7 @@ class User extends Resource
|
||||
*
|
||||
* @return array<int, string>
|
||||
*/
|
||||
public function actions(NovaRequest $request)
|
||||
public function actions(NovaRequest $request): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
63
resources/views/auth/password-change.blade.php
Normal file
63
resources/views/auth/password-change.blade.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="tk" dir="ltr" class="h-full font-sans antialiased">
|
||||
<head>
|
||||
<meta name="theme-color" content="#fff">
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width"/>
|
||||
<meta name="locale" content="tk"/>
|
||||
<meta name="robots" content="noindex">
|
||||
|
||||
<!-- Styles -->
|
||||
<link rel="stylesheet" href="/vendor/nova/app.css?id=496e3383c5e2918c7bc875f45870e701">
|
||||
<style>
|
||||
.bg-secondary-500 {
|
||||
background-color: rgb(186,230,253);
|
||||
}
|
||||
.hover:bg-secondary-400 {
|
||||
background-color: rgba(24, 182, 155, 0.5);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="min-w-site text-sm font-medium min-h-full text-gray-500 dark:text-gray-400 bg-gray-100 dark:bg-gray-900">
|
||||
<div class="py-6 px-1 md:px-2 lg:px-6">
|
||||
<div class="mx-auto py-8 max-w-sm flex justify-center">
|
||||
<span class="text-4xl">{{ __('Online panel') }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<form
|
||||
class="bg-white dark:bg-gray-800 shadow rounded-lg p-8 max-w-[25rem] mx-auto"
|
||||
method="POST"
|
||||
action="{{ route('password-change.update') }}"
|
||||
>
|
||||
@csrf
|
||||
<h2 class="text-2xl text-center font-normal mb-6">{{ __('Reset Password') }}</h2>
|
||||
<svg class="block mx-auto mb-6" xmlns="http://www.w3.org/2000/svg" width="100" height="2" viewBox="0 0 100 2">
|
||||
<path fill="#D8E3EC" d="M0 0h100v2H0z"></path>
|
||||
</svg>
|
||||
<div class="mb-6">
|
||||
<label class="block mb-2" for="code">
|
||||
{{ __('Password') }}
|
||||
</label>
|
||||
<input class="form-control form-input form-input-bordered w-full mb-2" id="password" type="password" name="password" required="">
|
||||
|
||||
<label class="block mb-2" for="code">
|
||||
{{ __('Confirm Password') }}
|
||||
</label>
|
||||
<input class="form-control form-input form-input-bordered w-full" id="password_confirmation" type="password" name="password_confirmation" required="">
|
||||
|
||||
@if($errors->any())
|
||||
@foreach($errors->all() as $error)
|
||||
<p class="mt-2 text-red-500">{{ $error }}</p>
|
||||
@endforeach
|
||||
@endif
|
||||
</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">
|
||||
<span class=""><span>{{ __('Submit') }}</span></span>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/inputmask.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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'])
|
||||
|
||||
Reference in New Issue
Block a user