diff --git a/README.md b/README.md index 1aa7022..4a16ca7 100644 --- a/README.md +++ b/README.md @@ -1 +1,5 @@ # Online tbbank dashboard + +# Password Reset +# Status uytganden son uytgedip bilenok +# Etraplar goshmaly diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 58d069c..8299e2f 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -60,7 +60,7 @@ class RegisterController extends Controller */ protected function validator(array $data) { - $data['phone'] = unMaskPhone($data['phone']); + $data['phone'] = unMaskPhone($data['phone'] ?? ''); return Validator::make($data, [ 'name' => ['required', 'string', 'max:255'], diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php new file mode 100644 index 0000000..4e4283e --- /dev/null +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,33 @@ +validate(['username' => ['required', 'string', 'max:250', 'exists:users,username']]); + + $user = User::where('username', $request->username)->first(); + + // sendSMSVerification($user->phone); + + return response()->json(['message' => __('We send you a code')]); + } +} diff --git a/app/Http/Middleware/PhoneIsNotVerified.php b/app/Http/Middleware/RedirectIfPhoneIsVerified.php similarity index 100% rename from app/Http/Middleware/PhoneIsNotVerified.php rename to app/Http/Middleware/RedirectIfPhoneIsVerified.php diff --git a/database/seeders/UsersTableSeeder.php b/database/seeders/UsersTableSeeder.php index 4ecc6d4..1984d0c 100644 --- a/database/seeders/UsersTableSeeder.php +++ b/database/seeders/UsersTableSeeder.php @@ -39,11 +39,13 @@ class UsersTableSeeder extends Seeder 'username' => 'nurmuhammet', 'name' => 'Nurmuhammet Allanov', 'email' => 'nurmuhammet@mail.com', + 'phone' => '61929248', 'password' => '$2y$10$O7LFNdFIT3Rmfeo8tUfbqekB0x0incovkRP6eQuzvb7dVXysQyyBC', ], [ 'username' => 'mahmyt', 'name' => 'Mahmyt Allaberdiyev', 'email' => 'mahmyt1206@gmail.com', + 'phone' => '65707012', 'password' => '$2y$10$O7LFNdFIT3Rmfeo8tUfbqekB0x0incovkRP6eQuzvb7dVXysQyyBC', ], [ 'username' => 'dowran', diff --git a/lang/tk.json b/lang/tk.json index ae5214a..6a7b2da 100644 --- a/lang/tk.json +++ b/lang/tk.json @@ -42,7 +42,6 @@ "Expectation Failed": "Garaşmak başa barmady", "Failed Dependency": "Şowsuzlyk", "Forbidden": "Gadagan", - "Forgot Your Password?": "Açar sözüni ýatdan çykardyňyzmy?", "Found": "Tapyldy", "Gateway Timeout": "Derweze wagty", "Go to page :page": ":Page-nji sahypa geçiň", @@ -219,5 +218,6 @@ "Go to login page": "Login sahypa geç", "Submit": "Tassyklamak", "Verification code": "Tassyklaýyş belgi", - "Please, verify your phone": "Telefon beligiňizi tassyklamagyňyzy haýyş edýäris." + "Please, verify your phone": "Telefon beligiňizi tassyklamagyňyzy haýyş edýäris.", + "Enter your username to continue": "Dowam etmek üçin ulanyjy adyny giriziň" } diff --git a/public/assets/js/fn.js b/public/assets/js/fn.js new file mode 100644 index 0000000..ba2c885 --- /dev/null +++ b/public/assets/js/fn.js @@ -0,0 +1,45 @@ +function $_ID(id) { + return document.getElementById(id) +} + +function getFormData(event) { + return Object.fromEntries(new FormData(event.target).entries()) +} + +function loopObject(obj, callback) { + for (let [key, value] of Object.entries(obj)) { + callback({ key, value }) + } +} + +async function postData(url = '', data = {}) { + const response = await fetch(url, { + method: 'POST', + mode: 'cors', + cache: 'no-cache', + credentials: 'same-origin', + headers: { + 'Content-Type': 'application/json', + 'X-Requested-With': 'XMLHttpRequest' + }, + referrerPolicy: 'no-referrer', + body: JSON.stringify(data) + }) + + return response.json() +} + +function addValidationClasses(item) { + $_ID(item.key).classList.add('form-input-border-error') + $_ID(`${item.key}-error-box`).innerHTML = `${item.value}` +} + +function removeValidationClasess() { + Array.from(document.getElementsByClassName('form-input-border-error')).forEach(element => { + element.classList.remove('form-input-border-error') + }); + + Array.from(document.getElementsByClassName('error-box')).forEach(element => { + element.innerHTML = '' + }) +} diff --git a/resources/views/vendor/nova/pages/login.blade.php b/resources/views/vendor/nova/pages/login.blade.php index b8be07f..4813568 100644 --- a/resources/views/vendor/nova/pages/login.blade.php +++ b/resources/views/vendor/nova/pages/login.blade.php @@ -10,14 +10,6 @@ -
@@ -35,23 +27,29 @@ - + + + @error('username') + + {{ $message }} + + @enderror
- + - @if($errors->any()) - @foreach($errors->all() as $error) -

{{ $error }}

- @endforeach - @endif + @error('password') + + {{ $message }} + + @enderror
- + {{ __('Forgot your password?') }}
@@ -65,7 +63,5 @@
- - diff --git a/resources/views/vendor/nova/pages/register.blade.php b/resources/views/vendor/nova/pages/register.blade.php index b5a6434..308ded9 100644 --- a/resources/views/vendor/nova/pages/register.blade.php +++ b/resources/views/vendor/nova/pages/register.blade.php @@ -9,14 +9,6 @@ -
@@ -24,7 +16,7 @@ {{ __('Online panel') }}
-
+ @csrf

{{ __('Welcome Back!') }}

@@ -34,7 +26,7 @@ - @@ -46,7 +38,7 @@ - + @error('phone') @@ -58,7 +50,7 @@ - + @error('username') @@ -70,7 +62,7 @@ - + @error('password') @@ -82,7 +74,7 @@ - + @error('password_confirmation') diff --git a/resources/views/vendor/nova/pages/reset-password.blade.php b/resources/views/vendor/nova/pages/reset-password.blade.php new file mode 100644 index 0000000..e680867 --- /dev/null +++ b/resources/views/vendor/nova/pages/reset-password.blade.php @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + +
+
+ {{ __('Forgot your password?') }} +
+
+ + @csrf +

{{ __('Enter your username to continue') }}

+ + + +
+ + + + +
+ +
+ + {{--
+ + +
--}} + + + + {{ __('Go to login page') }} + + +
+
+ + + + + diff --git a/routes/web.php b/routes/web.php index 79b99f6..2bd0ef2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,6 +2,7 @@ use App\Http\Controllers\Auth\LoginController; use App\Http\Controllers\Auth\RegisterController; +use App\Http\Controllers\Auth\ResetPasswordController; use Illuminate\Support\Facades\Route; /* @@ -18,6 +19,12 @@ use Illuminate\Support\Facades\Route; Route::middleware('guest')->group(function () { Route::get('/register', [RegisterController::class, 'showNovaRegisterpageForm'])->name('register'); Route::post('/register', [RegisterController::class, 'register']); + + Route::get('/login', [LoginController::class, 'showLoginForm'])->name('login'); + Route::post('/login', [LoginController::class, 'login']); + + Route::get('reset-password', [ResetPasswordController::class, 'index'])->name('reset-password'); + Route::post('reset-password', [ResetPasswordController::class, 'store']); }); Route::middleware(['auth', 'un_verified'])->group(function () { @@ -25,7 +32,4 @@ Route::middleware(['auth', 'un_verified'])->group(function () { Route::post('sms-verification', [RegisterController::class, 'verifySmsCode']); }); -Route::get('/login', [LoginController::class, 'showLoginForm'])->name('login'); -Route::post('/login', [LoginController::class, 'login']); - Route::redirect('/', config('nova.path'));