mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
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
This commit is contained in:
parent
8edd7ed998
commit
c5ce14c83a
@ -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 {
|
||||
|
@ -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();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user