diff --git a/code/modules/economy/economy_machinery/account_terminal.dm b/code/modules/economy/economy_machinery/account_terminal.dm index f5b86147dc6..282aa26a4df 100644 --- a/code/modules/economy/economy_machinery/account_terminal.dm +++ b/code/modules/economy/economy_machinery/account_terminal.dm @@ -17,6 +17,13 @@ ///station account database var/datum/money_account_database/account_db +/obj/machinery/computer/account_database/Initialize() + . = ..() + reconnect_database() + +/obj/machinery/computer/account_database/proc/reconnect_database() + account_db = GLOB.station_money_database + /obj/machinery/computer/account_database/attackby(obj/O, mob/user, params) if(ui_login_attackby(O, user)) return @@ -35,7 +42,6 @@ var/list/data = list() data["currentPage"] = current_page ui_login_data(data, user) - if(data["loginState"]["logged_in"]) switch(current_page) if(AUT_ACCLST) @@ -76,7 +82,7 @@ return data -/obj/machinery/computer/account_database/ui_act(action, list/params) +/obj/machinery/computer/account_database/ui_act(action, list/params, datum/tgui/ui) if(..()) return @@ -88,6 +94,9 @@ if(!ui_login_get().logged_in) return + if(!account_db) + reconnect_database() + switch(action) if("view_account_detail") var/account_num = text2num(params["account_num"]) @@ -97,6 +106,24 @@ current_page = AUT_ACCINF if("back") clear_viewed_account() + if("set_account_pin") + var/account_num = text2num(params["account_number"]) + if(!account_num || !detailed_account_view) + return + var/attempt_pin = input("Enter this accounts current pin code", "Account Auth") as num + if(!attempt_pin || !Adjacent(ui.user)) + return + if(!account_db.try_authenticate_login(detailed_account_view, attempt_pin, FALSE, FALSE, FALSE) || detailed_account_view.account_pin != attempt_pin) + to_chat(ui.user, "Authentification Failure: Incorrect Pin or insufficient access.") + return + var/new_pin = input("Enter the new pin for this account", "New Account Pin") as num + if(!new_pin || !Adjacent(ui.user)) + return + if(new_pin < 1 || new_pin >= 1000000) + to_chat(ui.user, "Account Error: New pin must be a number between 000001 and 999999.") + return + detailed_account_view.account_pin = new_pin + to_chat(ui.user, "The [detailed_account_view.account_name] account pin has been set to [new_pin] successfully.") if("toggle_suspension") if(detailed_account_view) detailed_account_view.suspended = !detailed_account_view.suspended diff --git a/code/modules/pda/nanobank.dm b/code/modules/pda/nanobank.dm index 050699859df..5da6baaebe6 100644 --- a/code/modules/pda/nanobank.dm +++ b/code/modules/pda/nanobank.dm @@ -151,9 +151,15 @@ var/new_sec_level = clamp(text2num(params["new_security_level"]), ACCOUNT_SECURITY_ID, ACCOUNT_SECURITY_PIN) if(!new_sec_level) return - var/attempt_pin = input_account_pin(user) + var/attempt_pin = 0 + if(user_account.security_level >= ACCOUNT_SECURITY_PIN) + attempt_pin = input_account_pin(user) if(account_database.try_authenticate_login(user_account, attempt_pin, FALSE, FALSE, FALSE)) user_account.security_level = new_sec_level + to_chat(user, "Nanobank: account security set to [new_sec_level == ACCOUNT_SECURITY_ID ? "*Account Number Only*" : "*Require Pin Entry*"]") + else + to_chat(user, "Authentification Failure: incorrect pin.") + if("toggle_member_approval") for(var/datum/station_department/department as anything in SSjobs.station_departments) if(department.department_account == user_account) diff --git a/tgui/packages/tgui/interfaces/AccountsUplinkTerminal.js b/tgui/packages/tgui/interfaces/AccountsUplinkTerminal.js index 876fede6fc0..7e3b8ac1ed0 100644 --- a/tgui/packages/tgui/interfaces/AccountsUplinkTerminal.js +++ b/tgui/packages/tgui/interfaces/AccountsUplinkTerminal.js @@ -272,6 +272,16 @@ const DetailedAccountInfo = (properties, context) => { {account_pin} } + +