Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/SpectrumIM/spectrum2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kaluza <jkaluza@redhat.com>2016-02-19 14:51:17 +0300
committerJan Kaluza <jkaluza@redhat.com>2016-02-19 14:51:17 +0300
commitbff117e4ef2374245d486982db9883d7134d117a (patch)
tree641aa8e30f219639935d484603a00c00ee3be76b /spectrum_manager
parent05b24bbd6e8535fb1fc71e2e869a53c6e4288112 (diff)
Slack: For IRC allow registering without providing account name/password
Diffstat (limited to 'spectrum_manager')
-rw-r--r--spectrum_manager/src/APIServer.cpp19
-rw-r--r--spectrum_manager/src/html/instances/register.shtml4
-rw-r--r--spectrum_manager/src/html/js/app.js21
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);
+ }
});
}