forked from ScoDoc/ScoDoc
172 lines
4.7 KiB
Plaintext
172 lines
4.7 KiB
Plaintext
User Sources
|
|
------------
|
|
|
|
This is the list of functions your auth source should provide.
|
|
|
|
createUser(self, username, password, roles)
|
|
Create a User to authenticate against username, password and roles,
|
|
should all be obvious.
|
|
|
|
|
|
updateUser(self, username, password, roles)
|
|
Update a user's roles and password.
|
|
An empty password means do not change passwords, so at least at this time
|
|
it's not possible to have passwordless accounts.
|
|
|
|
|
|
cryptPassword(self, username, password)
|
|
Encrypt a password
|
|
If no 'crypt' method is supplied return the Password --
|
|
i.e. plaintext password.
|
|
|
|
|
|
deleteUsers(self, userids)
|
|
Delete a set of users, userids is a list of usernames to delete.
|
|
|
|
|
|
listUserNames(self)
|
|
returns a list of usernames.
|
|
|
|
listOneUser(self,username)
|
|
Return one user matching the username
|
|
Should be a dictionary;
|
|
{'username':username, 'password':cryptedPassword, 'roles':list_of_roles}
|
|
Once again, you can provide more information than this if you're customising
|
|
the forms.
|
|
|
|
listUsers(self)
|
|
Return the list of users in the same format as listOneUser
|
|
|
|
|
|
remoteAuthMethod(self, username, password)
|
|
You can define this to go off and do the authentication instead of
|
|
using the basic one inside the User Object. Useful for IMAP/LDAP auth
|
|
type methods where the authentication is handled elsewhere and we just want
|
|
to know success or failure. If you don't want to do this you should have;
|
|
|
|
remoteAuthMethod=None
|
|
|
|
in your AuthSource (to explicitly tell the exUserFolder that you don't).
|
|
|
|
------------------------------------------------------------------------
|
|
This is a skeleton class;
|
|
|
|
manage_addfooAuthSourceForm=HTMLFile('manage_addfooAuthSourceForm', globals())
|
|
manage_editfooAuthSourceForm=HTMLFile('manage_editfooAuthSourceForm', globals())
|
|
|
|
class fooAuthSource(Folder):
|
|
|
|
meta_type='Authentication Source'
|
|
title='User Supplied Authentication'
|
|
icon ='misc_/exUserFolder/exUserFolderPlugin.gif'
|
|
manage_editForm=manage_editfooAuthSourceForm
|
|
|
|
def __init__(self):
|
|
self.id='fooAuthSource'
|
|
|
|
# Create a User to authenticate against
|
|
# username, password and roles
|
|
def createUser(self, username, password, roles):
|
|
""" Add A Username """
|
|
pass
|
|
|
|
# Update a user's roles and password
|
|
# An empty password means do not change passwords...
|
|
def updateUser(self, username, password, roles):
|
|
pass
|
|
|
|
# Encrypt a password
|
|
# If no 'crypt' method is supplied return the
|
|
# Password -- i.e. plaintext password
|
|
def cryptPassword(self, username, password):
|
|
pass
|
|
|
|
# Delete a set of users
|
|
def deleteUsers(self, userids):
|
|
pass
|
|
|
|
# Return a list of usernames
|
|
def listUserNames(self):
|
|
pass
|
|
|
|
# Return a list of user dictionaries with
|
|
# {'username':username} can be extended to pass back other
|
|
# information, but, we don't do that just now
|
|
def listUsers(self):
|
|
pass
|
|
|
|
# Return one user matching the username
|
|
# Should be a dictionary;
|
|
# {'username':username, 'password':cryptedPassword, 'roles':list_of_roles}
|
|
def listOneUser(self,username):
|
|
pass
|
|
|
|
#
|
|
# Return a list of users, dictionary format as for listOneUser
|
|
#
|
|
def getUsers(self):
|
|
pass
|
|
|
|
#
|
|
# You can define this to go off and do the authentication instead of
|
|
# using the basic one inside the User Object
|
|
#
|
|
remoteAuthMethod=None
|
|
|
|
## def remoteAuthMethod(self, username, password):
|
|
## pass
|
|
|
|
def postInitialisation(self, REQUEST):
|
|
pass
|
|
|
|
fooAuthReg=PluginRegister('fooAuthSource', 'User Supplied Authentication Source',
|
|
fooAuthSource, manage_addfooAuthSourceForm,
|
|
manage_addfooAuthSource,
|
|
manage_editfooAuthSourceForm)
|
|
exUserFolder.authSources['fooAuthSource']=fooAuthReg
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
Property Sources
|
|
----------------
|
|
|
|
Property Sources have only a few things they need to provide;
|
|
|
|
hasProperty(self, key)
|
|
Returns true if the current user has that property
|
|
|
|
setProperty(self, key, value)
|
|
Sets a property for the current user
|
|
|
|
|
|
setUserProperty(self, key, username, value)
|
|
Sets a property for the given user.
|
|
|
|
|
|
getProperty(self, key, default=None)
|
|
Returns the requested property or the default for the current user.
|
|
|
|
|
|
getUserProperty(self, key, username, default=None)
|
|
Returns the requested property or the default for the named user.
|
|
|
|
|
|
listProperties(self)
|
|
Returns a list of properties (just the properties not their values).
|
|
|
|
|
|
listUserProperties(self, username)
|
|
Returns a list of properties for the named user.
|
|
|
|
createUser(self, username, REQUEST)
|
|
Creates a new user, and adds in the properties in the REQUEST.
|
|
New properties are preceded with "user_KEYNAME", so strip user_ to
|
|
set the property.
|
|
|
|
deleteUsers(self, userids)
|
|
Delete the list of users (and their properties) contained within userids.
|
|
|
|
updateUser(self, username, REQUEST)
|
|
Change the list of properties for a user, the variables are formatted as for
|
|
createUser.
|