69 lines
1.8 KiB
GDScript
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
|