Deprecate hardcoded string-based authentication, add AUTH packet (#489)

Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
This commit is contained in:
in1tiate 2021-03-15 17:56:42 -05:00 committed by GitHub
parent 3cac877378
commit e4483719d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 4 deletions

View File

@ -87,6 +87,7 @@ public:
bool effects_enabled = false; bool effects_enabled = false;
bool y_offset_enabled = false; bool y_offset_enabled = false;
bool expanded_desk_mods_enabled = false; bool expanded_desk_mods_enabled = false;
bool auth_packet_enabled = false;
///////////////loading info/////////////////// ///////////////loading info///////////////////

View File

@ -312,6 +312,8 @@ public:
// Truncates text so it fits within theme-specified boundaries and sets the tooltip to the full string // Truncates text so it fits within theme-specified boundaries and sets the tooltip to the full string
void truncate_label_text(QWidget* p_widget, QString p_identifier); void truncate_label_text(QWidget* p_widget, QString p_identifier);
void on_authentication_state_received(int p_state);
~Courtroom(); ~Courtroom();
private: private:
AOApplication *ao_app; AOApplication *ao_app;

View File

@ -1634,15 +1634,30 @@ void Courtroom::append_server_chatmessage(QString p_name, QString p_message,
color = color =
ao_app->get_color("server_chatlog_sender_color", "courtroom_fonts.ini") ao_app->get_color("server_chatlog_sender_color", "courtroom_fonts.ini")
.name(); .name();
if (p_message == "Logged in as a moderator.") { if (!ao_app->auth_packet_enabled && p_message == "Logged in as a moderator.") {
ui_guard->show(); // Emulate successful authentication
append_server_chatmessage( on_authentication_state_received(1);
tr("CLIENT"), tr("You were granted the Disable Modcalls button."), "1");
} }
ui_server_chatlog->append_chatmessage(p_name, p_message, color); ui_server_chatlog->append_chatmessage(p_name, p_message, color);
} }
void Courtroom::on_authentication_state_received(int p_state)
{
if (p_state >= 1) {
ui_guard->show();
append_server_chatmessage(tr("CLIENT"), tr("You were granted the Disable Modcalls button."), "1");
}
else if (p_state == 0) {
append_server_chatmessage(tr("CLIENT"), tr("Login unsuccessful."), "1");
}
else if (p_state < 0) {
ui_guard->hide();
append_server_chatmessage(tr("CLIENT"), tr("You were logged out."), "1");
}
}
void Courtroom::on_chat_return_pressed() void Courtroom::on_chat_return_pressed()
{ {
if (is_muted) if (is_muted)

View File

@ -199,6 +199,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
additive_enabled = false; additive_enabled = false;
effects_enabled = false; effects_enabled = false;
expanded_desk_mods_enabled = false; expanded_desk_mods_enabled = false;
auth_packet_enabled = false;
if (f_packet.contains("yellowtext", Qt::CaseInsensitive)) if (f_packet.contains("yellowtext", Qt::CaseInsensitive))
yellow_text_enabled = true; yellow_text_enabled = true;
if (f_packet.contains("prezoom", Qt::CaseInsensitive)) if (f_packet.contains("prezoom", Qt::CaseInsensitive))
@ -229,6 +230,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
y_offset_enabled = true; y_offset_enabled = true;
if (f_packet.contains("expanded_desk_mods", Qt::CaseInsensitive)) if (f_packet.contains("expanded_desk_mods", Qt::CaseInsensitive))
expanded_desk_mods_enabled = true; expanded_desk_mods_enabled = true;
if (f_packet.contains("auth_packet", Qt::CaseInsensitive))
auth_packet_enabled = true;
} }
else if (header == "PN") { else if (header == "PN") {
if (f_contents.size() < 2) if (f_contents.size() < 2)
@ -683,6 +686,14 @@ void AOApplication::server_packet_received(AOPacket *p_packet)
if (f_contents.size() > 1 && f_contents.at(1) == "1") if (f_contents.size() > 1 && f_contents.at(1) == "1")
w_courtroom->on_reload_theme_clicked(); w_courtroom->on_reload_theme_clicked();
} }
// Auth packet
else if (header == "AUTH") {
if (!courtroom_constructed || !auth_packet_enabled || f_contents.size() < 1)
goto end;
int authenticated = f_contents.at(0).toInt();
w_courtroom->on_authentication_state_received(authenticated);
}
end: end: