Files
Kalulu/sources/menus/main/login.gd
T
2024-08-14 17:32:17 +02:00

69 lines
1.8 KiB
GDScript

extends Control
signal logged_in
@onready var teacher_label : Label = %TeacherLabel
@onready var parent_label : Label = %ParentLabel
@onready var validator : FormValidator = %LoginFormValidator
@onready var email_field : LineEdit = %EmailField
@onready var password_field : LineEdit = %PasswordField
@onready var device_id_container : VBoxContainer = %DeviceIDContainer
@onready var device_id_field : SpinBox = %DeviceIDField
@onready var login_message : Label = %LoginError
var account_type: TeacherSettings.AccountType
func _ready():
email_field.text_changed.connect(_hide_login_error)
password_field.text_changed.connect(_hide_login_error)
device_id_field.value_changed.connect(_hide_login_error)
func show_form(is_teacher : bool):
self.show()
if is_teacher:
device_id_container.show()
account_type = TeacherSettings.AccountType.Teacher
teacher_label.show()
parent_label.hide()
else:
device_id_field.value = 1
device_id_container.hide()
account_type = TeacherSettings.AccountType.Parent
teacher_label.hide()
parent_label.show()
func _hide_login_error(_value):
if login_message.visible:
login_message.hide()
func _on_login_form_validator_control_validated(control, passed, messages):
var label = find_child(control.name + "Error", true, false) as Label
if not label:
return
if passed:
label.hide()
else:
label.text = ". ".join(messages)
label.show()
func _on_validate_button_pressed() -> void:
# Validator
if not validator.validate():
return
# Request server for login
var res = await ServerManager.login(account_type, int(device_id_field.value), email_field.text, password_field.text)
if res.code == 200:
# Login
if UserDataManager.login(res.body):
logged_in.emit()
else:
login_message.visible = true
else:
login_message.visible = true