summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2011-08-03 15:26:54 -0500
committerEndi S. Dewata <edewata@redhat.com>2011-08-09 14:04:06 +0000
commitc5ce14c83ac6c00f2db9d1b43273c25b8282c873 (patch)
tree972e72890e3c503b1de719ff3e0f28d13a8d5a69
parent8edd7ed99874f114ec6ca6abbbdd4b91025211df (diff)
downloadfreeipa-c5ce14c83ac6c00f2db9d1b43273c25b8282c873.tar.gz
freeipa-c5ce14c83ac6c00f2db9d1b43273c25b8282c873.tar.xz
freeipa-c5ce14c83ac6c00f2db9d1b43273c25b8282c873.zip
Fixed error after login on IE
The IE does not resend the request body during negotiation, so after after a successful authentication the server could not find the JSON request to parse. The Web UI has been modified to detect this error and resend the initialization request. Ticket #1540
-rw-r--r--install/ui/host.js3
-rw-r--r--install/ui/ipa.js74
2 files changed, 63 insertions, 14 deletions
diff --git a/install/ui/host.js b/install/ui/host.js
index 743196b08..3ffcba34b 100644
--- a/install/ui/host.js
+++ b/install/ui/host.js
@@ -138,6 +138,7 @@ IPA.host_adder_dialog = function(spec)
that.on_error = function(xhr, text_status, error_thrown)
{
+ var ajax = this;
var command = that.command;
var data = error_thrown.data;
var dialog = null;
@@ -152,7 +153,7 @@ IPA.host_adder_dialog = function(spec)
fqdn: that.get_field('fqdn').save()
}
};
- command.on_success(data, text_status, xhr);
+ command.on_success.call(ajax, data, text_status, xhr);
}
});
} else {
diff --git a/install/ui/ipa.js b/install/ui/ipa.js
index d53ee7b12..8a3dd4e7d 100644
--- a/install/ui/ipa.js
+++ b/install/ui/ipa.js
@@ -70,8 +70,35 @@ var IPA = ( function () {
var batch = IPA.batch_command({
name: 'ipa_init',
+ retry: false,
on_success: on_success,
- on_error: on_error
+ on_error: function(xhr, text_status, error_thrown) {
+
+ // On IE the request is missing after authentication,
+ // so the request needs to be resent.
+ if (error_thrown.name == 'IPA Error 909') {
+ batch.execute();
+
+ } else {
+ var ajax = this;
+
+ var dialog = IPA.error_dialog({
+ xhr: xhr,
+ text_status: text_status,
+ error_thrown: error_thrown,
+ command: batch
+ });
+
+ dialog.on_cancel = function() {
+ dialog.close();
+ if (on_error) {
+ on_error.call(ajax, xhr, text_status, error_thrown);
+ }
+ };
+
+ dialog.open();
+ }
+ }
});
batch.add_command(IPA.command({
@@ -243,12 +270,23 @@ IPA.command = function(spec) {
that.execute = function() {
function dialog_open(xhr, text_status, error_thrown) {
+
+ var ajax = this;
+
var dialog = IPA.error_dialog({
xhr: xhr,
text_status: text_status,
error_thrown: error_thrown,
command: that
});
+
+ dialog.on_cancel = function() {
+ dialog.close();
+ if (that.on_error) {
+ that.on_error.call(ajax, xhr, text_status, error_thrown);
+ }
+ };
+
dialog.open();
}
@@ -399,6 +437,7 @@ IPA.batch_command = function (spec) {
method: that.method,
args: that.args,
options: that.options,
+ retry: that.retry,
on_success: function(data, text_status, xhr) {
for (var i=0; i<that.commands.length; i++) {
@@ -406,8 +445,10 @@ IPA.batch_command = function (spec) {
var result = data.result.results[i];
if (!result) {
- if (command.on_error) command.on_error(
- xhr, text_status,
+ if (command.on_error) command.on_error.call(
+ this,
+ xhr,
+ text_status,
{
name: 'Internal Error '+xhr.status,
message: result ? xhr.statusText : "Internal error"
@@ -415,7 +456,8 @@ IPA.batch_command = function (spec) {
);
} else if (result.error) {
- if (command.on_error) command.on_error(
+ if (command.on_error) command.on_error.call(
+ this,
xhr,
text_status,
{
@@ -425,15 +467,15 @@ IPA.batch_command = function (spec) {
);
} else {
- if (command.on_success) command.on_success(result, text_status, xhr);
+ if (command.on_success) command.on_success.call(this, result, text_status, xhr);
}
}
- if (that.on_success) that.on_success(data, text_status, xhr);
+ if (that.on_success) that.on_success.call(this, data, text_status, xhr);
},
on_error: function(xhr, text_status, error_thrown) {
// TODO: undefined behavior
if (that.on_error) {
- that.on_error(xhr, text_status, error_thrown);
+ that.on_error.call(this, xhr, text_status, error_thrown);
}
}
}).execute();
@@ -571,6 +613,7 @@ IPA.dirty_dialog = function(spec) {
};
IPA.error_dialog = function(spec) {
+
var that = IPA.dialog(spec);
var init = function() {
@@ -605,19 +648,24 @@ IPA.error_dialog = function(spec) {
var label = IPA.messages.buttons ? IPA.messages.buttons.retry : 'Retry';
that.add_button(label, function() {
- that.close();
- that.command.execute();
+ that.on_retry();
});
label = IPA.messages.buttons ? IPA.messages.buttons.cancel : 'Cancel';
that.add_button(label, function() {
- that.close();
- if (that.command.retry && that.command.on_error) {
- that.command.on_error(that.xhr, that.text_status, that.error_thrown);
- }
+ that.on_cancel();
});
};
+ that.on_retry = function() {
+ that.close();
+ that.command.execute();
+ };
+
+ that.on_cancel = function() {
+ that.close();
+ };
+
init();
that.create_buttons();