From d07cad1cd83006d956659027535db3fe14b9dad6 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 7 Aug 2022 13:13:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=94=AF=E6=8C=81=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=99=BB=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/UserController.php | 67 +++++++++++++++++++ app/Models/User.php | 44 ++++++++++++ app/Providers/RouteServiceProvider.php | 10 +-- database/factories/UserFactory.php | 39 +++++++++++ .../2014_10_12_000000_create_users_table.php | 36 ++++++++++ ...12_100000_create_password_resets_table.php | 32 +++++++++ ..._08_19_000000_create_failed_jobs_table.php | 36 ++++++++++ ...01_create_personal_access_tokens_table.php | 36 ++++++++++ resources/views/common/header.blade.php | 8 +++ .../program/construct/video/create.blade.php | 2 +- resources/views/user/login.blade.php | 35 ++++++++++ resources/views/user/register.blade.php | 35 ++++++++++ routes/api.php | 19 ++++++ routes/web.php | 8 ++- webpack.mix.js | 2 + 15 files changed, 402 insertions(+), 7 deletions(-) create mode 100644 app/Http/Controllers/UserController.php create mode 100644 app/Models/User.php create mode 100644 database/factories/UserFactory.php create mode 100644 database/migrations/2014_10_12_000000_create_users_table.php create mode 100644 database/migrations/2014_10_12_100000_create_password_resets_table.php create mode 100644 database/migrations/2019_08_19_000000_create_failed_jobs_table.php create mode 100644 database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php create mode 100644 resources/views/user/login.blade.php create mode 100644 resources/views/user/register.blade.php create mode 100644 routes/api.php diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php new file mode 100644 index 0000000..33397e3 --- /dev/null +++ b/app/Http/Controllers/UserController.php @@ -0,0 +1,67 @@ +validate([ + "username" => ["required"], + "password" => ["required"], + ]); + $credentials = [ + "password" => $request->post("password"), + ]; + if (str_contains($request->post("username"), "@")) { + $credentials["email"] = $request->post("username"); + } else { + $credentials["name"] = $request->post("username"); + } + if (Auth::attempt($credentials, $request->post("remember", 0) == 1)) { + $request->session()->regenerate(); + return redirect()->intended(); + } + return back()->withErrors([ + "username" => "无此用户", + ]); + } + + public function logout(Request $request) + { + Auth::logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + return redirect("/"); + } + + public function register_page(Request $request) + { + return view("user.register"); + } + + public function register(Request $request) + { + $request_payload = $request->validate([ + "name" => ["required", "unique:users"], + "email" => ["required", "email", "unique:users"], + "password" => ["required"], + ]); + $user = new User(); + $request_payload["password"] = Hash::make($request_payload["password"]); + $user->fill($request_payload); + $user->save(); + return redirect(route("login")); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..8996368 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,44 @@ + + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'email_verified_at' => 'datetime', + ]; +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 6c73741..affd6da 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider * * @var string */ - public const HOME = '/home'; + public const HOME = '/'; /** * The controller namespace for the application. @@ -38,10 +38,10 @@ class RouteServiceProvider extends ServiceProvider $this->configureRateLimiting(); $this->routes(function () { -// Route::prefix('api') -// ->middleware('api') -// ->namespace($this->namespace) -// ->group(base_path('routes/api.php')); + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); Route::middleware('web') ->namespace($this->namespace) diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..a3eb239 --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,39 @@ + $this->faker->name(), + 'email' => $this->faker->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + * + * @return \Illuminate\Database\Eloquent\Factories\Factory + */ + public function unverified() + { + return $this->state(function (array $attributes) { + return [ + 'email_verified_at' => null, + ]; + }); + } +} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..621a24e --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('users'); + } +} diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100644 index 0000000..0ee0a36 --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +} diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..6aa6d74 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('failed_jobs'); + } +} diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..4315e16 --- /dev/null +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,36 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('personal_access_tokens'); + } +} diff --git a/resources/views/common/header.blade.php b/resources/views/common/header.blade.php index b8c94f6..9e397c8 100644 --- a/resources/views/common/header.blade.php +++ b/resources/views/common/header.blade.php @@ -6,5 +6,13 @@ 节目单查询 直播弹幕查询 节目查询 + @auth + 节目建设 + 登出 +
{{ Auth::user()->name }}
+ @endauth + @guest + 登录 + @endguest diff --git a/resources/views/program/construct/video/create.blade.php b/resources/views/program/construct/video/create.blade.php index 2550448..4be2e9b 100644 --- a/resources/views/program/construct/video/create.blade.php +++ b/resources/views/program/construct/video/create.blade.php @@ -11,7 +11,7 @@