summaryrefslogtreecommitdiffstats
path: root/install/ui/src/freeipa/association.js
diff options
context:
space:
mode:
authorAlexander Bokovoy <abokovoy@redhat.com>2013-05-06 17:10:56 +0200
committerMartin Kosek <mkosek@redhat.com>2013-05-06 20:44:00 +0200
commit03cdc22c940e82199c2afa8b4a69708237ee0a7a (patch)
tree110721c903eb032702f9980e354eec848fcbaef1 /install/ui/src/freeipa/association.js
parentaedded862dce2c8450d0eef5eca3d854166af06b (diff)
downloadfreeipa-03cdc22c940e82199c2afa8b4a69708237ee0a7a.tar.gz
freeipa-03cdc22c940e82199c2afa8b4a69708237ee0a7a.tar.xz
freeipa-03cdc22c940e82199c2afa8b4a69708237ee0a7a.zip
Resolve SIDs in Web UI
Introduce new command, 'trust-resolve', to aid resolving SIDs to names in the Web UI. The command uses new SSSD interface, nss_idmap, to resolve actual SIDs. SSSD caches resolved data so that future requests to resolve same SIDs are returned from a memory cache. Web UI code is using Dojo/Deferred to deliver result of SID resolution out of band. Once resolved names are available, they replace SID values. Since Web UI only shows ~20 records per page, up to 20 SIDs are resolved at the same time. They all sent within the single request to the server. https://fedorahosted.org/freeipa/ticket/3302
Diffstat (limited to 'install/ui/src/freeipa/association.js')
-rw-r--r--install/ui/src/freeipa/association.js50
1 files changed, 49 insertions, 1 deletions
diff --git a/install/ui/src/freeipa/association.js b/install/ui/src/freeipa/association.js
index d33ec8742..71ee71d48 100644
--- a/install/ui/src/freeipa/association.js
+++ b/install/ui/src/freeipa/association.js
@@ -23,6 +23,7 @@
* the AssociationList elements; IT NEEDS IT'S OWN CODE! */
define([
+ 'dojo/Deferred',
'./ipa',
'./jquery',
'./navigation',
@@ -31,7 +32,7 @@ define([
'./text',
'./search',
'./dialog'],
- function(IPA, $, navigation, phases, reg, text) {
+ function(Deferred, IPA, $, navigation, phases, reg, text) {
IPA.associator = function (spec) {
@@ -1364,6 +1365,53 @@ IPA.attribute_facet = function(spec, no_init) {
return that;
};
+IPA.sid_facet = function(spec, no_init) {
+
+ spec.name = spec.name || 'sid_facet';
+
+ var that = IPA.attribute_facet(spec, no_init);
+
+ that.load_records = function(value) {
+ var xlate = {};
+ var sidxlate_command = IPA.command({
+ entity: 'trust',
+ method: 'resolve',
+ options: {
+ sids: ''
+ }
+ });
+ sidxlate_command.on_success = function(data, text_status, xhr) {
+ for (var i=0; i< data.result.result.length; i++) {
+ var entry = data.result.result[i];
+ if (entry.sid[0] in xlate) {
+ xlate[entry.sid[0]].resolve(entry.name[0]);
+ }
+ }
+ };
+ that.table.empty();
+
+ if (value.length === 0) return;
+
+ var sids = [];
+ for (var i=0; i< value.length; i++) {
+ var sid = value[i][that.attribute];
+ var deferred = new Deferred();
+ value[i][that.attribute] = {
+ promise: deferred.promise,
+ temp: sid
+ };
+ xlate[sid] = deferred;
+ sids.push(sid);
+ that.add_record(value[i]);
+ }
+ sidxlate_command.options.sids = sids;
+ sidxlate_command.execute();
+ };
+
+ return that;
+};
+
+
IPA.attr_read_only_evaluator = function(spec) {
spec.name = spec.name || 'attr_read_only_evaluator';