Fixes an issuer where a member of a role is not able to add new users to said role. (#445)

This commit is contained in:
kevgliss
2016-10-11 17:24:15 -07:00
committed by GitHub
parent 35cfb50955
commit c05a49f8c9
6 changed files with 70 additions and 22 deletions

View File

@ -36,14 +36,14 @@ class CertificatePermission(Permission):
super(CertificatePermission, self).__init__(*needs)
RoleUser = namedtuple('role', ['method', 'value'])
ViewRoleCredentialsNeed = partial(RoleUser, 'roleView')
RoleMember = namedtuple('role', ['method', 'value'])
RoleMemberNeed = partial(RoleMember, 'member')
class ViewRoleCredentialsPermission(Permission):
class RoleMemberPermission(Permission):
def __init__(self, role_id):
need = ViewRoleCredentialsNeed(role_id)
super(ViewRoleCredentialsPermission, self).__init__(need, RoleNeed('admin'))
needs = [RoleNeed('admin'), RoleMemberNeed(role_id)]
super(RoleMemberPermission, self).__init__(*needs)
AuthorityCreator = namedtuple('authority', ['method', 'value'])

View File

@ -29,7 +29,7 @@ from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicNumbers
from lemur.users import service as user_service
from lemur.auth.permissions import CertificateCreatorNeed, \
AuthorityCreatorNeed, ViewRoleCredentialsNeed
AuthorityCreatorNeed, RoleMemberNeed
def get_rsa_public_key(n, e):
@ -155,8 +155,8 @@ def on_identity_loaded(sender, identity):
# identity with the roles that the user provides
if hasattr(user, 'roles'):
for role in user.roles:
identity.provides.add(ViewRoleCredentialsNeed(role.name))
identity.provides.add(RoleNeed(role.name))
identity.provides.add(RoleMemberNeed(role.id))
# apply ownership for authorities
if hasattr(user, 'authorities'):