From 277a5d5a31a39fd28eb89e3f8bd84f524ee470f3 Mon Sep 17 00:00:00 2001 From: NaggaDIM Date: Thu, 2 Jan 2025 00:05:09 +0300 Subject: [PATCH] temp --- app/Http/Controllers/DashboardController.php | 11 + app/Http/Controllers/IndexController.php | 15 + .../NeedVerificationController.php | 11 + app/Http/Middleware/HandleInertiaRequests.php | 4 + .../ProfileVerificationMiddleware.php | 22 ++ app/Models/User.php | 2 + ..._212840_add_verified_at_to_users_table.php | 22 ++ database/seeders/DatabaseSeeder.php | 7 +- database/seeders/UsersSeeder.php | 25 ++ resources/js/Layouts/GuestLayout.vue | 88 ++++- resources/js/Pages/Auth/Login.vue | 12 +- resources/js/Pages/Auth/Register.vue | 14 +- .../js/Pages/NeedProfileVerification.vue | 53 +++ resources/js/Pages/Welcome.vue | 344 +----------------- routes/auth.php | 42 +-- routes/web.php | 22 +- 16 files changed, 297 insertions(+), 397 deletions(-) create mode 100644 app/Http/Controllers/DashboardController.php create mode 100644 app/Http/Controllers/IndexController.php create mode 100644 app/Http/Controllers/NeedVerificationController.php create mode 100644 app/Http/Middleware/ProfileVerificationMiddleware.php create mode 100644 database/migrations/2024_12_30_212840_add_verified_at_to_users_table.php create mode 100644 database/seeders/UsersSeeder.php create mode 100644 resources/js/Pages/NeedProfileVerification.vue diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php new file mode 100644 index 0000000..fd147a8 --- /dev/null +++ b/app/Http/Controllers/DashboardController.php @@ -0,0 +1,11 @@ +with('canLogin', Route::has('login')) + ->with('canRegister', Route::has('register')); + } +} diff --git a/app/Http/Controllers/NeedVerificationController.php b/app/Http/Controllers/NeedVerificationController.php new file mode 100644 index 0000000..05a3a9d --- /dev/null +++ b/app/Http/Controllers/NeedVerificationController.php @@ -0,0 +1,11 @@ +toArray(), 'location' => $request->url(), ], + 'currentYear' => now()->year, + 'canLogin' => Route::has('login'), + 'canRegister' => Route::has('register'), ]; } } diff --git a/app/Http/Middleware/ProfileVerificationMiddleware.php b/app/Http/Middleware/ProfileVerificationMiddleware.php new file mode 100644 index 0000000..dec2a0a --- /dev/null +++ b/app/Http/Middleware/ProfileVerificationMiddleware.php @@ -0,0 +1,22 @@ +user()->verified_at) && !($request->routeIs('profile.need-verification') || $request->routeIs('index'))) { + return redirect()->route('profile.need-verification'); + } + + if(!empty($request->user()->verified_at) && $request->routeIs('profile.need-verification')) { + return redirect()->route('dashboard'); + } + + return $next($request); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 749c7b7..decd682 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -21,6 +21,7 @@ class User extends Authenticatable 'name', 'email', 'password', + 'verified_at' ]; /** @@ -41,6 +42,7 @@ class User extends Authenticatable protected function casts(): array { return [ + 'verified_at' => 'datetime', 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; diff --git a/database/migrations/2024_12_30_212840_add_verified_at_to_users_table.php b/database/migrations/2024_12_30_212840_add_verified_at_to_users_table.php new file mode 100644 index 0000000..4fc4f77 --- /dev/null +++ b/database/migrations/2024_12_30_212840_add_verified_at_to_users_table.php @@ -0,0 +1,22 @@ +getTable(), function (Blueprint $table) { + $table->timestamp('verified_at')->nullable(); + }); + } + + public function down(): void + { + Schema::table(app(User::class)->getTable(), function (Blueprint $table) { + $table->dropColumn('verified_at'); + }); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index d01a0ef..625e954 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -13,11 +13,6 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // User::factory(10)->create(); - - User::factory()->create([ - 'name' => 'Test User', - 'email' => 'test@example.com', - ]); + $this->call(UsersSeeder::class); } } diff --git a/database/seeders/UsersSeeder.php b/database/seeders/UsersSeeder.php new file mode 100644 index 0000000..88a5b39 --- /dev/null +++ b/database/seeders/UsersSeeder.php @@ -0,0 +1,25 @@ + 'admin@naggadim.ru'], + [ + 'name' => 'Dmitry Smertin', + 'email' => 'admin@naggadim.ru', + 'password' => bcrypt('password'), + 'verified_at' => now(), + 'email_verified_at' => now(), + ] + ); + + echo "User \"admin@naggadim.ru\" created\n"; + } +} diff --git a/resources/js/Layouts/GuestLayout.vue b/resources/js/Layouts/GuestLayout.vue index da02370..913d244 100644 --- a/resources/js/Layouts/GuestLayout.vue +++ b/resources/js/Layouts/GuestLayout.vue @@ -1,22 +1,86 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/js/Pages/Auth/Login.vue b/resources/js/Pages/Auth/Login.vue index 4929f2c..ef94ed0 100644 --- a/resources/js/Pages/Auth/Login.vue +++ b/resources/js/Pages/Auth/Login.vue @@ -31,7 +31,7 @@ const submit = () => {