[Zope] LoginManager - how does it work?
ed colmar
ecolmar@uswest.net
Tue, 10 Oct 2000 21:55:31 -0600
Thanks for the help! Still looking for that HOWTO.txt
So, now I have a UserSource Installed into my LoginManager. It is called
"pgcrypt" and is supposed to authenticate to a SQL database. The password
stored in the DB is encryputed using the same scheme. Any ideas why it
doesn't let me in? Is there any way to troubleshoot this? It seems like
there should be a way to tell if it's going to work or not form the
management interface.
Here's what I added to UserSources.py:
class PGCryptUserSource(BasicUserSource):
""" A sql based encrypted user source """
meta_type="PG Crypt User Source"
__plugin_kind__="User Source"
def retrieveItem(self, name):
self.getcustbyusername(username=name)
def rolesForUser(self, user):
name = user.getUserName()
res = self.getcustbyusername(username=name)
fields2index={}
fieldnames=res._schema.items()
for i in range(len(fieldnames)):
fields2index[fieldnames[i][0]]=fieldnames[i][1]
roles=res[0][fields2index['roles']]
return roles
def domainsForUser(self, user):
name = user.getUserName()
res = self.getcustbyusername(username=name)
fields2index={}
fieldnames=res._schema.items()
for i in range(len(fieldnames)):
fields2index[fieldnames[i][0]]=fieldnames[i][1]
domains=res[0][fields2index['domains']]
return domains
def authenticateUser(self, user, password, request):
name = user.getUserName()
res = self.getcustbyusername(username=name)
fields2index={}
fieldnames=res._schema.items()
for i in range(len(fieldnames)):
fields2index[fieldnames[i][0]]=fieldnames[i][1]
passwd=res[0][fields2index['password']]
if crypt.crypt(password,'ab')==passwd:
return 1
else:
return 0
+++++
context.registerPlugInClass(
PGCryptUserSource,
permission = 'Add PGCrypt UserSource',
constructors = defaultConstructors(PGCryptUserSource,globals()),
)