-
Notifications
You must be signed in to change notification settings - Fork 6
/
samlmeta.plugin.attributes.js
104 lines (85 loc) · 3.08 KB
/
samlmeta.plugin.attributes.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
(function($) {
function hasContents(e) {
if (!e) return false;
for(var k in e) {
if (!e.hasOwnProperty(k)) continue;
return true;
}
return false;
}
SAMLmetaJS.plugins.attributes = {
tabClick: function (handler) {
handler($("a[href='#attributes']"));
},
addTab: function (pluginTabs) {
pluginTabs.list.push('<li><a href="#attributes">User attrs</a></li>');
pluginTabs.content.push(
'<div id="attributes">'
'<div class="content"></div>'
'<div>'
'<button class="selectall">Select all</button>'
'<button class="unselectall">Unselect all</button>'
'</div>'
'</div>'
);
},
setUp: function () {
$("div#attributes button.selectall").click(function(e) {
e.preventDefault();
$("div#attributes div.content input:checkbox").each(function(index, box) {
$(box).attr('checked', 'checked');
});
});
$("div#attributes button.unselectall").click(function(e) {
e.preventDefault();
$("div#attributes div.content input:checkbox").each(function(index, box) {
$(box).removeAttr('checked');
});
});
},
fromXML: function (entitydescriptor) {
var attributeHTML, checked, attrname, attributes;
attributes = {};
if (entitydescriptor && entitydescriptor.saml2sp && entitydescriptor.saml2sp.acs && entitydescriptor.saml2sp.acs.attributes) {
attributes = entitydescriptor.saml2sp.acs.attributes;
}
// Set attributes
attributeHTML = '';
for(attrname in SAMLmetaJS.Constants.attributes) {
if (SAMLmetaJS.Constants.attributes.hasOwnProperty(attrname)) {
checked = (attributes[attrname] ? 'checked="checked"' : '');
attributeHTML = '<div style="float: left; width: 300px"><input type="checkbox" id="' attrname '-id" name="' attrname '" ' checked '/>'
'<label for="' attrname '-id">' SAMLmetaJS.Constants.attributes[attrname] '</label></div>';
}
}
attributeHTML = '<br style="height: 0px; clear: both" />';
$("div#attributes > div.content").empty();
$("div#attributes > div.content").append(attributeHTML);
},
toXML: function (entitydescriptor) {
var
atleastone = false,
attributes = {};
$('div#attributes div').each(function(index, element) {
$(element).find('input:checked').each(function(index2, element2) {
attributes[$(element2).attr('name')] = 1;
atleastone = true;
});
});
if (atleastone) {
if (!entitydescriptor.saml2sp) entitydescriptor.saml2sp = {};
if (!entitydescriptor.saml2sp.acs) entitydescriptor.saml2sp.acs = {};
if (!entitydescriptor.saml2sp.acs.attributes) entitydescriptor.saml2sp.acs.attributes = attributes;
if (!SAMLmetaJS.tools.hasContents(entitydescriptor.name)) entitydescriptor.name = {'en': 'Unnamed'};
} else {
if (entitydescriptor && entitydescriptor.saml2sp &&
entitydescriptor.saml2sp.acs && entitydescriptor.saml2sp.acs.attributes) {
delete(entitydescriptor.saml2sp.acs.attributes);
}
}
},
validate: function () {
return true; // This plugin does not allow invalid inputs
}
};
}(jQuery));