diff options
author | Jan Kaluza <jkaluza@redhat.com> | 2016-02-19 14:51:17 +0300 |
---|---|---|
committer | Jan Kaluza <jkaluza@redhat.com> | 2016-02-19 14:51:17 +0300 |
commit | bff117e4ef2374245d486982db9883d7134d117a (patch) | |
tree | 641aa8e30f219639935d484603a00c00ee3be76b /spectrum_manager | |
parent | 05b24bbd6e8535fb1fc71e2e869a53c6e4288112 (diff) |
Slack: For IRC allow registering without providing account name/password
Diffstat (limited to 'spectrum_manager')
-rw-r--r-- | spectrum_manager/src/APIServer.cpp | 19 | ||||
-rw-r--r-- | spectrum_manager/src/html/instances/register.shtml | 4 | ||||
-rw-r--r-- | spectrum_manager/src/html/js/app.js | 21 |
3 files changed, 33 insertions, 11 deletions
diff --git a/spectrum_manager/src/APIServer.cpp b/spectrum_manager/src/APIServer.cpp index 9a296e66..fc1d99e9 100644 --- a/spectrum_manager/src/APIServer.cpp +++ b/spectrum_manager/src/APIServer.cpp @@ -256,6 +256,18 @@ void APIServer::serve_instances_register(Server *server, Server::session *sessio std::string uin = get_http_var(hm, "uin"); std::string password = get_http_var(hm, "password"); + // For some networks like IRC, there is no registration. + // We detect such networks according to registration_fields and use + // "unknown" uin for them. + if (uin.empty()) { + std::string response = server->send_command(instance, "registration_fields"); + std::vector<std::string> fields; + boost::split(fields, response, boost::is_any_of("\n")); + if (fields.size() == 1) { + uin = "unknown"; + } + } + if (jid.empty() || uin.empty()) { send_ack(conn, true, "Insufficient data."); } @@ -363,8 +375,7 @@ void APIServer::serve_instances_register_form(Server *server, Server::session *s std::vector<std::string> fields; boost::split(fields, response, boost::is_any_of("\n")); - if (fields.size() < 3) { - fields.clear(); + if (fields.empty()) { fields.push_back("Jabber ID"); fields.push_back("3rd-party network username"); fields.push_back("3rd-party network password"); @@ -374,8 +385,8 @@ void APIServer::serve_instances_register_form(Server *server, Server::session *s json.SetObject(); json.AddMember("error", 0, json.GetAllocator()); json.AddMember("username_label", fields[0].c_str(), json.GetAllocator()); - json.AddMember("legacy_username_label", fields[1].c_str(), json.GetAllocator()); - json.AddMember("password_label", fields[2].c_str(), json.GetAllocator()); + json.AddMember("legacy_username_label", fields.size() >= 2 ? fields[1].c_str() : "", json.GetAllocator()); + json.AddMember("password_label", fields.size() >= 3 ? fields[2].c_str() : "", json.GetAllocator()); send_json(conn, json); } diff --git a/spectrum_manager/src/html/instances/register.shtml b/spectrum_manager/src/html/instances/register.shtml index e9995227..69584262 100644 --- a/spectrum_manager/src/html/instances/register.shtml +++ b/spectrum_manager/src/html/instances/register.shtml @@ -9,11 +9,11 @@ <span id="jid_desc"></span> <input type="text" id="jid" name="jid" placeholder=""></textarea> </label> -<label> +<label id="uin_label"> <span id="uin_desc"></span> <input type="text" id="uin" name="uin" placeholder=""></textarea> </label> -<label><span id="password_desc"></span> +<label id="password_label"><span id="password_desc"></span> <input type="password" id="password" name="password" placeholder=""></textarea> </label> <label> diff --git a/spectrum_manager/src/html/js/app.js b/spectrum_manager/src/html/js/app.js index f1c08ff1..68ea8089 100644 --- a/spectrum_manager/src/html/js/app.js +++ b/spectrum_manager/src/html/js/app.js @@ -185,12 +185,23 @@ function fill_instances_register_form() { $.get($.cookie("base_location") + "api/v1/instances/register_form/" + query.id, function(data) { $("#jid_desc").html(data.username_label + ":"); - $("#uin_desc").html(data.legacy_username_label + ":"); - $("#password_desc").html(data.password_label + ":"); - $("#jid").attr("placeholder", data.username_label); - $("#uin").attr("placeholder", data.legacy_username_label); - $("#password").attr("placeholder", data.password_label); + + if (data.legacy_username_label.length == 0) { + $('#uin_label').hide(); + } + else { + $("#uin_desc").html(data.legacy_username_label + ":"); + $("#uin").attr("placeholder", data.legacy_username_label); + } + + if (data.password_label.length == 0) { + $('#password_label').hide(); + } + else { + $("#password_desc").html(data.password_label + ":"); + $("#password").attr("placeholder", data.password_label); + } }); } |