Open Bug 670305 Opened 13 years ago Updated 11 years ago

Use Module::Pluggable to get authentication methods (instead of hardcoded lists)

Categories

(Bugzilla :: Administration, task, P3)

4.1.2

Tracking

()

People

(Reporter: LpSolit, Unassigned)

Details

Currently, Bugzilla::Config::Auth uses hardcoded lists for user_info_class and user_verify_class:

   name => 'user_info_class',
   choices => [ 'CGI', 'Env', 'Env,CGI' ],

   name => 'user_verify_class',
   choices => [ 'DB', 'RADIUS', 'LDAP' ],

This means that if you add new authentication methods to the Bugzilla/Auth/Login/ and Bugzilla/Auth/Verify/ directories, then these lists must be updated manually. To avoid this problem, and to reflect what is really available, we should use Module::Pluggable (a module which is included in the core distribution of Perl) in Bugzilla::Auth::Login and Bugzilla::Auth::Verify.

For instance, Bugzilla::Auth::Login would have the following line:

  use Module::Pluggable search_path => 'Bugzilla::Auth::Login',
                        except      => 'Bugzilla::Auth::Login::Stack';

And Bugzilla::Config::Auth would simply have this single call to get the list of available methods:

  my @methods = Bugzilla::Auth::Login->new()->plugins;
Ah, except that some orders of modules in user_info_class are forbidden, so we'd also have to take that into account. (For example CGI,Env.) We could add some parameters like must_come_before to the Login modules, though--I imagine that would solve it.
Priority: -- → P3
You need to log in before you can comment on or make changes to this bug.