On May 8, 2012, at 11:42 AM, Matt Simerson wrote: > On May 8, 2012, at 10:29 AM, Matt Simerson wrote: > >> On May 8, 2012, at 9:39 AM, Steve Kemp wrote: >> >>> [FWIW I'd agree moving the code to a central location is good, moving it >>> into ::Plugin is a bad plan.] >> >> I didn't like putting in Qpsmtpd::Plugin either. Especially not since >> Qpsmtpd::Plugin is declared and behaves differently in the test suites, >> which necessitated putting the code in there too. >> >> How about Qpsmtpd::Plugin::auth? >> >> That namespace is already the parent of the auth plugins. > > I just stumbled across an existing class that someone, who shall remain > nameless, just refactored and added tests for. It's surprising relevant > because it's named Qpsmtpd::Auth. > > It seems like a reasonable place for this. Thoughts?
The more I think about it, Qpsmtpd::Auth seems like the best place. The Qpsmtpd::Auth plugin could also cache the login credentials and CRAM-MD5 ticket, so those are no longer required as arguments to validate_password. I can't think of a reason not to cache the auth info in the Qpsmtpd::Auth class. Plugins that want to normalize that data in any way can do so and pass them in. Most will just use the cached values. Thoughts? Matt