diff --git a/app/Http/Controllers/Api/ApplicationController.php b/app/Http/Controllers/Api/ApplicationController.php index 263c2de..5fd0244 100644 --- a/app/Http/Controllers/Api/ApplicationController.php +++ b/app/Http/Controllers/Api/ApplicationController.php @@ -268,7 +268,7 @@ class ApplicationController extends Controller $app->load(['files']); - return response()->json($this->transform($app, false)); + return response()->json($this->transform($app, false, false)); } public function submit(Request $request): JsonResponse @@ -610,7 +610,7 @@ class ApplicationController extends Controller return $payload; } - private function transform(Application $app, bool $includeSignature = true): array + private function transform(Application $app, bool $includeSignature = true, bool $prefillBlanksFromUser = true): array { $payload = array_merge([ 'id' => $app->id, @@ -640,7 +640,7 @@ class ApplicationController extends Controller $payload['promise_signature'] = $app->promise_signature; } - return $this->applySignupPrefillSources($app, $payload); + return $prefillBlanksFromUser ? $this->applySignupPrefillSources($app, $payload) : $payload; } private function normalizeSignupOptionInputs(Request $request): void diff --git a/public/frontend/assets/fonts/SmileySans-Oblique.woff2 b/public/frontend/assets/fonts/SmileySans-Oblique.woff2 deleted file mode 100644 index 0da5a7f..0000000 Binary files a/public/frontend/assets/fonts/SmileySans-Oblique.woff2 and /dev/null differ diff --git a/public/frontend/assets/fonts/SourceHanSansSC-Heavy-gb2312.woff2 b/public/frontend/assets/fonts/SourceHanSansSC-Heavy-gb2312.woff2 deleted file mode 100644 index cb063de..0000000 Binary files a/public/frontend/assets/fonts/SourceHanSansSC-Heavy-gb2312.woff2 and /dev/null differ diff --git a/public/frontend/assets/fonts/SourceHanSansSC-Medium-gb2312.woff2 b/public/frontend/assets/fonts/SourceHanSansSC-Medium-gb2312.woff2 deleted file mode 100644 index e2ed2c4..0000000 Binary files a/public/frontend/assets/fonts/SourceHanSansSC-Medium-gb2312.woff2 and /dev/null differ diff --git a/public/frontend/event-site.html b/public/frontend/event-site.html index fd1ba24..34c5e1b 100644 --- a/public/frontend/event-site.html +++ b/public/frontend/event-site.html @@ -5543,7 +5543,6 @@ height: 100%; object-fit: contain; } - .hero-banner img[src^="data:"] { visibility: hidden; } .hero-orbit-beams { position: absolute; z-index: 8; @@ -5650,7 +5649,7 @@
- +
diff --git a/tests/Feature/ParticipantApplicationSaveTest.php b/tests/Feature/ParticipantApplicationSaveTest.php index 3cd0526..cddfba6 100644 --- a/tests/Feature/ParticipantApplicationSaveTest.php +++ b/tests/Feature/ParticipantApplicationSaveTest.php @@ -37,4 +37,66 @@ class ParticipantApplicationSaveTest extends TestCase ->assertJsonPath('player_name', '张三') ->assertJsonPath('project_name', '测试项目'); } + + public function test_second_draft_save_rejects_invalid_email_and_keeps_previous_value(): void + { + $user = User::query()->create(['mobile' => '13800138089']); + $competition = Competition::query()->create([ + 'slug' => 'xxf-email', + 'name' => '测试赛', + 'published' => true, + ]); + Application::query()->create([ + 'user_id' => $user->id, + 'competition_id' => $competition->id, + 'status' => 'draft', + ]); + + Sanctum::actingAs($user); + + $this->postJson('/api/applications/current/save?competition_slug=xxf-email', [ + 'player_name' => '张三', + 'contact_email' => 'ok@example.com', + ]) + ->assertOk() + ->assertJsonPath('contact_email', 'ok@example.com'); + + $this->postJson('/api/applications/current/save?competition_slug=xxf-email', [ + 'player_name' => '李四', + 'contact_email' => 'bad-email', + ]) + ->assertUnprocessable() + ->assertJsonValidationErrors(['contact_email']); + + $this->getJson('/api/applications/current?competition_slug=xxf-email') + ->assertOk() + ->assertJsonPath('player_name', '张三') + ->assertJsonPath('contact_email', 'ok@example.com'); + } + + public function test_draft_save_response_does_not_prefill_blank_email_from_user_profile(): void + { + $user = User::query()->create([ + 'mobile' => '13800138090', + 'email' => 'profile@example.com', + ]); + $competition = Competition::query()->create([ + 'slug' => 'xxf-prefill', + 'name' => '测试赛', + 'published' => true, + ]); + Application::query()->create([ + 'user_id' => $user->id, + 'competition_id' => $competition->id, + 'status' => 'draft', + ]); + + Sanctum::actingAs($user); + + $this->postJson('/api/applications/current/save?competition_slug=xxf-prefill', [ + 'contact_email' => '', + ]) + ->assertOk() + ->assertJsonPath('contact_email', null); + } }