diff options
| author | Osmium Sorcerer <os@sof.beauty> | 2026-03-22 18:55:26 +0000 |
|---|---|---|
| committer | Osmium Sorcerer <os@sof.beauty> | 2026-03-29 22:22:25 +0000 |
| commit | a124f46861d549ddc13485536962e34d80de939a (patch) | |
| tree | 3553849323aa70fef1e198f3476a2abcc7adfe39 /src/courtroom.cpp | |
| parent | b1ad938c37f4e175e5509f727d1033b074b134d4 (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.cpp | 13 |
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()); |
