diff --git a/routes/web.php b/routes/web.php index 36ebfe7..cce6cff 100644 --- a/routes/web.php +++ b/routes/web.php @@ -62,11 +62,14 @@ Route::get('/comments', fn () => redirect()->route('comments', [], 301)); Route::get('/login.shtml', [AuthController::class, 'showLogin'])->name('login'); Route::get('/login', fn () => redirect()->route('login', [], 301)); +Route::post('/login.shtml', [AuthController::class, 'login']); Route::post('/login', [AuthController::class, 'login']); -Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); +Route::post('/logout.shtml', [AuthController::class, 'logout'])->name('logout'); +Route::post('/logout', [AuthController::class, 'logout']); Route::get('/register.shtml', [AuthController::class, 'showRegister'])->name('register'); Route::get('/register', fn () => redirect()->route('register', [], 301)); +Route::post('/register.shtml', [AuthController::class, 'register']); Route::post('/register', [AuthController::class, 'register']); Route::get('/profile.shtml', [AuthController::class, 'profile'])->middleware('auth')->name('profile'); diff --git a/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/Fiu6NSdVADQ9oDKXbJE65jm9aDviZ0r2.jpg b/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/Fiu6NSdVADQ9oDKXbJE65jm9aDviZ0r2.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/Fiu6NSdVADQ9oDKXbJE65jm9aDviZ0r2.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/RpDtcdyiATFxTkvLRKMCBIrnWkztCygCthumb.jpg b/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/RpDtcdyiATFxTkvLRKMCBIrnWkztCygCthumb.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/RpDtcdyiATFxTkvLRKMCBIrnWkztCygCthumb.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/EMueufkOUXBhnIqQo4nvtCmGECl844vm.jpg b/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/EMueufkOUXBhnIqQo4nvtCmGECl844vm.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/EMueufkOUXBhnIqQo4nvtCmGECl844vm.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/kZmZZZbYcAwRfUjmTgsXoYqLg0azu9zZthumb.jpg b/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/kZmZZZbYcAwRfUjmTgsXoYqLg0azu9zZthumb.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/kZmZZZbYcAwRfUjmTgsXoYqLg0azu9zZthumb.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/4NY67HytEGzdvdprotBZIMK0v30i96tf.jpg b/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/4NY67HytEGzdvdprotBZIMK0v30i96tf.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/4NY67HytEGzdvdprotBZIMK0v30i96tf.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/cViWvK8Vtg0OqDKtbx8fe6q2b8Sl1a0vthumb.jpg b/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/cViWvK8Vtg0OqDKtbx8fe6q2b8Sl1a0vthumb.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/cViWvK8Vtg0OqDKtbx8fe6q2b8Sl1a0vthumb.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/5UprL9uJd1hb1G23T2ydz0tDikUg49aD.jpg b/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/5UprL9uJd1hb1G23T2ydz0tDikUg49aD.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/5UprL9uJd1hb1G23T2ydz0tDikUg49aD.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/db8FN6bCHXpIYSHY3yxpQuLbgc4ikGoUthumb.jpg b/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/db8FN6bCHXpIYSHY3yxpQuLbgc4ikGoUthumb.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/db8FN6bCHXpIYSHY3yxpQuLbgc4ikGoUthumb.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/IPGaRZud4xYCcLOgRkfjFF7gcO48ovOHthumb.jpg b/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/IPGaRZud4xYCcLOgRkfjFF7gcO48ovOHthumb.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/IPGaRZud4xYCcLOgRkfjFF7gcO48ovOHthumb.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/UDUyVVtSnvuYSjqOIOGn1XAD2ZObdZ1N.jpg b/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/UDUyVVtSnvuYSjqOIOGn1XAD2ZObdZ1N.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/UDUyVVtSnvuYSjqOIOGn1XAD2ZObdZ1N.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/tests/Feature/AuthFlowTest.php b/tests/Feature/AuthFlowTest.php new file mode 100644 index 0000000..39d493f --- /dev/null +++ b/tests/Feature/AuthFlowTest.php @@ -0,0 +1,72 @@ +seed(); + } + + public function test_login_form_posts_to_shtml(): void + { + $this->post('/login.shtml', [ + 'email' => 'admin@laralog.test', + 'password' => 'password', + ])->assertRedirect('/'); + + $this->assertAuthenticated(); + } + + public function test_register_form_posts_to_shtml(): void + { + $this->post('/register.shtml', [ + 'name' => '新用户', + 'email' => 'new@test.com', + 'password' => 'password123', + 'password_confirmation' => 'password123', + ])->assertRedirect('/profile.shtml'); + + $this->assertAuthenticated(); + $this->assertDatabaseHas('users', ['email' => 'new@test.com']); + } + + public function test_logout_form_posts_to_shtml(): void + { + $user = User::where('email', 'admin@laralog.test')->first(); + $this->actingAs($user)->post('/logout.shtml')->assertRedirect('/'); + + $this->assertGuest(); + } + + public function test_front_pages_use_shtml_links(): void + { + $user = User::create(['name' => '作者', 'email' => 'w@t.com', 'password' => bcrypt('x')]); + \App\Models\Post::create([ + 'user_id' => $user->id, + 'title' => '链接测试', + 'slug' => 'link-test', + 'content' => '内容', + 'content_format' => 'markdown', + 'status' => 'published', + 'published_at' => now(), + ]); + + $html = $this->get('/')->getContent(); + + // 前台链接应生成 .shtml(不含硬编码无后缀路径) + $this->assertStringContainsString('/posts/link-test.shtml', $html); + $this->assertStringNotContainsString('href="/posts/link-test"', $html); + $this->assertStringNotContainsString('href="/archives"', $html); + $this->assertStringContainsString('href="http://laralog.test/archives.shtml"', $html); + } +}