[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()),
    )