From 286bbb2ab77559f63d10c8c5c4923520cb7d3d0f Mon Sep 17 00:00:00 2001 From: Felipe Volpone Date: Mon, 4 Sep 2017 09:12:06 -0300 Subject: [PATCH] Changing idoverrideuser-* to treat objectClass case insensitively This is import to avoid problems when migrating from olders versions of IPA and using idoverrideuser-* commands. https://pagure.io/freeipa/issue/7074 Reviewed-By: Florence Blanc-Renaud --- ipaserver/plugins/idviews.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ipaserver/plugins/idviews.py b/ipaserver/plugins/idviews.py index 263a35a84..a68b03915 100644 --- a/ipaserver/plugins/idviews.py +++ b/ipaserver/plugins/idviews.py @@ -547,7 +547,8 @@ def resolve_object_to_anchor(ldap, obj_type, obj, fallback_to_ldap): 'group': 'ipausergroup', }[obj_type] - if required_objectclass not in entry['objectclass']: + if not api.Object[obj_type].has_objectclass(entry['objectclass'], + required_objectclass): raise errors.ValidationError( name=_('IPA object'), error=_('system IPA objects (e.g. system groups, user ' @@ -790,12 +791,10 @@ class baseidoverride_del(LDAPDelete): except errors.NotFound: self.obj.handle_not_found(*keys) - required_object_classes = set(self.obj.object_class) - actual_object_classes = set(entry['objectclass']) - # If not, treat it as a failed search - if not required_object_classes.issubset(actual_object_classes): - self.obj.handle_not_found(*keys) + for required_oc in self.obj.object_class: + if not self.obj.has_objectclass(entry['objectclass'], required_oc): + self.obj.handle_not_found(*keys) return dn