mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2026-10-13 08:52:01 -05:00
Adds methods to manipulate groups by dns.
Renamed some of the user_group parameters to be self-evident. Binary wrapping isn't necessary on strings, so removed from xmlrpc calls.
This commit is contained in:
1 parent
f8eda3da3e
commit
1725397a53
5 files changed
+215
-85
No files matched your search
+42
-18
@@ -205,41 +205,65 @@ class IPAClient:
|
|||||||
|
|
||||||
return groups
|
return groups
|
||||||
|
|
||||||
def add_user_to_group(self, user, group):
|
def add_member_to_group(self, member_dn, group_cn):
|
||||||
|
"""Add a member to an existing group.
|
||||||
|
"""
|
||||||
|
|
||||||
|
return self.transport.add_member_to_group(member_dn, group_cn)
|
||||||
|
|
||||||
|
def add_members_to_group(self, member_dns, group_cn):
|
||||||
|
"""Add several members to an existing group.
|
||||||
|
member_dns is a list of dns to add
|
||||||
|
|
||||||
|
Returns a list of the dns that were not added.
|
||||||
|
"""
|
||||||
|
|
||||||
|
return self.transport.add_members_to_group(member_dns, group_cn)
|
||||||
|
|
||||||
|
def remove_member_from_group(self, member_dn, group_cn):
|
||||||
|
"""Remove a member from an existing group.
|
||||||
|
"""
|
||||||
|
|
||||||
|
return self.transport.remove_member_from_group(member_dn, group_cn)
|
||||||
|
|
||||||
|
def remove_members_from_group(self, member_dns, group_cn):
|
||||||
|
"""Remove several members from an existing group.
|
||||||
|
member_dns is a list of dns to remove
|
||||||
|
|
||||||
|
Returns a list of the dns that were not removed.
|
||||||
|
"""
|
||||||
|
|
||||||
|
return self.transport.remove_members_from_group(member_dns, group_cn)
|
||||||
|
|
||||||
|
def add_user_to_group(self, user_uid, group_cn):
|
||||||
"""Add a user to an existing group.
|
"""Add a user to an existing group.
|
||||||
user is a uid of the user to add
|
|
||||||
group is the cn of the group to be added to
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self.transport.add_user_to_group(user, group)
|
return self.transport.add_user_to_group(user_uid, group_cn)
|
||||||
|
|
||||||
def add_users_to_group(self, users, group):
|
def add_users_to_group(self, user_uids, group_cn):
|
||||||
"""Add several users to an existing group.
|
"""Add several users to an existing group.
|
||||||
user is a list of uids of the users to add
|
user_uids is a list of uids of the users to add
|
||||||
group is the cn of the group to be added to
|
|
||||||
|
|
||||||
Returns a list of the users that were not added.
|
Returns a list of the user uids that were not added.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self.transport.add_users_to_group(users, group)
|
return self.transport.add_users_to_group(user_uids, group_cn)
|
||||||
|
|
||||||
def remove_user_from_group(self, user, group):
|
def remove_user_from_group(self, user_uid, group_cn):
|
||||||
"""Remove a user from an existing group.
|
"""Remove a user from an existing group.
|
||||||
user is a uid of the user to remove
|
|
||||||
group is the cn of the group to be removed from
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self.transport.remove_user_from_group(user, group)
|
return self.transport.remove_user_from_group(user_uid, group_cn)
|
||||||
|
|
||||||
def remove_users_from_group(self, users, group):
|
def remove_users_from_group(self, user_uids, group_cn):
|
||||||
"""Remove several users from an existing group.
|
"""Remove several users from an existing group.
|
||||||
user is a list of uids of the users to remove
|
user_uids is a list of uids of the users to remove
|
||||||
group is the cn of the group to be removed from
|
|
||||||
|
|
||||||
Returns a list of the users that were not removed.
|
Returns a list of the user uids that were not removed.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self.transport.remove_users_from_group(users, group)
|
return self.transport.remove_users_from_group(user_uids, group_cn)
|
||||||
|
|
||||||
def update_group(self,group):
|
def update_group(self,group):
|
||||||
"""Update a group entry."""
|
"""Update a group entry."""
|
||||||
|
|||||||
+71
-25
@@ -326,49 +326,98 @@ class RPCClient:
|
|||||||
|
|
||||||
return ipautil.unwrap_binary_data(result)
|
return ipautil.unwrap_binary_data(result)
|
||||||
|
|
||||||
def add_user_to_group(self, user, group):
|
def add_member_to_group(self, member_dn, group_cn):
|
||||||
|
"""Add a new member to an existing group.
|
||||||
|
"""
|
||||||
|
server = self.setup_server()
|
||||||
|
try:
|
||||||
|
result = server.add_member_to_group(member_dn, group_cn)
|
||||||
|
except xmlrpclib.Fault, fault:
|
||||||
|
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
||||||
|
except socket.error, (value, msg):
|
||||||
|
raise xmlrpclib.Fault(value, msg)
|
||||||
|
|
||||||
|
return ipautil.unwrap_binary_data(result)
|
||||||
|
|
||||||
|
def add_members_to_group(self, member_dns, group_cn):
|
||||||
|
"""Add several members to an existing group.
|
||||||
|
member_dns is a list of the dns to add
|
||||||
|
|
||||||
|
Returns a list of the dns that were not added.
|
||||||
|
"""
|
||||||
|
server = self.setup_server()
|
||||||
|
try:
|
||||||
|
result = server.add_members_to_group(member_dns, group_cn)
|
||||||
|
except xmlrpclib.Fault, fault:
|
||||||
|
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
||||||
|
except socket.error, (value, msg):
|
||||||
|
raise xmlrpclib.Fault(value, msg)
|
||||||
|
|
||||||
|
return ipautil.unwrap_binary_data(result)
|
||||||
|
|
||||||
|
def remove_member_from_group(self, member_dn, group_cn):
|
||||||
|
"""Remove a member from an existing group.
|
||||||
|
"""
|
||||||
|
server = self.setup_server()
|
||||||
|
try:
|
||||||
|
result = server.remove_member_from_group(member_dn, group_cn)
|
||||||
|
except xmlrpclib.Fault, fault:
|
||||||
|
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
||||||
|
except socket.error, (value, msg):
|
||||||
|
raise xmlrpclib.Fault(value, msg)
|
||||||
|
|
||||||
|
return ipautil.unwrap_binary_data(result)
|
||||||
|
|
||||||
|
def remove_members_from_group(self, member_dns, group_cn):
|
||||||
|
"""Remove several members from an existing group.
|
||||||
|
|
||||||
|
Returns a list of the dns that were not removed.
|
||||||
|
"""
|
||||||
|
server = self.setup_server()
|
||||||
|
try:
|
||||||
|
result = server.remove_members_from_group(member_dns, group_cn)
|
||||||
|
except xmlrpclib.Fault, fault:
|
||||||
|
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
||||||
|
except socket.error, (value, msg):
|
||||||
|
raise xmlrpclib.Fault(value, msg)
|
||||||
|
|
||||||
|
return ipautil.unwrap_binary_data(result)
|
||||||
|
|
||||||
|
def add_user_to_group(self, user_uid, group_cn):
|
||||||
"""Add a user to an existing group.
|
"""Add a user to an existing group.
|
||||||
user is a uid of the user to add
|
|
||||||
group is the cn of the group to be added to
|
|
||||||
"""
|
"""
|
||||||
server = self.setup_server()
|
server = self.setup_server()
|
||||||
try:
|
try:
|
||||||
result = server.add_user_to_group(ipautil.wrap_binary_data(user),
|
result = server.add_user_to_group(user_uid, group_cn)
|
||||||
ipautil.wrap_binary_data(group))
|
|
||||||
except xmlrpclib.Fault, fault:
|
except xmlrpclib.Fault, fault:
|
||||||
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
||||||
except socket.error, (value, msg):
|
except socket.error, (value, msg):
|
||||||
raise xmlrpclib.Fault(value, msg)
|
raise xmlrpclib.Fault(value, msg)
|
||||||
|
|
||||||
return ipautil.unwrap_binary_data(result)
|
return ipautil.unwrap_binary_data(result)
|
||||||
|
|
||||||
def add_users_to_group(self, users, group):
|
def add_users_to_group(self, user_uids, group_cn):
|
||||||
"""Add several users to an existing group.
|
"""Add several users to an existing group.
|
||||||
user is a list of the uids of the users to add
|
user_uids is a list of the uids of the users to add
|
||||||
group is the cn of the group to be added to
|
|
||||||
|
|
||||||
Returns a list of the users that were not added.
|
Returns a list of the user uids that were not added.
|
||||||
"""
|
"""
|
||||||
server = self.setup_server()
|
server = self.setup_server()
|
||||||
try:
|
try:
|
||||||
result = server.add_users_to_group(ipautil.wrap_binary_data(users),
|
result = server.add_users_to_group(user_uids, group_cn)
|
||||||
ipautil.wrap_binary_data(group))
|
|
||||||
except xmlrpclib.Fault, fault:
|
except xmlrpclib.Fault, fault:
|
||||||
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
||||||
except socket.error, (value, msg):
|
except socket.error, (value, msg):
|
||||||
raise xmlrpclib.Fault(value, msg)
|
raise xmlrpclib.Fault(value, msg)
|
||||||
|
|
||||||
return ipautil.unwrap_binary_data(result)
|
return ipautil.unwrap_binary_data(result)
|
||||||
|
|
||||||
def remove_user_from_group(self, user, group):
|
def remove_user_from_group(self, user_uid, group_cn):
|
||||||
"""Remove a user from an existing group.
|
"""Remove a user from an existing group.
|
||||||
user is a uid of the user to remove
|
|
||||||
group is the cn of the group to be removed from
|
|
||||||
"""
|
"""
|
||||||
server = self.setup_server()
|
server = self.setup_server()
|
||||||
try:
|
try:
|
||||||
result = server.remove_user_from_group(ipautil.wrap_binary_data(user),
|
result = server.remove_user_from_group(user_uid, group_cn)
|
||||||
ipautil.wrap_binary_data(group))
|
|
||||||
except xmlrpclib.Fault, fault:
|
except xmlrpclib.Fault, fault:
|
||||||
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
||||||
except socket.error, (value, msg):
|
except socket.error, (value, msg):
|
||||||
@@ -376,18 +425,15 @@ class RPCClient:
|
|||||||
|
|
||||||
return ipautil.unwrap_binary_data(result)
|
return ipautil.unwrap_binary_data(result)
|
||||||
|
|
||||||
def remove_users_from_group(self, users, group):
|
def remove_users_from_group(self, user_uids, group_cn):
|
||||||
"""Remove several users from an existing group.
|
"""Remove several users from an existing group.
|
||||||
user is a list of the uids of the users to remove
|
user_uids is a list of the uids of the users to remove
|
||||||
group is the cn of the group to be removed from
|
|
||||||
|
|
||||||
Returns a list of the users that were not removed.
|
Returns a list of the user uids that were not removed.
|
||||||
"""
|
"""
|
||||||
server = self.setup_server()
|
server = self.setup_server()
|
||||||
try:
|
try:
|
||||||
result = server.remove_users_from_group(
|
result = server.remove_users_from_group(user_uids, group_cn)
|
||||||
ipautil.wrap_binary_data(users),
|
|
||||||
ipautil.wrap_binary_data(group))
|
|
||||||
except xmlrpclib.Fault, fault:
|
except xmlrpclib.Fault, fault:
|
||||||
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
|
||||||
except socket.error, (value, msg):
|
except socket.error, (value, msg):
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ class IPAdmin(SimpleLDAPObject):
|
|||||||
out this way so that we can call them from places other than
|
out this way so that we can call them from places other than
|
||||||
instance creation e.g. when we just need to reconnect, not create a
|
instance creation e.g. when we just need to reconnect, not create a
|
||||||
new instance"""
|
new instance"""
|
||||||
if debug.lower() == "on":
|
if debug and debug.lower() == "on":
|
||||||
ldap.set_option(ldap.OPT_DEBUG_LEVEL,255)
|
ldap.set_option(ldap.OPT_DEBUG_LEVEL,255)
|
||||||
if cacert is not None:
|
if cacert is not None:
|
||||||
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,cacert)
|
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,cacert)
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ class IPAConnPool:
|
|||||||
return conn
|
return conn
|
||||||
|
|
||||||
def releaseConn(self, conn):
|
def releaseConn(self, conn):
|
||||||
|
if conn is None:
|
||||||
|
return
|
||||||
# We can't re-use SASL connections. If proxydn is None it means
|
# We can't re-use SASL connections. If proxydn is None it means
|
||||||
# we have a Kerberos credentails cache set. See ipaldap.set_krbccache
|
# we have a Kerberos credentails cache set. See ipaldap.set_krbccache
|
||||||
if conn.proxydn is None:
|
if conn.proxydn is None:
|
||||||
@@ -716,27 +718,24 @@ class IPAServer:
|
|||||||
|
|
||||||
return groups
|
return groups
|
||||||
|
|
||||||
def add_user_to_group(self, user, group, opts=None):
|
def add_member_to_group(self, member_dn, group_cn, opts=None):
|
||||||
"""Add a user to an existing group.
|
"""Add a member to an existing group.
|
||||||
user is a uid of the user to add
|
|
||||||
group is the cn of the group to be added to
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
old_group = self.get_group_by_cn(group, None, opts)
|
old_group = self.get_group_by_cn(group_cn, None, opts)
|
||||||
if old_group is None:
|
if old_group is None:
|
||||||
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
|
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
|
||||||
new_group = copy.deepcopy(old_group)
|
new_group = copy.deepcopy(old_group)
|
||||||
|
|
||||||
user_dn = self.get_user_by_uid(user, ['dn', 'uid', 'objectclass'], opts)
|
# check to make sure member_dn exists
|
||||||
if user_dn is None:
|
member_entry = self.__get_entry(member_dn, "(objectClass=*)", ['dn','uid'], opts)
|
||||||
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
|
|
||||||
|
|
||||||
if new_group.get('uniquemember') is not None:
|
if new_group.get('uniquemember') is not None:
|
||||||
if ((isinstance(new_group.get('uniquemember'), str)) or (isinstance(new_group.get('uniquemember'), unicode))):
|
if ((isinstance(new_group.get('uniquemember'), str)) or (isinstance(new_group.get('uniquemember'), unicode))):
|
||||||
new_group['uniquemember'] = [new_group['uniquemember']]
|
new_group['uniquemember'] = [new_group['uniquemember']]
|
||||||
new_group['uniquemember'].append(user_dn['dn'])
|
new_group['uniquemember'].append(member_dn)
|
||||||
else:
|
else:
|
||||||
new_group['uniquemember'] = user_dn['dn']
|
new_group['uniquemember'] = member_dn
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ret = self.__update_entry(old_group, new_group, opts)
|
ret = self.__update_entry(old_group, new_group, opts)
|
||||||
@@ -744,50 +743,44 @@ class IPAServer:
|
|||||||
raise
|
raise
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def add_users_to_group(self, users, group, opts=None):
|
def add_members_to_group(self, member_dns, group_cn, opts=None):
|
||||||
"""Given a list of user uid's add them to the group cn denoted by group
|
"""Given a list of dn's, add them to the group cn denoted by group
|
||||||
Returns a list of the users were not added to the group.
|
Returns a list of the member_dns that were not added to the group.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
failed = []
|
failed = []
|
||||||
|
|
||||||
if (isinstance(users, str)):
|
if (isinstance(member_dns, str)):
|
||||||
users = [users]
|
member_dns = [member_dns]
|
||||||
|
|
||||||
for user in users:
|
for member_dn in member_dns:
|
||||||
try:
|
try:
|
||||||
self.add_user_to_group(user, group, opts)
|
self.add_member_to_group(member_dn, group_cn, opts)
|
||||||
except ipaerror.exception_for(ipaerror.LDAP_EMPTY_MODLIST):
|
except ipaerror.exception_for(ipaerror.LDAP_EMPTY_MODLIST):
|
||||||
# User is already in the group
|
# User is already in the group
|
||||||
failed.append(user)
|
failed.append(member_dn)
|
||||||
except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
|
except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
|
||||||
# User or the group does not exist
|
# User or the group does not exist
|
||||||
failed.append(user)
|
failed.append(member_dn)
|
||||||
|
|
||||||
return failed
|
return failed
|
||||||
|
|
||||||
def remove_user_from_group(self, user, group, opts=None):
|
def remove_member_from_group(self, member_dn, group_cn, opts=None):
|
||||||
"""Remove a user from an existing group.
|
"""Remove a member_dn from an existing group.
|
||||||
user is a uid of the user to remove
|
|
||||||
group is the cn of the group to be removed from
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
old_group = self.get_group_by_cn(group, None, opts)
|
old_group = self.get_group_by_cn(group_cn, None, opts)
|
||||||
if old_group is None:
|
if old_group is None:
|
||||||
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
|
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
|
||||||
new_group = copy.deepcopy(old_group)
|
new_group = copy.deepcopy(old_group)
|
||||||
|
|
||||||
user_dn = self.get_user_by_uid(user, ['dn', 'uid', 'objectclass'], opts)
|
|
||||||
if user_dn is None:
|
|
||||||
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
|
|
||||||
|
|
||||||
if new_group.get('uniquemember') is not None:
|
if new_group.get('uniquemember') is not None:
|
||||||
if ((isinstance(new_group.get('uniquemember'), str)) or (isinstance(new_group.get('uniquemember'), unicode))):
|
if ((isinstance(new_group.get('uniquemember'), str)) or (isinstance(new_group.get('uniquemember'), unicode))):
|
||||||
new_group['uniquemember'] = [new_group['uniquemember']]
|
new_group['uniquemember'] = [new_group['uniquemember']]
|
||||||
try:
|
try:
|
||||||
new_group['uniquemember'].remove(user_dn['dn'])
|
new_group['uniquemember'].remove(member_dn)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
# User is not in the group
|
# member is not in the group
|
||||||
# FIXME: raise more specific error?
|
# FIXME: raise more specific error?
|
||||||
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
|
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
|
||||||
else:
|
else:
|
||||||
@@ -801,26 +794,89 @@ class IPAServer:
|
|||||||
raise
|
raise
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def remove_users_from_group(self, users, group, opts=None):
|
def remove_members_from_group(self, member_dns, group_cn, opts=None):
|
||||||
"""Given a list of user uid's remove them from the group cn denoted
|
"""Given a list of member dn's remove them from the group.
|
||||||
by group
|
Returns a list of the members not removed from the group.
|
||||||
Returns a list of the users were not removed from the group.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
failed = []
|
failed = []
|
||||||
|
|
||||||
if (isinstance(users, str)):
|
if (isinstance(member_dns, str)):
|
||||||
users = [users]
|
member_dns = [member_dns]
|
||||||
|
|
||||||
for user in users:
|
for member_dn in member_dns:
|
||||||
try:
|
try:
|
||||||
self.remove_user_from_group(user, group, opts)
|
self.remove_member_from_group(member_dn, group_cn, opts)
|
||||||
except ipaerror.exception_for(ipaerror.LDAP_EMPTY_MODLIST):
|
except ipaerror.exception_for(ipaerror.LDAP_EMPTY_MODLIST):
|
||||||
# User is not in the group
|
# member is not in the group
|
||||||
failed.append(user)
|
failed.append(member_dn)
|
||||||
|
except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
|
||||||
|
# member_dn or the group does not exist
|
||||||
|
failed.append(member_dn)
|
||||||
|
|
||||||
|
return failed
|
||||||
|
|
||||||
|
def add_user_to_group(self, user_uid, group_cn, opts=None):
|
||||||
|
"""Add a user to an existing group.
|
||||||
|
"""
|
||||||
|
|
||||||
|
user = self.get_user_by_uid(user_uid, ['dn', 'uid', 'objectclass'], opts)
|
||||||
|
if user is None:
|
||||||
|
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
|
||||||
|
|
||||||
|
return self.add_member_to_group(user['dn'], group_cn, opts)
|
||||||
|
|
||||||
|
def add_users_to_group(self, user_uids, group_cn, opts=None):
|
||||||
|
"""Given a list of user uid's add them to the group cn denoted by group
|
||||||
|
Returns a list of the users were not added to the group.
|
||||||
|
"""
|
||||||
|
|
||||||
|
failed = []
|
||||||
|
|
||||||
|
if (isinstance(user_uids, str)):
|
||||||
|
user_uids = [user_uids]
|
||||||
|
|
||||||
|
for user_uid in user_uids:
|
||||||
|
try:
|
||||||
|
self.add_user_to_group(user_uid, group_cn, opts)
|
||||||
|
except ipaerror.exception_for(ipaerror.LDAP_EMPTY_MODLIST):
|
||||||
|
# User is already in the group
|
||||||
|
failed.append(user_uid)
|
||||||
except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
|
except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
|
||||||
# User or the group does not exist
|
# User or the group does not exist
|
||||||
failed.append(user)
|
failed.append(user_uid)
|
||||||
|
|
||||||
|
return failed
|
||||||
|
|
||||||
|
def remove_user_from_group(self, user_uid, group_cn, opts=None):
|
||||||
|
"""Remove a user from an existing group.
|
||||||
|
"""
|
||||||
|
|
||||||
|
user = self.get_user_by_uid(user_uid, ['dn', 'uid', 'objectclass'], opts)
|
||||||
|
if user is None:
|
||||||
|
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
|
||||||
|
|
||||||
|
return self.remove_member_from_group(user['dn'], group_cn, opts)
|
||||||
|
|
||||||
|
def remove_users_from_group(self, user_uids, group_cn, opts=None):
|
||||||
|
"""Given a list of user uid's remove them from the group
|
||||||
|
Returns a list of the user uids not removed from the group.
|
||||||
|
"""
|
||||||
|
|
||||||
|
failed = []
|
||||||
|
|
||||||
|
if (isinstance(user_uids, str)):
|
||||||
|
user_uids = [user_uids]
|
||||||
|
|
||||||
|
for user_uid in user_uids:
|
||||||
|
try:
|
||||||
|
self.remove_user_from_group(user_uid, group_cn, opts)
|
||||||
|
except ipaerror.exception_for(ipaerror.LDAP_EMPTY_MODLIST):
|
||||||
|
# User is not in the group
|
||||||
|
failed.append(user_uid)
|
||||||
|
except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
|
||||||
|
# User or the group does not exist
|
||||||
|
failed.append(user_uid)
|
||||||
|
|
||||||
return failed
|
return failed
|
||||||
|
|
||||||
|
|||||||
@@ -330,6 +330,10 @@ def handler(req, profiling=False):
|
|||||||
h.register_function(f.get_groups_by_member)
|
h.register_function(f.get_groups_by_member)
|
||||||
h.register_function(f.add_group)
|
h.register_function(f.add_group)
|
||||||
h.register_function(f.find_groups)
|
h.register_function(f.find_groups)
|
||||||
|
h.register_function(f.add_member_to_group)
|
||||||
|
h.register_function(f.add_members_to_group)
|
||||||
|
h.register_function(f.remove_member_from_group)
|
||||||
|
h.register_function(f.remove_members_from_group)
|
||||||
h.register_function(f.add_user_to_group)
|
h.register_function(f.add_user_to_group)
|
||||||
h.register_function(f.add_users_to_group)
|
h.register_function(f.add_users_to_group)
|
||||||
h.register_function(f.add_group_to_group)
|
h.register_function(f.add_group_to_group)
|
||||||
|
|||||||
Reference in new issue
Block a user