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}
}
+
+
{owner_name}
diff --git a/tgui/packages/tgui/interfaces/pda/pda_nanobank.js b/tgui/packages/tgui/interfaces/pda/pda_nanobank.js
index 6f1e85c5947..60664a81b46 100644
--- a/tgui/packages/tgui/interfaces/pda/pda_nanobank.js
+++ b/tgui/packages/tgui/interfaces/pda/pda_nanobank.js
@@ -192,13 +192,15 @@ const AccountActions = (props, context) => {
icon="user-lock"
selected={security_level === 1}
content="Account Number Only"
+ tooltip="Set Account security so that only having the account number is required for transactions"
onClick={() => act('set_security', {
new_security_level: 1
})} />