aboutsummaryrefslogtreecommitdiff
path: root/src/courtroom.cpp
diff options
context:
space:
mode:
authorOsmium Sorcerer <os@sof.beauty>2026-03-22 18:55:26 +0000
committerOsmium Sorcerer <os@sof.beauty>2026-03-29 22:22:25 +0000
commita124f46861d549ddc13485536962e34d80de939a (patch)
tree3553849323aa70fef1e198f3476a2abcc7adfe39 /src/courtroom.cpp
parentb1ad938c37f4e175e5509f727d1033b074b134d4 (diff)
Add authentication dialog
Introduce start_auth_flow, a function invoked by typing `/auth username` in OOC. It sends an public-key authentication request to the server, starting the entire flow. The flow invoves two dialogs: to select the key, and to enter the passphrase to unlock the key. For convenience, each successful unlock also remembers the key for that username on the server, storing this in `saved_auth.json` (I chose JSON because I wanted it to stay human-editable; INI would be better, but it suffers from bad platform quirks in Qt).
Diffstat (limited to 'src/courtroom.cpp')
-rw-r--r--src/courtroom.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index 1eaa747..a2dca24 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -5118,6 +5118,19 @@ void Courtroom::on_ooc_return_pressed()
ui_ooc_chat_message->clear();
return;
}
+ // Only works on CSDWASASH.
+ else if (ooc_message.startsWith("/auth"))
+ {
+ QStringList command = ooc_message.split(" ", Qt::SkipEmptyParts);
+ if (command.size() != 2)
+ {
+ append_server_chatmessage("CLIENT", "Usage: /auth <username>", "1");
+ return;
+ }
+ start_auth_flow(ao_app, command[1]);
+ ui_ooc_chat_message->clear();
+ return;
+ }
QStringList packet_contents;
packet_contents.append(ui_ooc_chat_name->text());