From 199450cf528a5ac6b4fe739c38f9adf99a913712 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Tue, 7 May 2013 23:55:36 -0700 Subject: [PATCH] NG auth: internal db auth, RT#21563 --- FS/FS/Auth/internal.pm | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/FS/FS/Auth/internal.pm b/FS/FS/Auth/internal.pm index 86fddd237..5d9170e23 100644 --- a/FS/FS/Auth/internal.pm +++ b/FS/FS/Auth/internal.pm @@ -2,14 +2,44 @@ package FS::Auth::internal; #use base qw( FS::Auth ); use strict; +use Crypt::Eksblowfish::Bcrypt qw(bcrypt_hash); +use FS::Record qw( qsearchs ); +use FS::access_user; sub authenticate { - my( $username, $check_password ) = @_; + my($self, $username, $check_password ) = @_; + my $access_user = qsearchs('access_user', { 'username' => $username, + 'disabled' => '', + } + ) + or return 0; -} + if ( $access_user->_password_encoding eq 'bcrypt' ) { + + my( $cost, $salt, $hash ) = split(',', $access_user->_password); + + my $check_hash = bcrypt_hash( { key_nul => 1, + cost => $cost, + salt => $salt, + }, + $check_password + ); + + $hash eq $check_hash; + + } else { + + return 0 if $access_user->_password eq 'notyet' + || $access_user->_password eq ''; + + $access_user->_password eq $check_password; + + } -sub change_password { } +#sub change_password { +#} + 1; -- 2.11.0