FW: [Zope3-Users] Generating loginForm with formlib

Florian Lindner mailinglists at xgm.de
Fri Apr 21 09:03:47 EDT 2006


Am Donnerstag, 20. April 2006 23:50 schrieb Tom Dossis:
> >> I want to generate a login form for the PAU session credentials plugin.
> >> The plugin expects a form that have a login and a password field.
> >>
> >> I've created a interface:
> >>
> >> class ILoginForm(Interface):
> >>     """For generating the login form."""
> >>
> >>     login = TextLine(title=u"Username",
> >>                     required=True)
> >>
> >>     password = Password(title=u"Password",
> >>                     required=True)
> >>
> >> but formlib generates the two fields with name="form.login" therefore
> >> the session credentials plugin is able to extract the credentials.
> >>
> >> How can I use formlib to generate a login form?
> >>
> >> Thanks,
> >>
> >> Florian
> >
> > Hi Florian,
> > the simplest thing to do (or what i ended up doing) was creating a
> > credentialsPlugin that provided similar functionality to the standard
> > session credentials plugin, but where the standard session credentials
> > plugin's extractCredentials method expects to pull 'login' and
> > 'password' out of request.get(), you just pull
> > request.get('form.login') or something similar.  just return the
> > credentials dict back out to the principal folder (or whatever
> > authenticator you're using) authenticateCredentials method with a dict
> > of the form {'login': credentials.getLogin(), 'password':
> > credentials.getPassword() } where credentials is a SessionCredentials
> > object created from your request.get('form.login') and
> > request.get('form.password').
> >
> > look at zope.app.authentication.session's design pattern for more.
>
> I reckon the following *should* work, but it doesn't:
>
>    from zope.formlib import form
>
>    class MyLoginForm(form.Form):
>      prefix=''
>      form_fields=form.Fields(ILoginForm)
>      ...
>
> The problem is the generated form names are '.login' and '.password'.
>
> IMHO if there's no form/widget prefix, I can't see why there should be a
> leading '.' character.
>
> In the end I patched zope.app.form.Widget.setPrefix() to do what I
> expected.

That should not be necessary anymore. I habe just modified the session 
credentials plugin on the trunk (revision 67211). It will also be included in 
the next release of Zope3.

Log message for revision 67211:
  Change the session credentials plugin to make it configurable in which form 
fields it looks for the credentials.

Regards,

Florian


More information about the Zope3-users mailing list