# HG changeset patch # User Thierry Florac # Date 1561472829 -7200 # Node ID 9bff468cbfc37e2aecd76f9a1725764504de3a78 # Parent 0f9c64c65e5fcac3f0ef7d6cf16f9f7dc747527c Added checks when revoking role before removing internal dictionaries entries diff -r 0f9c64c65e5f -r 9bff468cbfc3 src/pyams_security/security.py --- a/src/pyams_security/security.py Tue Jun 25 15:02:52 2019 +0200 +++ b/src/pyams_security/security.py Tue Jun 25 16:27:09 2019 +0200 @@ -123,15 +123,17 @@ principal_id = principal_id.id if principal_id in role_principals: principal_roles = self._roles_by_principal.get(principal_id) or set() - role_principals.remove(principal_id) - principal_roles.remove(role_id) + if principal_id in role_principals: + role_principals.remove(principal_id) + if role_id in principal_roles: + principal_roles.remove(role_id) if principal_roles: self._roles_by_principal[principal_id] = principal_roles - else: + elif principal_id in self._roles_by_principal: del self._roles_by_principal[principal_id] if role_principals: self._principals_by_role[role_id] = role_principals - else: + elif role_id in self._principals_by_role: del self._principals_by_role[role_id] registry.notify(RevokedRoleEvent(self, role_id, principal_id))