[jifty-devel] [ANNOUNCE] Jifty::Plugin::Login

John Peacock jpeacock at rowman.com
Sat Jun 17 22:33:58 EDT 2006


I've got a working collection of files which implement most features needed to
login to a Jifty app (login, logout, signup, confirm account).  I have not
implemented more advanced features like:

- Forgot my password
- Change my password
- automatically add login/logout to the menu choices (if desired)
- Use a custom User class with different fields (e.g. a User class tied to a
Person class, where the former contains only those bits to get logged in and the
latter contains FullName and other demographic data)

This is based primarily on the login/logout functionality in Wifty (FWIW).  I
think this shouldn't be put on CPAN as is until the design questions below are
dealt with.  Whether this eventually gets absorbed by the Jifty distro is up to
the core developers (I have no problem keeping it on it's own, if that is better
for everyone involved).

There are a number of hard-coded things I'm not entirely happy with as a design:

1. The application must currently provide stub $app::CurrentUser and
$app::Model::User classes (which can just inherit from the base Login classes);

2. The string "Jifty::Plugin::Login" is used far too much (we need to think
about a way to check plugin classes along with application classes, much like we
autocreate Action and Model classes already);

3. The included web templates are too tightly coupled to the class (again,
hardcoded classnames are used because the automatic resolution doesn't see the
plugin classes, too).

The design question basically becomes:

If an application requests a plugin, do we insert a search for plugin classes
before or after the application classes (and the existing ClassLoader
fallbacks).  I think the answer has to be after (since then the application can
more easily override the inheritance without doing fancy 'before plugin X'
handling).  If ClassLoader could have another hook for plugins to insert their
own classes into INC...hmmm...I can call ClassLoader->new() with the plugin base
class and provide my own hooks...

I'll try and write some POD before I package up the module for anyone to look at...

John

-- 
John Peacock
Director of Information Research and Technology
Rowman & Littlefield Publishing Group
4720 Boston Way
Lanham, MD 20706
301-459-3366 x.5010
fax 301-429-5747


More information about the jifty-devel mailing list