summaryrefslogtreecommitdiffstats
path: root/install/ui/host.js
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2011-08-23 21:51:31 -0500
committerEndi S. Dewata <edewata@redhat.com>2011-08-26 15:19:43 +0000
commit5c84e8f5facc7cc2126fa56cdc5a6be5c2a77c2c (patch)
tree581508d9e2d604a6e2906a16162b5637d2e1e30c /install/ui/host.js
parent5716177458d97a6069f787683e9aebebbc0aeb90 (diff)
downloadfreeipa-5c84e8f5facc7cc2126fa56cdc5a6be5c2a77c2c.tar.gz
freeipa-5c84e8f5facc7cc2126fa56cdc5a6be5c2a77c2c.tar.xz
freeipa-5c84e8f5facc7cc2126fa56cdc5a6be5c2a77c2c.zip
Fixed host OTP status.
The host details page has been modified to show the status of the OTP. Setting a new OTP is now done using a dialog box. Ticket #1710
Diffstat (limited to 'install/ui/host.js')
-rw-r--r--install/ui/host.js255
1 files changed, 171 insertions, 84 deletions
diff --git a/install/ui/host.js b/install/ui/host.js
index 5a786b016..52a0e8f92 100644
--- a/install/ui/host.js
+++ b/install/ui/host.js
@@ -56,9 +56,14 @@ IPA.entity_factories.host = function () {
name:'enrollment',
fields:[
{
- factory: IPA.host_provisioning_status_widget,
- 'name': 'provisioning_status',
- label: IPA.messages.objects.host.status
+ factory: IPA.host_keytab_widget,
+ 'name': 'has_keytab',
+ label: IPA.messages.objects.host.keytab
+ },
+ {
+ factory: IPA.host_password_widget,
+ 'name': 'has_password',
+ label: IPA.messages.objects.host.password
}
]
},
@@ -409,7 +414,7 @@ IPA.force_host_add_checkbox_widget = function(spec) {
return IPA.checkbox_widget(spec);
};
-IPA.host_provisioning_status_widget = function(spec) {
+IPA.host_keytab_widget = function(spec) {
spec = spec || {};
@@ -419,98 +424,44 @@ IPA.host_provisioning_status_widget = function(spec) {
that.widget_create(container);
- var div = $('<div/>', {
- name: 'kerberos-key-valid',
+ that.missing_span = $('<span/>', {
+ name: 'missing',
style: 'display: none;'
}).appendTo(container);
$('<img/>', {
- src: 'check.png',
- style: 'float: left;',
+ src: 'caution.png',
'class': 'status-icon'
- }).appendTo(div);
-
- var content_div = $('<div/>', {
- style: 'float: left;'
- }).appendTo(div);
-
- content_div.append('<b>'+IPA.messages.objects.host.valid+':</b>');
+ }).appendTo(that.missing_span);
- content_div.append(' ');
+ that.missing_span.append(' ');
- $('<input/>', {
- 'type': 'button',
- 'name': 'unprovision',
- 'value': IPA.messages.objects.host.delete_key_unprovision
- }).appendTo(content_div);
+ that.missing_span.append(IPA.messages.objects.host.keytab_missing);
- div = $('<div/>', {
- name: 'kerberos-key-missing',
+ that.present_span = $('<span/>', {
+ name: 'present',
style: 'display: none;'
}).appendTo(container);
$('<img/>', {
- src: 'caution.png',
- style: 'float: left;',
+ src: 'check.png',
'class': 'status-icon'
- }).appendTo(div);
-
- content_div = $('<div/>', {
- style: 'float: left;'
- }).appendTo(div);
-
- content_div.append('<b>'+IPA.messages.objects.host.missing+'</b>');
-
- content_div.append('<br/>');
-
- content_div.append(IPA.messages.objects.host.enroll_otp+':');
+ }).appendTo(that.present_span);
- content_div.append('<br/>');
- content_div.append('<br/>');
+ that.present_span.append(' ');
- $('<input/>', {
- 'type': 'text',
- 'name': 'otp',
- 'class': 'otp'
- }).appendTo(content_div);
+ that.present_span.append(IPA.messages.objects.host.keytab_present);
- content_div.append(' ');
+ that.present_span.append(': ');
- $('<input/>', {
- 'type': 'button',
- 'name': 'enroll',
- 'value': IPA.messages.objects.host.set_otp
- }).appendTo(content_div);
-
- that.status_valid = $('div[name=kerberos-key-valid]', that.container);
- that.status_missing = $('div[name=kerberos-key-missing]',
- that.container);
-
- var button = $('input[name=unprovision]', that.container);
- that.unprovision_button = IPA.button({
+ IPA.button({
name: 'unprovision',
label: IPA.messages.objects.host.delete_key_unprovision,
click: function() {
that.show_unprovision_dialog();
return false;
}
- });
- button.replaceWith(that.unprovision_button);
-
- that.otp_input = $('input[name=otp]', that.container);
-
- that.enroll_button = $('input[name=enroll]', that.container);
- button = IPA.button({
- name: 'enroll',
- label: IPA.messages.objects.host.set_otp,
- click: function() {
- that.set_otp();
- return false;
- }
- });
-
- that.enroll_button.replaceWith(button);
- that.enroll_button = button;
+ }).appendTo(that.present_span);
};
that.show_unprovision_dialog = function() {
@@ -559,11 +510,136 @@ IPA.host_provisioning_status_widget = function(spec) {
command.execute();
};
- that.set_otp = function() {
+ that.load = function(result) {
+ that.result = result;
+ var value = result[that.name];
+ set_status(value ? 'present' : 'missing');
+ };
+
+ function set_status(status) {
+ that.present_span.css('display', status == 'present' ? 'inline' : 'none');
+ that.missing_span.css('display', status == 'missing' ? 'inline' : 'none');
+ }
+
+ return that;
+};
+
+IPA.host_password_widget = function(spec) {
+
+ spec = spec || {};
+
+ var that = IPA.widget(spec);
+
+ that.create = function(container) {
+
+ that.widget_create(container);
+
+ that.missing_span = $('<span/>', {
+ name: 'missing'
+ }).appendTo(container);
+
+ $('<img/>', {
+ src: 'caution.png',
+ 'class': 'status-icon'
+ }).appendTo(that.missing_span);
+
+ that.missing_span.append(' ');
+
+ that.missing_span.append(IPA.messages.objects.host.password_missing);
+
+ that.present_span = $('<span/>', {
+ name: 'present',
+ style: 'display: none;'
+ }).appendTo(container);
+
+ $('<img/>', {
+ src: 'check.png',
+ 'class': 'status-icon'
+ }).appendTo(that.present_span);
+
+ that.present_span.append(' ');
+
+ that.present_span.append(IPA.messages.objects.host.password_present);
+
+ container.append(': ');
+
+ that.set_password_button = IPA.button({
+ name: 'set_password',
+ label: IPA.messages.objects.host.password_set_button,
+ click: function() {
+ that.show_password_dialog();
+ return false;
+ }
+ }).appendTo(container);
+ };
+
+ that.show_password_dialog = function() {
+
+ var title;
+ var label;
+
+ if (that.status == 'missing') {
+ title = IPA.messages.objects.host.password_set_title;
+ label = IPA.messages.objects.host.password_set_button;
+ } else {
+ title = IPA.messages.objects.host.password_reset_title;
+ label = IPA.messages.objects.host.password_reset_button;
+ }
+
+ var dialog = IPA.dialog({
+ title: title,
+ width: 400
+ });
+
+ var password1 = dialog.add_field(IPA.text_widget({
+ name: 'password1',
+ label: IPA.messages.password.new_password,
+ type: 'password',
+ undo: false
+ }));
+
+ var password2 = dialog.add_field(IPA.text_widget({
+ name: 'password2',
+ label: IPA.messages.password.verify_password,
+ type: 'password',
+ undo: false
+ }));
+
+ dialog.add_button(label, function() {
+
+ var record = {};
+ dialog.save(record);
+ var new_password = record.password1;
+ var repeat_password = record.password2;
+
+ if (new_password != repeat_password) {
+ alert(IPA.messages.password.password_must_match);
+ return;
+ }
+
+ that.set_password(
+ new_password,
+ function(data, text_status, xhr) {
+ set_status('present');
+ dialog.close();
+ },
+ function(xhr, text_status, error_thrown) {
+ dialog.close();
+ }
+ );
+ dialog.close();
+ });
+
+ dialog.add_button(IPA.messages.buttons.cancel, function() {
+ dialog.close();
+ });
+
+ dialog.open(that.container);
+ };
+
+ that.set_password = function(password, on_success, on_error) {
var pkey = that.entity.get_primary_key();
- var otp = that.otp_input.val();
- that.otp_input.val('');
var command = IPA.command({
entity: that.entity.name,
@@ -572,11 +648,10 @@ IPA.host_provisioning_status_widget = function(spec) {
options: {
all: true,
rights: true,
- userpassword: otp
+ userpassword: password
},
- on_success: function(data, text_status, xhr) {
- alert(IPA.messages.objects.host.otp_confirmation);
- }
+ on_success: on_success,
+ on_error: on_error
});
command.execute();
@@ -584,13 +659,25 @@ IPA.host_provisioning_status_widget = function(spec) {
that.load = function(result) {
that.result = result;
- var krblastpwdchange = result['krblastpwdchange'];
- set_status(krblastpwdchange ? 'valid' : 'missing');
+ var value = result[that.name];
+ set_status(value ? 'present' : 'missing');
};
function set_status(status) {
- that.status_valid.css('display', status == 'valid' ? 'inline' : 'none');
- that.status_missing.css('display', status == 'missing' ? 'inline' : 'none');
+
+ that.status = status;
+ var password_label = $('.button-label', that.set_password_button);
+
+ if (status == 'missing') {
+ that.missing_span.css('display', 'inline');
+ that.present_span.css('display', 'none');
+ password_label.text(IPA.messages.objects.host.password_set_button);
+
+ } else {
+ that.missing_span.css('display', 'none');
+ that.present_span.css('display', 'inline');
+ password_label.text(IPA.messages.objects.host.password_reset_button);
+ }
}
return that;