X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FAuthCookieHandler.pm;h=93d8ea6a56288f8dd4eff82c6ab7e1a66868258d;hp=cd89f55afc1239bed58e338c427ccf68315165b2;hb=HEAD;hpb=92a3df0360d3df6b6ace99fee3d4cc443e6154d0 diff --git a/FS/FS/AuthCookieHandler.pm b/FS/FS/AuthCookieHandler.pm index cd89f55af..b7d0dbf5b 100644 --- a/FS/FS/AuthCookieHandler.pm +++ b/FS/FS/AuthCookieHandler.pm @@ -6,29 +6,34 @@ use FS::UID qw( adminsuidsetup preuser_setup ); use FS::CurrentUser; use FS::Auth; +#Apache 2.2 and below +sub useragent_ip { + my( $self, $r ) = @_; + $r->connection->remote_ip; +} + sub authen_cred { - my( $self, $r, $username, $password ) = @_; + my( $self, $r, $username, $password, $totp_code ) = @_; preuser_setup(); - unless ( _is_valid_user($username, $password) ) { - warn "failed auth $username from ". $r->connection->remote_ip. "\n"; + my $info = {}; + + unless ( FS::Auth->authenticate($username, $password, $totp_code, $info) ) { + warn "failed auth $username from ". $self->useragent_ip($r). "\n"; return undef; } - warn "authenticated $username from ". $r->connection->remote_ip. "\n"; + warn "authenticated $username from ". $self->useragent_ip($r). "\n"; - FS::CurrentUser->load_user($username); + FS::CurrentUser->load_user( $username, + 'autocreate' => FS::Auth->auth_class->autocreate, + %$info, + ); FS::CurrentUser->new_session; } -sub _is_valid_user { - my( $username, $password ) = @_; - - FS::Auth->authenticate($username, $password); -} - sub authen_ses_key { my( $self, $r, $sessionkey ) = @_; @@ -37,7 +42,7 @@ 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; }