KUMOS/Client/Includes/Login.sbi
2026-05-02 15:49:06 +02:00

85 lines
2.6 KiB
Plaintext

Module Login
EnableExplicit
;- Private constants
#Window_Width = 400
#Window_Height = 165
;- Private variables
Global Window
Global UsernameLabel, UsernameInput, PasswordLabel, PasswordInput, ConnectButton
;- Private declarations
Declare Handler_BrowserResize()
Declare Handler_ConnectButton()
Declare Handler_Login(Success, Result.s, UserData)
;- Public procedures
Procedure Open()
Window = OpenWindow(#PB_Any, 0, 0, #Window_Width, #Window_Height, "", #PB_Window_ScreenCentered | #PB_Window_BorderLess)
UsernameLabel = TextGadget(#PB_Any, 30, 33, 100, 20, "Username: ")
UsernameInput = StringGadget(#PB_Any, 120, 30, 250, 20, "")
PasswordLabel = TextGadget(#PB_Any, 30, 73, 100, 20, "Password: ")
PasswordInput = StringGadget(#PB_Any, 120, 70, 250, 20, "", #PB_String_Password)
ConnectButton = ButtonGadget(#PB_Any, 30, 110, #Window_Width - 60, 25, "Connect")
SetActiveGadget(UsernameInput)
BindGadgetEvent(ConnectButton, @Handler_ConnectButton())
BindEvent(#PB_Event_SizeDesktop, @Handler_BrowserResize())
EndProcedure
;- Private procedures
Procedure Handler_BrowserResize()
Protected _Width = DesktopWidth(0)
Protected _Height = DesktopHeight(0)
ResizeWindow(Window, (_Width - #Window_Width) * 0.5, (_Height - #Window_Height) * 0.5, #PB_Ignore, #PB_Ignore)
EndProcedure
Procedure Handler_ConnectButton()
Protected Username.s = GetGadgetText(UsernameInput)
Protected Password.s = GetGadgetText(PasswordInput)
If Username = "" Or Password = ""
Notify::Toast("Invalid username or password.", Notify::#Error)
ProcedureReturn
EndIf
HTTPRequest(#PB_HTTP_Post, "/api/auth/login", "username=" + URLEncoder(Username, #PB_UTF8) + "&password=" + URLEncoder(Password, #PB_UTF8), @Handler_Login())
EndProcedure
Procedure Handler_Login(Success, Result.s, UserData)
Protected Root, OK
Protected Username.s
If Success
If ParseJSON(0, Result)
Root = JSONValue(0)
OK = GetJSONBoolean(GetJSONMember(Root, "success"))
If OK
Username = GetJSONString(GetJSONMember(Root, "username"))
UnbindGadgetEvent(ConnectButton, @Handler_ConnectButton())
UnbindEvent(#PB_Event_SizeDesktop, @Handler_BrowserResize())
CloseWindow(Window)
Desktop::Open(Username)
Else
Notify::Toast("Invalid username or password.", Notify::#Error)
EndIf
FreeJSON(0)
EndIf
Else
Notify::Toast("Connection failed. Try again.", Notify::#Error)
EndIf
EndProcedure
EndModule
; IDE Options = SpiderBasic 3.20 (Windows - x86)
; CursorPosition = 51
; Folding = h
; iOSAppOrientation = 0
; AndroidAppCode = 0
; AndroidAppOrientation = 0
; EnableXP
; DPIAware
; CompileSourceDirectory