Added login checker.
This commit is contained in:
parent
b23706cbc7
commit
485f81a6d6
53
atm.lua
53
atm.lua
|
@ -10,6 +10,11 @@ like recording transactions.
|
||||||
local g = require("simple-graphics")
|
local g = require("simple-graphics")
|
||||||
local bankClient = require("bank-client")
|
local bankClient = require("bank-client")
|
||||||
|
|
||||||
|
local BANK_HOST = "central-bank"
|
||||||
|
local SECURITY_KEY = "4514-1691-1660-7358-1884-0506-0878-7098-1511-3359-3602-3581-6910-0791-1843-5936"
|
||||||
|
local modem = peripheral.find("modem") or error("No modem attached.")
|
||||||
|
bankClient.init(peripheral.getName(modem), BANK_HOST, SECURITY_KEY)
|
||||||
|
|
||||||
local W, H = term.getSize()
|
local W, H = term.getSize()
|
||||||
|
|
||||||
local function drawFrame()
|
local function drawFrame()
|
||||||
|
@ -42,10 +47,10 @@ end
|
||||||
local function tryLoginViaInput()
|
local function tryLoginViaInput()
|
||||||
drawFrame()
|
drawFrame()
|
||||||
g.drawTextCenter(term, W/2, 3, "Enter your username and password below.", colors.black, colors.white)
|
g.drawTextCenter(term, W/2, 3, "Enter your username and password below.", colors.black, colors.white)
|
||||||
g.drawText(term, 22, 5, "Username", colors.black, colors.white)
|
g.drawText(term, 16, 5, "Username", colors.black, colors.white)
|
||||||
g.drawXLine(term, 22, 40, 6, colors.lightGray)
|
g.drawXLine(term, 16, 34, 6, colors.lightGray)
|
||||||
g.drawText(term, 22, 8, "Password", colors.black, colors.white)
|
g.drawText(term, 16, 8, "Password", colors.black, colors.white)
|
||||||
g.drawXLine(term, 22, 40, 9, colors.lightGray)
|
g.drawXLine(term, 16, 34, 9, colors.lightGray)
|
||||||
|
|
||||||
g.fillRect(term, 22, 11, 9, 3, colors.green)
|
g.fillRect(term, 22, 11, 9, 3, colors.green)
|
||||||
g.drawTextCenter(term, W/2, 12, "Login", colors.white, colors.green)
|
g.drawTextCenter(term, W/2, 12, "Login", colors.white, colors.green)
|
||||||
|
@ -59,13 +64,13 @@ local function tryLoginViaInput()
|
||||||
while true do
|
while true do
|
||||||
local usernameColor = colors.lightGray
|
local usernameColor = colors.lightGray
|
||||||
if selectedInput == "username" then usernameColor = colors.gray end
|
if selectedInput == "username" then usernameColor = colors.gray end
|
||||||
g.drawXLine(term, 22, 40, 6, usernameColor)
|
g.drawXLine(term, 16, 34, 6, usernameColor)
|
||||||
g.drawText(term, 22, 6, string.rep("*", #username), colors.white, usernameColor)
|
g.drawText(term, 16, 6, string.rep("*", #username), colors.white, usernameColor)
|
||||||
|
|
||||||
local passwordColor = colors.lightGray
|
local passwordColor = colors.lightGray
|
||||||
if selectedInput == "password" then passwordColor = colors.gray end
|
if selectedInput == "password" then passwordColor = colors.gray end
|
||||||
g.drawXLine(term, 22, 40, 9, passwordColor)
|
g.drawXLine(term, 16, 34, 9, passwordColor)
|
||||||
g.drawText(term, 22, 9, string.rep("*", #password), colors.white, passwordColor)
|
g.drawText(term, 16, 9, string.rep("*", #password), colors.white, passwordColor)
|
||||||
|
|
||||||
local event, p1, p2, p3 = os.pullEvent()
|
local event, p1, p2, p3 = os.pullEvent()
|
||||||
if event == "char" then
|
if event == "char" then
|
||||||
|
@ -84,19 +89,21 @@ local function tryLoginViaInput()
|
||||||
elseif selectedInput == "password" and #password > 0 then
|
elseif selectedInput == "password" and #password > 0 then
|
||||||
password = string.sub(password, 1, #password - 1)
|
password = string.sub(password, 1, #password - 1)
|
||||||
end
|
end
|
||||||
|
elseif keyCode == keys.tab and selectedInput == "username" then
|
||||||
|
selectedInput = "password"
|
||||||
end
|
end
|
||||||
elseif event == "mouse_click" then
|
elseif event == "mouse_click" then
|
||||||
local button = p1
|
local button = p1
|
||||||
local x = p2
|
local x = p2
|
||||||
local y = p3
|
local y = p3
|
||||||
if y == 6 and x >= 22 and x <= 40 then
|
if y == 6 and x >= 16 and x <= 34 then
|
||||||
selectedInput = "username"
|
selectedInput = "username"
|
||||||
elseif y == 9 and x >= 22 and x <= 40 then
|
elseif y == 9 and x >= 16 and x <= 34 then
|
||||||
selectedInput = "password"
|
selectedInput = "password"
|
||||||
elseif y >= 11 and y <= 13 and x >= 22 and x <= 30 then
|
elseif y >= 11 and y <= 13 and x >= 22 and x <= 30 then
|
||||||
return {username = username, password = password}
|
return {username = username, password = password} -- Do login
|
||||||
elseif y >= 15 and y <= 17 and x >= 22 and x <= 30 then
|
elseif y >= 15 and y <= 17 and x >= 22 and x <= 30 then
|
||||||
return nil
|
return nil -- Cancel
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -129,9 +136,27 @@ local function showLoginUI()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function checkCredentialsUI(credentials)
|
||||||
|
drawFrame()
|
||||||
|
g.drawTextCenter(term, W/2, 3, "Checking your credentials...", colors.black, colors.white)
|
||||||
|
bankClient.logIn(credentials.username, credentials.password)
|
||||||
|
local accounts, errorMsg = bankClient.getAccounts()
|
||||||
|
if not accounts then
|
||||||
|
bankClient.logOut()
|
||||||
|
g.drawTextCenter(term, W/2, 5, errorMsg, colors.red, colors.white)
|
||||||
|
os.sleep(2)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
g.drawTextCenter(term, W/2, 5, "Authentication successful.")
|
||||||
|
os.sleep(1)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
local credentials = showLoginUI()
|
local credentials = showLoginUI()
|
||||||
g.clear(term, colors.black)
|
local loginSuccess = checkCredentialsUI(credentials)
|
||||||
print("Credentials: " .. textutils.serialize(credentials))
|
if loginSuccess then
|
||||||
|
print("Login success!")
|
||||||
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
Loading…
Reference in New Issue