mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-31 07:44:38 -04:00
Handle base64 encoded passwords
This commit is contained in:
parent
856e3b846b
commit
bcc286e537
@ -16,6 +16,7 @@ use App\DataMapper\Analytics\LoginSuccess;
|
|||||||
use App\Events\User\UserLoggedIn;
|
use App\Events\User\UserLoggedIn;
|
||||||
use App\Http\Controllers\BaseController;
|
use App\Http\Controllers\BaseController;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\Login\LoginRequest;
|
||||||
use App\Jobs\Account\CreateAccount;
|
use App\Jobs\Account\CreateAccount;
|
||||||
use App\Jobs\Company\CreateCompanyToken;
|
use App\Jobs\Company\CreateCompanyToken;
|
||||||
use App\Jobs\Util\SystemLogger;
|
use App\Jobs\Util\SystemLogger;
|
||||||
@ -156,7 +157,7 @@ class LoginController extends BaseController
|
|||||||
* ),
|
* ),
|
||||||
* )
|
* )
|
||||||
*/
|
*/
|
||||||
public function apiLogin(Request $request)
|
public function apiLogin(LoginRequest $request)
|
||||||
{
|
{
|
||||||
$this->forced_includes = ['company_users'];
|
$this->forced_includes = ['company_users'];
|
||||||
|
|
||||||
|
@ -44,6 +44,12 @@ class PasswordProtection
|
|||||||
else
|
else
|
||||||
$timeout = $timeout/1000;
|
$timeout = $timeout/1000;
|
||||||
|
|
||||||
|
//test if password if base64 encoded
|
||||||
|
$x_api_password = $request->header('X-API-PASSWORD');
|
||||||
|
|
||||||
|
if(base64_decode(base64_encode($x_api_password)) === $x_api_password)
|
||||||
|
$x_api_password = base64_decode($x_api_password);
|
||||||
|
|
||||||
if (Cache::get(auth()->user()->hashed_id.'_'.auth()->user()->account_id.'_logged_in')) {
|
if (Cache::get(auth()->user()->hashed_id.'_'.auth()->user()->account_id.'_logged_in')) {
|
||||||
|
|
||||||
Cache::put(auth()->user()->hashed_id.'_'.auth()->user()->account_id.'_logged_in', Str::random(64), $timeout);
|
Cache::put(auth()->user()->hashed_id.'_'.auth()->user()->account_id.'_logged_in', Str::random(64), $timeout);
|
||||||
@ -66,7 +72,7 @@ class PasswordProtection
|
|||||||
];
|
];
|
||||||
|
|
||||||
//If OAuth and user also has a password set - check both
|
//If OAuth and user also has a password set - check both
|
||||||
if ($existing_user = MultiDB::hasUser($query) && auth()->user()->company()->oauth_password_required && auth()->user()->has_password && Hash::check(auth()->user()->password, $request->header('X-API-PASSWORD'))) {
|
if ($existing_user = MultiDB::hasUser($query) && auth()->user()->company()->oauth_password_required && auth()->user()->has_password && Hash::check(auth()->user()->password, $x_api_password)) {
|
||||||
|
|
||||||
nlog("existing user with password");
|
nlog("existing user with password");
|
||||||
|
|
||||||
@ -86,7 +92,7 @@ class PasswordProtection
|
|||||||
return response()->json($error, 412);
|
return response()->json($error, 412);
|
||||||
|
|
||||||
|
|
||||||
}elseif ($request->header('X-API-PASSWORD') && Hash::check($request->header('X-API-PASSWORD'), auth()->user()->password)) {
|
}elseif ($x_api_password && Hash::check($x_api_password, auth()->user()->password)) {
|
||||||
|
|
||||||
Cache::put(auth()->user()->hashed_id.'_'.auth()->user()->account_id.'_logged_in', Str::random(64), $timeout);
|
Cache::put(auth()->user()->hashed_id.'_'.auth()->user()->account_id.'_logged_in', Str::random(64), $timeout);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user