diff options
Diffstat (limited to 'install/ui/src/freeipa/entitle.js')
-rw-r--r-- | install/ui/src/freeipa/entitle.js | 770 |
1 files changed, 0 insertions, 770 deletions
diff --git a/install/ui/src/freeipa/entitle.js b/install/ui/src/freeipa/entitle.js deleted file mode 100644 index 1a60d6500..000000000 --- a/install/ui/src/freeipa/entitle.js +++ /dev/null @@ -1,770 +0,0 @@ -/* Authors: - * Endi S. Dewata <edewata@redhat.com> - * - * Copyright (C) 2010 Red Hat - * see file 'COPYING' for use and warranty information - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -define([ - './ipa', - './jquery', - './phases', - './reg', - './text', - './details', - './search', - './add', - './facet', - './entity', - './field', - './widget'], - function(IPA, $, phases, reg, text) { - -var exp = IPA.entitle = {}; - -IPA.entitle.unregistered = 'unregistered'; -IPA.entitle.online = 'online'; -IPA.entitle.offline = 'offline'; - - -var make_spec = function() { -return { - name: 'entitle', - facet_groups: [ 'account', 'certificates' ], - facets: [ - { - $type: 'details', - $factory: IPA.entitle.details_facet, - label: '@i18n:objects.entitle.account', - facet_group: 'account', - sections: [ - { - name: 'general', - label: '@i18n:details.general', - fields: [ - { - name: 'uuid', - label: '@mc-opt:entitle_register:ipaentitlementid:label', - read_only: true - }, - { - $factory: IPA.entitle.download_widget, - name: 'certificate', - label: '@i18n:objects.entitle.certificate' - } - ] - }, - { - name: 'status', - label: '@i18n:objects.entitle.status', - fields: [ - { - name: 'product', - label: '@i18n:objects.entitle.product', - read_only: true - }, - { - name: 'quantity', - label: '@mc-arg:entitle_consume:quantity:label', - read_only: true - }, - { - name: 'consumed', - label: '@i18n:objects.entitle.consumed', - read_only: true - } - ] - } - ] - }, - { - $factory: IPA.entitle.certificates_facet, - name: 'certificates', - label: '@i18n:objects.entitle.certificates', - facet_group: 'certificates', - columns: [ - { - name: 'product', - label: '@i18n:objects.entitle.product' - }, - { - name: 'quantity', - label: '@mc-arg:entitle_consume:quantity:label' - }, - { - name: 'start', - label: '@i18n:objects.entitle.start' - }, - { - name: 'end', - label: '@i18n:objects.entitle.end' - }, - { - $factory: IPA.entitle.certificate_column, - name: 'certificate', - label: '@i18n:objects.entitle.certificate' - } - ] - } - ], - standard_association_facets: true, - dialogs: [ - { - $factory: IPA.entitle.register_online_dialog, - name: 'online_registration', - title: '@i18n:objects.entitle.registration', - fields: [ - { - name: 'username', - label: '@mc-arg:entitle_register:username:label' - }, - { - name: 'password', - label: '@mc-opt:entitle_register:password:label', - $type: 'password' - } -/* currently not supported - , { - name: 'ipaentitlementid', - label: '@mc-opt:entitle_register:ipaentitlementid:label' - } -*/ - ] - }, - { - $factory: IPA.entitle.register_offline_dialog, - name: 'offline_registration', - title: '@i18n:objects.entitle.import_certificate', - message: '@i18n:objects.entitle.import_message', - fields: [ - { - name: 'certificate', - label: '@i18n:objects.entitle.certificate' - } - ] - }, - { - $factory: IPA.entitle.consume_dialog, - name: 'consume', - title: '@i18n:objects.entitle.consume_entitlement', - fields: [ - { - name: 'quantity', - label: '@mc-arg:entitle_consume:quantity:label', - metadata: '@mc-arg:entitle_consume:quantity' - } - ] - }, - { - $factory: IPA.entitle.import_dialog, - name: 'import', - title: '@i18n:objects.entitle.import_certificate', - message: '@i18n:objects.entitle.import_message', - fields: [ - { - name: 'certificate', - label: '@i18n:objects.entitle.certificate' - } - ] - } - ] -};}; - -IPA.entitle.entity = function(spec) { - - spec = spec || {}; - - var that = IPA.entity(spec); - - that.status = spec.status || IPA.entitle.unregistered; - - that.get_accounts = function(on_success, on_error) { - - var command = IPA.command({ - name: 'entitle_find_'+that.status, - entity: 'entitle', - method: 'find', - options: { all: true }, - on_success: on_success, - on_error: on_error - }); - - command.execute(); - }; - - that.get_status = function(on_success, on_error) { - - var command = IPA.command({ - name: 'entitle_status_'+that.status, - entity: 'entitle', - method: 'status', - on_success: function(data, text_status, xhr) { - if (data.result.result.uuid == 'IMPORTED') { - that.status = IPA.entitle.offline; - } else { - that.status = IPA.entitle.online; - } - - if (on_success) { - on_success.call(this, data, text_status, xhr); - } - }, - on_error: function(xhr, text_status, error_thrown) { - that.status = IPA.entitle.unregistered; - - if (on_error) { - on_error.call(this, xhr, text_status, error_thrown); - } - }, - retry: false - }); - - command.execute(); - }; - - that.get_certificates = function(on_success, on_error) { - - var command = IPA.command({ - entity: 'entitle', - method: 'get', - on_success: on_success, - on_error: on_error, - retry: false - }); - - command.execute(); - }; - - that.register_online = function(username, password, ipaentitlementid, on_success, on_error) { - - var command = IPA.command({ - entity: 'entitle', - method: 'register', - args: [ username ], - options: { - password: password - }, - on_success: function(data, text_status, xhr) { - that.status = IPA.entitle.online; - if (on_success) { - on_success.call(this, data, text_status, xhr); - } - }, - on_error: on_error - }); - - if (ipaentitlementid) { - command.set_option('ipaentitlementid', ipaentitlementid); - } - - command.execute(); - }; - - that.register_offline = function(certificate, on_success, on_error) { - - var command = IPA.command({ - entity: 'entitle', - method: 'import', - args: [ certificate ], - on_success: function(data, text_status, xhr) { - that.status = IPA.entitle.offline; - if (on_success) { - on_success.call(this, data, text_status, xhr); - } - }, - on_error: on_error - }); - - command.execute(); - }; - - that.consume = function(quantity, on_success, on_error) { - - var command = IPA.command({ - entity: 'entitle', - method: 'consume', - args: [ quantity ], - on_success: on_success, - on_error: on_error - }); - - command.execute(); - }; - - that.import_certificate = function(certificate, on_success, on_error) { - - var command = IPA.command({ - entity: 'entitle', - method: 'import', - args: [ certificate ], - on_success: function(data, text_status, xhr) { - that.status = IPA.entitle.offline; - if (on_success) { - on_success.call(this, data, text_status, xhr); - } - }, - on_error: on_error - }); - - command.execute(); - }; - - return that; -}; - -IPA.entitle.details_facet = function(spec) { - - spec = spec || {}; - spec.disable_breadcrumb = true; - - var that = IPA.details_facet(spec); - - that.create_controls = function() { - - that.register_buttons = $('<span/>', { - name: 'register_buttons' - }).appendTo(that.controls); - - that.register_online_button = IPA.action_button({ - name: 'register', - label: '@i18n:objects.entitle.register', - icon: 'register-icon', - click: function() { - var dialog = that.entity.get_dialog('online_registration'); - dialog.open(that.container); - return false; - } - }).appendTo(that.register_buttons); - - that.register_online_button.css('display', 'none'); -/* - that.register_offline_button = IPA.action_button({ - name: 'import', - label: '@i18n:objects.entitle.import', - icon: 'import-icon', - click: function() { - var dialog = that.entity.get_dialog('offline_registration'); - dialog.open(that.container); - return false; - } - }).appendTo(that.register_buttons); - - that.register_offline_button.css('display', 'none'); -*/ - }; - - that.refresh = function() { - - var summary = $('span[name=summary]', that.container).empty(); - summary.append(text.get('@i18n:objects.entitle.loading')); - - function on_success(data, text_status, xhr) { - if (that.entity.status == IPA.entitle.unregistered) { - that.register_online_button.css('display', 'inline'); - // that.register_offline_button.css('display', 'inline'); - - } else { - that.register_online_button.css('display', 'none'); - // that.register_offline_button.css('display', 'none'); - } - - that.load(data); - - summary.empty(); - } - - function on_error(xhr, text_status, error_thrown) { - - that.register_online_button.css('display', 'inline'); - // that.register_offline_button.css('display', 'inline'); - - var data = {}; - data.result = {}; - data.result.result = { - uuid: '', - product: '', - quantity: 0, - consumed: 0 - }; - that.load(data); - - summary.empty(); - summary.append(error_thrown.name+': '+error_thrown.message); - } - - that.entity.get_status( - on_success, - on_error); - }; - - return that; -}; - -IPA.entitle.certificates_facet = function(spec) { - - spec = spec || {}; - spec.disable_facet_tabs = false; - spec.selectable = false; - - var that = IPA.table_facet(spec); - - var init = function() { - that.init_table(that.entity); - }; - - that.create_header = function(container) { - - that.facet_create_header(container); - - that.consume_buttons = $('<span/>', { - name: 'consume_buttons' - }).appendTo(that.controls); - - that.consume_button = IPA.action_button({ - name: 'consume', - label: '@i18n:objects.entitle.consume', - icon: 'consume-icon', - click: function() { - var dialog = that.entity.get_dialog('consume'); - dialog.open(that.container); - return false; - } - }).appendTo(that.consume_buttons); - - that.consume_button.css('display', 'none'); - - that.import_button = IPA.action_button({ - name: 'import', - label: '@i18n:objects.entitle.import_button', - icon: 'import-icon', - click: function() { - var dialog = that.entity.get_dialog('import'); - dialog.open(that.container); - return false; - } - }).appendTo(that.consume_buttons); - - that.import_button.css('display', 'none'); - }; - - that.refresh = function() { - - function on_success(data, text_status, xhr) { - - if (that.entity.status == IPA.entitle.online) { - that.consume_button.css('display', 'inline'); - that.import_button.css('display', 'none'); - - } else if (that.entity.status == IPA.entitle.offline) { - that.consume_button.css('display', 'none'); - that.import_button.css('display', 'inline'); - - } else { - that.consume_button.css('display', 'none'); - that.import_button.css('display', 'inline'); - } - - that.load(data); - } - - function on_error(xhr, text_status, error_thrown) { - - that.consume_button.css('display', 'none'); - that.import_button.css('display', 'inline'); - - that.table.summary.text(error_thrown.name+': '+error_thrown.message); - } - - that.entity.get_status( - function(data, text_status, xhr) { - that.entity.get_certificates( - on_success, - on_error); - }, - on_error); - }; - - init(); - - return that; -}; - -IPA.entitle.certificate_column = function(spec) { - - spec = spec || {}; - - var that = IPA.column(spec); - - that.setup = function(container, record) { - - container.empty(); - - var certificate = record[that.name]; - - $('<a/>', { - href: '#download', - html: text.get('@i18n:objects.entitle.download'), - click: function() { - var dialog = IPA.cert.download_dialog({ - title: '@i18n:objects.entitle.download_certificate', - certificate: certificate - }); - dialog.open(); - return false; - } - }).appendTo(container); - }; - - return that; -}; - -IPA.entitle.certificate_dialog = function(spec) { - - spec = spec || {}; - - var that = IPA.dialog(spec); - - that.width = spec.width || 500; - that.height = spec.height || 400; - that.message = text.get(spec.message); - that.label = text.get(spec.label); - - that.get_certificate = function() { - var certificate = that.textarea.val(); - return IPA.cert.BEGIN_CERTIFICATE+'\n'+ - $.trim(certificate)+'\n'+ - IPA.cert.END_CERTIFICATE+'\n'; - }; - - that.create = function() { - that.container.append(that.message); - that.container.append('<br/>'); - that.container.append('<br/>'); - - that.container.append(IPA.cert.BEGIN_CERTIFICATE); - that.container.append('<br/>'); - - that.textarea = $('<textarea/>', { - style: 'width: 100%; height: 225px;' - }).appendTo(that.container); - - that.container.append('<br/>'); - that.container.append(IPA.cert.END_CERTIFICATE); - }; - - return that; -}; - -IPA.entitle.register_online_dialog = function(spec) { - - spec = spec || {}; - - var that = IPA.dialog(spec); - - that.create_button({ - name: 'register', - label: '@i18n:objects.entitle.register', - click: function() { - var record = {}; - that.save(record); - - that.entity.register_online( - record.username[0], - record.password[0], - record.ipaentitlementid[0], - function() { - var facet = that.entity.get_facet(); - facet.refresh(); - that.close(); - } - ); - } - }); - - that.create_button({ - name: 'cancel', - label: '@i18n:buttons.cancel', - click: function() { - that.close(); - } - }); - - return that; -}; - -IPA.entitle.register_offline_dialog = function(spec) { - - spec = spec || {}; - - var that = IPA.entitle.certificate_dialog(spec); - - that.create_button({ - name: 'register', - label: that.label, - click: function() { - that.entity.register_offline( - that.get_certificate(), - function() { - var facet = that.entity.get_facet(); - facet.refresh(); - that.close(); - } - ); - } - }); - - that.create_button({ - name: 'cancel', - label: '@i18n:buttons.cancel', - click: function() { - that.close(); - } - }); - - return that; -}; - -IPA.entitle.consume_dialog = function(spec) { - - spec = spec || {}; - - var that = IPA.dialog(spec); - - that.create_button({ - name: 'consume', - label: '@i18n:objects.entitle.consume', - click: function() { - - if (!that.validate()) { - return; - } - - var record = {}; - that.save(record); - - that.entity.consume( - record.quantity[0], - function() { - var facet = that.entity.get_facet(); - facet.refresh(); - that.close(); - } - ); - } - }); - - that.create_button({ - name: 'cancel', - label: '@i18n:buttons.cancel', - click: function() { - that.close(); - } - }); - - return that; -}; - -IPA.entitle.import_dialog = function(spec) { - - spec = spec || {}; - - var that = IPA.entitle.certificate_dialog(spec); - - that.create_button({ - name: 'import', - label: '@i18n:objects.entitle.import_button', - click: function() { - that.entity.import_certificate( - that.get_certificate(), - function() { - var facet = that.entity.get_facet(); - facet.refresh(); - that.close(); - } - ); - } - }); - - that.create_button({ - name: 'cancel', - label: '@i18n:buttons.cancel', - click: function() { - that.close(); - } - }); - - return that; -}; - -IPA.entitle.download_widget = function(spec) { - - spec = spec || {}; - - var that = IPA.input_widget(spec); - - that.create = function(container) { - that.link = $('<a/>', { - 'href': '#download', - 'html': text.get('@i18n:objects.entitle.download'), - 'click': function() { - that.entity.get_accounts( - function(data, text_status, xhr) { - var userpkcs12 = data.result.result[0].userpkcs12; - if (!userpkcs12) { - alert(text.get('@i18n:objects.entitle.no_certificate')); - return; - } - - /* - * WARNING - despite using cert.download_dialog() and passing - * a certificate, it's NOT a certificate, it's a binary - * PKCS12 file that's been base64 encoded! - * Hence the reason add_pem_delimiters is false. - */ - var dialog = IPA.cert.download_dialog({ - title: '@i18n:objects.entitle.download_certificate', - certificate: userpkcs12[0].__base64__, - add_pem_delimiters: false - }); - dialog.open(); - } - ); - return false; - } - }).appendTo(container); - }; - - that.update = function() { - if (that.entity.status == IPA.entitle.online) { - that.link.css('display', 'inline'); - } else { - that.link.css('display', 'none'); - } - that.updated.notify([], that); - }; - - return that; -}; - -exp.entity_spec = make_spec(); -exp.register = function() { - var e = reg.entity; - e.register({type: 'entitle', spec: exp.entity_spec}); -}; -phases.on('registration', exp.register); - -return exp; -});
\ No newline at end of file |