Thanks to Dan Pierson and J.Atwood for pointing me at the GUF/SQL
howto. I've beating my head against LM since. I even looked at
the source code (which might be more useful if I spoke Python...
Anyway, here's what I think I've figured out:
Four methods must be created under a UserSource, whether DTML
method, external, or whatever:
userExists - passed 'username', return 1 if exists.
userAuthenticate - passed 'username', 'password', return
1 if valid user.
userRoles - passed 'username', return user roles in either
space-delimited string, or list.
userDomains - passed 'username', return either a list of
valid domains (example?) or an empty list/string(?)
to leave it wide open.
How is that? Am I even getting close? It's worth noting that I
still haven't been able to get LM working on either of two
installs.
At home I got past userExists and userAuthenticate, but then kept
getting "Forbidden." It appears that I'm not successfully
returning a list of roles back to the UserSource code. (When I
uncomment the stuff to report that from ForbiddenPage, my roles
are empty.) But is it possible that the real problem is the
domains, or something else?
At work, I can't seem to get past the login screen. I've tried
dropping <dtml-raise ...> and python raise all over the damn
place and it appears that program flow is going nowhere near
those four methods or their wrappers in UserSource.py. The
traceback shows:
Traceback (innermost last):
File /usr/local/Zope-2.1.6-src/lib/python/ZPublisher/Publish.py, line 214, in publish_module
File /usr/local/Zope-2.1.6-src/lib/python/ZPublisher/Publish.py, line 179, in publish
File /usr/local/Zope-2.1.6-src/lib/python/Zope/__init__.py, line 202, in zpublisher_exception_hook
(Object: ElementWithAttributes)
File /usr/local/Zope-2.1.6-src/lib/python/ZPublisher/Publish.py, line 151, in publish
File /usr/local/Zope-2.1.6-src/lib/python/ZPublisher/BaseRequest.py, line 446, in traverse
File /usr/local/Zope-2.1.6-src/lib/python/Products/LoginManager/LoginManager.py, line 149, in lm_unauth
(Object: SheetProviderContainer)
File /usr/local/Zope-2.1.6-src/lib/python/OFS/DTMLDocument.py, line 166, in __call__
(Object: loginForm)
File /usr/local/Zope-2.1.6-src/lib/python/DocumentTemplate/DT_String.py, line 502, in __call__
(Object: loginForm)
File /usr/local/Zope-2.1.6-src/lib/python/DocumentTemplate/DT_Raise.py, line 128, in render
(Object: 'LoginRequired')
LoginRequired: (see above)
Clue anyone?
TIA,
Charlie
> -----Original Message-----
> From: Dan L. Pierson [mailto:[EMAIL PROTECTED]]
>
> Wilkinson Charlie E writes:
> > 1. Can LoginManager be (easily?) made to meet my specific need?
>
> Probably, it includes a GenericUserSource, which is essentially a
> clone of Generic User Folder (see below).
>
> > 2. Has anyone done an SQL UserSource yet, or can anyone
> > give me a clue how to make one?
>
> You should look at Generic User Folder, and the HowTo that
> tell how to
> set it up with Postgressql. Basically, you need to create a
> number of
> SQLMethods to query your database and some wrappers for these
> methods. The SQLMethods are the only thing that has to care
> about the
> details of your database format.
>