0ecc16d963
The register form collected and validated an actual date of birth just to throw it away (backend never stored it beyond a nullable column). Per the roadmap note: don't collect/store DOB right now, just get a client-side "I am 18 or older" confirmation. RegisterRequest.date_of_birth (str) is now over_18 (bool); the endpoint rejects over_18=false with 400 same as before. calculate_age() is kept (unused by /register now) since real DOB collection is coming back in a future pass and deleting it broke test_auth_age_gate.py's import for no benefit. Frontend: DOBEdit LineEdit replaced with an Over18Check CheckBox; api_client.gd's register() now takes a bool instead of a date string. All Godot callers (smoke_test_auth/e2e/world_list/main_menu_ui/main_menu_full_flow) and backend test files updated to match. Full suite verified against a live backend: 61/61 pytest, 6/6 Godot smoke tests (33 individual assertions), all passing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6rUEynmv2QmweocAQYARN
127 lines
4.6 KiB
Plaintext
127 lines
4.6 KiB
Plaintext
[gd_scene load_steps=2 format=3 uid="uid://main_menu_scene"]
|
|
|
|
[ext_resource type="Script" path="res://scripts/main_menu.gd" id="1_main"]
|
|
|
|
[node name="MainMenu" type="Control"]
|
|
anchors_preset = 15
|
|
anchor_right = 1.0
|
|
anchor_bottom = 1.0
|
|
grow_horizontal = 2
|
|
grow_vertical = 2
|
|
script = ExtResource("1_main")
|
|
|
|
[node name="CenterContainer" type="CenterContainer" parent="."]
|
|
layout_mode = 3
|
|
anchors_preset = 15
|
|
anchor_right = 1.0
|
|
anchor_bottom = 1.0
|
|
grow_horizontal = 2
|
|
grow_vertical = 2
|
|
|
|
[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer"]
|
|
layout_mode = 1
|
|
theme_override_constants/separation = 16
|
|
size_flags_horizontal = 4
|
|
|
|
[node name="TitleLabel" type="Label" parent="CenterContainer/VBoxContainer"]
|
|
layout_mode = 1
|
|
text = "AGP Game"
|
|
horizontal_alignment = 1
|
|
theme_override_font_sizes/font_size = 72
|
|
|
|
[node name="AuthButtonsRow" type="HBoxContainer" parent="CenterContainer/VBoxContainer"]
|
|
layout_mode = 1
|
|
theme_override_constants/separation = 16
|
|
alignment = 1
|
|
|
|
[node name="LoginButton" type="Button" parent="CenterContainer/VBoxContainer/AuthButtonsRow"]
|
|
layout_mode = 1
|
|
text = "Login"
|
|
size_flags_horizontal = 3
|
|
|
|
[node name="RegisterButton" type="Button" parent="CenterContainer/VBoxContainer/AuthButtonsRow"]
|
|
layout_mode = 1
|
|
text = "Register"
|
|
size_flags_horizontal = 3
|
|
|
|
[node name="AuthPanel" type="PanelContainer" parent="CenterContainer/VBoxContainer"]
|
|
layout_mode = 1
|
|
visible = false
|
|
|
|
[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/VBoxContainer/AuthPanel"]
|
|
layout_mode = 1
|
|
theme_override_constants/margin_left = 24
|
|
theme_override_constants/margin_top = 24
|
|
theme_override_constants/margin_right = 24
|
|
theme_override_constants/margin_bottom = 24
|
|
|
|
[node name="AuthVBox" type="VBoxContainer" parent="CenterContainer/VBoxContainer/AuthPanel/MarginContainer"]
|
|
layout_mode = 1
|
|
theme_override_constants/separation = 8
|
|
size_flags_horizontal = 3
|
|
|
|
[node name="AuthModeLabel" type="Label" parent="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox"]
|
|
layout_mode = 1
|
|
text = "Login"
|
|
horizontal_alignment = 1
|
|
theme_override_font_sizes/font_size = 24
|
|
|
|
[node name="UsernameEdit" type="LineEdit" parent="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox"]
|
|
layout_mode = 1
|
|
placeholder_text = "Username"
|
|
size_flags_horizontal = 3
|
|
|
|
[node name="PasswordEdit" type="LineEdit" parent="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox"]
|
|
layout_mode = 1
|
|
placeholder_text = "Password"
|
|
size_flags_horizontal = 3
|
|
echo_password = true
|
|
|
|
[node name="EmailEdit" type="LineEdit" parent="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox"]
|
|
layout_mode = 1
|
|
visible = false
|
|
placeholder_text = "Email"
|
|
size_flags_horizontal = 3
|
|
|
|
[node name="Over18Check" type="CheckBox" parent="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox"]
|
|
layout_mode = 1
|
|
visible = false
|
|
text = "I am 18 or older"
|
|
size_flags_horizontal = 3
|
|
|
|
[node name="AuthButton" type="Button" parent="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox"]
|
|
layout_mode = 1
|
|
text = "Login"
|
|
size_flags_horizontal = 3
|
|
|
|
[node name="AuthStatusLabel" type="Label" parent="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox"]
|
|
layout_mode = 1
|
|
text = ""
|
|
horizontal_alignment = 1
|
|
autowrap_mode = 2
|
|
visible = false
|
|
|
|
[node name="WelcomeLabel" type="Label" parent="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox"]
|
|
layout_mode = 1
|
|
visible = false
|
|
text = ""
|
|
horizontal_alignment = 1
|
|
|
|
[node name="PlayButton" type="Button" parent="CenterContainer/VBoxContainer"]
|
|
layout_mode = 1
|
|
text = "Play"
|
|
size_flags_horizontal = 4
|
|
|
|
[node name="QuitButton" type="Button" parent="CenterContainer/VBoxContainer"]
|
|
layout_mode = 1
|
|
text = "Quit"
|
|
size_flags_horizontal = 4
|
|
|
|
[connection signal="pressed" from="CenterContainer/VBoxContainer/AuthButtonsRow/LoginButton" to="." method="_on_login_button_pressed"]
|
|
[connection signal="pressed" from="CenterContainer/VBoxContainer/AuthButtonsRow/RegisterButton" to="." method="_on_register_button_pressed"]
|
|
[connection signal="pressed" from="CenterContainer/VBoxContainer/PlayButton" to="." method="_on_play_button_pressed"]
|
|
[connection signal="pressed" from="CenterContainer/VBoxContainer/QuitButton" to="." method="_on_quit_button_pressed"]
|
|
[connection signal="pressed" from="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox/AuthButton" to="." method="_on_auth_button_pressed"]
|
|
[connection signal="text_submitted" from="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox/UsernameEdit" to="." method="_on_auth_button_pressed"]
|
|
[connection signal="text_submitted" from="CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox/PasswordEdit" to="." method="_on_auth_button_pressed"]
|