|
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