mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Implement user inactivation
Comment some functions Add attribute argument to get_user()
This commit is contained in:
@@ -41,14 +41,19 @@ class IPAClient:
|
||||
self.transport = rpcclient.RPCClient()
|
||||
|
||||
def set_principal(self,princ):
|
||||
"""Set the name of the principal that will be used for
|
||||
LDAP proxy authentication"""
|
||||
if self.local:
|
||||
self.transport.set_principal(princ)
|
||||
|
||||
def get_user(self,uid):
|
||||
result = self.transport.get_user(uid)
|
||||
def get_user(self,uid,sattrs=None):
|
||||
"""Get a specific user by uid. If sattrs is set then only those
|
||||
attributes will be returned."""
|
||||
result = self.transport.get_user(uid,sattrs)
|
||||
return user.User(result)
|
||||
|
||||
def add_user(self,user):
|
||||
"""Add a user. user is a dict of attribute/value pairs"""
|
||||
|
||||
realm = config.config.get_realm()
|
||||
|
||||
@@ -73,32 +78,48 @@ class IPAClient:
|
||||
return result
|
||||
|
||||
def get_all_users(self):
|
||||
"""Get as a list of User objects all users in the directory"""
|
||||
result = self.transport.get_all_users()
|
||||
|
||||
all_users = []
|
||||
for (attrs) in result:
|
||||
if attrs is not None:
|
||||
all_users.append(user.User(attrs))
|
||||
if attrs is not None:
|
||||
all_users.append(user.User(attrs))
|
||||
|
||||
return all_users
|
||||
|
||||
def get_add_schema(self):
|
||||
"""Prototype for the GUI. Specify in the directory fields to
|
||||
be displayed and what data to get for new users."""
|
||||
result = self.transport.get_add_schema()
|
||||
return result
|
||||
|
||||
def find_users(self, criteria, sattrs=None):
|
||||
"""Find users whose uid matches the criteria. Wildcards are
|
||||
acceptable. Returns a list of User objects."""
|
||||
result = self.transport.find_users(criteria, sattrs)
|
||||
|
||||
users = []
|
||||
for (attrs) in result:
|
||||
if attrs is not None:
|
||||
users.append(user.User(attrs))
|
||||
if attrs is not None:
|
||||
users.append(user.User(attrs))
|
||||
|
||||
return users
|
||||
|
||||
def update_user(self,olduser,newuser):
|
||||
"""Update a user entry. olduser is a dict of attribute/value pairs
|
||||
of the original entry. newuser is a dict of attribute/value pairs
|
||||
of the new entry."""
|
||||
|
||||
realm = config.config.get_realm()
|
||||
|
||||
result = self.transport.update_user(olduser,newuser)
|
||||
return result
|
||||
|
||||
def mark_user_deleted(self,uid):
|
||||
"""Set a user as inactive by uid."""
|
||||
|
||||
realm = config.config.get_realm()
|
||||
|
||||
result = self.transport.mark_user_deleted(uid)
|
||||
return result
|
||||
|
||||
@@ -39,9 +39,12 @@ class RPCClient:
|
||||
ipa.config.init_config()
|
||||
|
||||
def server_url(self):
|
||||
"""Build the XML-RPC server URL from our configuration"""
|
||||
return "http://" + config.config.get_server() + "/ipa"
|
||||
|
||||
def setup_server(self):
|
||||
"""Create our XML-RPC server connection using kerberos
|
||||
authentication"""
|
||||
return xmlrpclib.ServerProxy(self.server_url(), KerbTransport())
|
||||
|
||||
def convert_entry(self,ent):
|
||||
@@ -63,11 +66,15 @@ class RPCClient:
|
||||
|
||||
return user
|
||||
|
||||
def get_user(self,username):
|
||||
"""Get a specific user"""
|
||||
def get_user(self,username,sattrs=None):
|
||||
"""Get a specific user. If sattrs is not None then only those
|
||||
attributes will be returned. The result is a dict."""
|
||||
server = self.setup_server()
|
||||
try:
|
||||
result = server.get_user(username)
|
||||
if sattrs is not None:
|
||||
result = server.get_user(username,sattrs)
|
||||
else:
|
||||
result = server.get_user(username)
|
||||
except xmlrpclib.Fault, fault:
|
||||
raise xmlrpclib.Fault(fault.faultCode, fault.faultString)
|
||||
except socket.error, (value, msg):
|
||||
@@ -76,7 +83,9 @@ class RPCClient:
|
||||
return result
|
||||
|
||||
def add_user(self,user):
|
||||
"""Add a new user"""
|
||||
"""Add a new user. Takes as input a dict where the key is the
|
||||
attribute name and the value is either a string or in the case
|
||||
of a multi-valued field a list of values"""
|
||||
server = self.setup_server()
|
||||
|
||||
try:
|
||||
@@ -147,3 +156,16 @@ class RPCClient:
|
||||
raise xmlrpclib.Fault(value, msg)
|
||||
|
||||
return result
|
||||
|
||||
def mark_user_deleted(self,uid):
|
||||
"""Mark a user as deleted/inactive"""
|
||||
server = self.setup_server()
|
||||
|
||||
try:
|
||||
result = server.mark_user_deleted(uid)
|
||||
except xmlrpclib.Fault, fault:
|
||||
raise xmlrpclib.Fault(fault.faultCode, fault.faultString)
|
||||
except socket.error, (value, msg):
|
||||
raise xmlrpclib.Fault(value, msg)
|
||||
|
||||
return result
|
||||
|
||||
Reference in New Issue
Block a user