|
37 | 37 | from saml2.sigver import security_context |
38 | 38 | from saml2.extension.mdattr import NAMESPACE as NS_MDATTR |
39 | 39 | from saml2.extension.mdattr import EntityAttributes |
| 40 | +from saml2.extension.mdui import NAMESPACE as NS_MDUI |
| 41 | +from saml2.extension.mdui import UIInfo |
| 42 | +from saml2.extension.mdui import DisplayName |
| 43 | +from saml2.extension.mdui import Description |
| 44 | +from saml2.extension.mdui import InformationURL |
| 45 | +from saml2.extension.mdui import PrivacyStatementURL |
| 46 | +from saml2.extension.mdui import Logo |
40 | 47 |
|
41 | 48 |
|
42 | 49 | logger = logging.getLogger(__name__) |
|
45 | 52 | "mdattr_entityattributes": "{ns}&{tag}".format( |
46 | 53 | ns=NS_MDATTR, tag=EntityAttributes.c_tag |
47 | 54 | ), |
| 55 | + "mdui_uiinfo": "{ns}&{tag}".format(ns=NS_MDUI, tag=UIInfo.c_tag), |
48 | 56 | } |
49 | 57 |
|
50 | 58 | ENTITY_CATEGORY = "http://macedir.org/entity-category" |
@@ -1255,6 +1263,33 @@ def entity_attributes(self, entity_id): |
1255 | 1263 | "attribute_value"]] |
1256 | 1264 | return res |
1257 | 1265 |
|
| 1266 | + def _mdui_uiinfo(self, entity_id): |
| 1267 | + descriptor_names = ( |
| 1268 | + item |
| 1269 | + for item in self[entity_id].keys() |
| 1270 | + if item.endswith("_descriptor") |
| 1271 | + ) |
| 1272 | + descriptors = ( |
| 1273 | + descriptor |
| 1274 | + for descriptor_name in descriptor_names |
| 1275 | + for descriptor in self[entity_id].get(descriptor_name, []) |
| 1276 | + ) |
| 1277 | + extensions = ( |
| 1278 | + extension |
| 1279 | + for descriptor in descriptors |
| 1280 | + for extension in descriptor.get("extensions", {}).get("extension_elements", []) |
| 1281 | + ) |
| 1282 | + uiinfos = ( |
| 1283 | + extension |
| 1284 | + for extension in extensions |
| 1285 | + if extension.get("__class__") == classnames["mdui_uiinfo"] |
| 1286 | + ) |
| 1287 | + return uiinfos |
| 1288 | + |
| 1289 | + def mdui_uiinfo(self, entity_id): |
| 1290 | + uiinfos = list(self._mdui_uiinfo(entity_id)) |
| 1291 | + return uiinfos |
| 1292 | + |
1258 | 1293 | def bindings(self, entity_id, typ, service): |
1259 | 1294 | for _md in self.metadata.values(): |
1260 | 1295 | if entity_id in _md.items(): |
|
0 commit comments