X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FAuthCookieHandler.pm;h=93d8ea6a56288f8dd4eff82c6ab7e1a66868258d;hp=a8ee37079aa10fe3d73688c1b5c3128d34166fef;hb=HEAD;hpb=e62544064299324ab04abae64cc33afef12a24aa diff --git a/FS/FS/AuthCookieHandler.pm b/FS/FS/AuthCookieHandler.pm index a8ee37079..b7d0dbf5b 100644 --- a/FS/FS/AuthCookieHandler.pm +++ b/FS/FS/AuthCookieHandler.pm @@ -4,34 +4,34 @@ use base qw( Apache2::AuthCookie ); use strict; use FS::UID qw( adminsuidsetup preuser_setup ); use FS::CurrentUser; +use FS::Auth; -my $module = 'legacy'; #XXX i am set in a conf somehow? or a config file +#Apache 2.2 and below +sub useragent_ip { + my( $self, $r ) = @_; + $r->connection->remote_ip; +} sub authen_cred { - my( $self, $r, $username, $password ) = @_; - - unless ( _is_valid_user($username, $password) ) { - warn "failed auth $username from ". $r->connection->remote_ip. "\n"; - return undef; - } - - warn "authenticated $username from ". $r->connection->remote_ip. "\n"; - adminsuidsetup($username); + my( $self, $r, $username, $password, $totp_code ) = @_; - FS::CurrentUser->new_session; + preuser_setup(); -} + my $info = {}; -sub _is_valid_user { - my( $username, $password ) = @_; - my $class = 'FS::Auth::'.$module; + unless ( FS::Auth->authenticate($username, $password, $totp_code, $info) ) { + warn "failed auth $username from ". $self->useragent_ip($r). "\n"; + return undef; + } - #earlier? - eval "use $class;"; - die $@ if $@; + warn "authenticated $username from ". $self->useragent_ip($r). "\n"; - $class->authenticate($username, $password); + FS::CurrentUser->load_user( $username, + 'autocreate' => FS::Auth->auth_class->autocreate, + %$info, + ); + FS::CurrentUser->new_session; } sub authen_ses_key { @@ -42,12 +42,11 @@ sub authen_ses_key { my $curuser = FS::CurrentUser->load_user_session( $sessionkey ); unless ( $curuser ) { - warn "bad session $sessionkey from ". $r->connection->remote_ip. "\n"; + warn "bad session $sessionkey from ". $self->useragent_ip($r). "\n"; return undef; } $curuser->username; - } 1;