X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FSecurity%2FBasicAuth.php;h=7b6a6b082502d982e0827141434a7c31df437b84;hb=0165811f09260a61af6dd947015be40df52d7b67;hp=b76073e8b328f1dbccf2388d6e16fe8e01958551;hpb=5e36d1073058146b30bd5871e40a50f39cd0d27f;p=friendica.git diff --git a/src/Security/BasicAuth.php b/src/Security/BasicAuth.php index b76073e8b3..7b6a6b0825 100644 --- a/src/Security/BasicAuth.php +++ b/src/Security/BasicAuth.php @@ -62,6 +62,11 @@ class BasicAuth return (int)self::$current_user_id; } + public static function setCurrentUserID(int $uid = null) + { + self::$current_user_id = $uid; + } + /** * Fetch a dummy application token * @@ -73,9 +78,9 @@ class BasicAuth return []; } - if (!empty(self::$current_token)) { - return self::$current_token; - } + //if (!empty(self::$current_token)) { + // return self::$current_token; + //} $source = $_REQUEST['source'] ?? ''; @@ -118,13 +123,12 @@ class BasicAuth private static function getUserIdByAuth(bool $do_login = true):int { $a = DI::app(); - Session::set('allow_api', false); self::$current_user_id = 0; // workaround for HTTP-auth in CGI mode if (!empty($_SERVER['REDIRECT_REMOTE_USER'])) { $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)); - if (strlen($userpass)) { + if (!empty($userpass) && strpos($userpass, ':')) { list($name, $password) = explode(':', $userpass); $_SERVER['PHP_AUTH_USER'] = $name; $_SERVER['PHP_AUTH_PW'] = $password; @@ -173,7 +177,10 @@ class BasicAuth return 0; } Logger::debug('Access denied', ['parameters' => $_SERVER]); - header('WWW-Authenticate: Basic realm="Friendica"'); + // Checking for commandline for the tests, we have to avoid to send a header + if (php_sapi_name() !== 'cli') { + header('WWW-Authenticate: Basic realm="Friendica"'); + } throw new UnauthorizedException("This API requires login"); } @@ -182,15 +189,10 @@ class BasicAuth DI::auth()->setForUser($a, $record, false, false, $login_refresh); - Session::set('allow_api', true); + Hook::callAll('logged_in', $record); - Hook::callAll('logged_in', $a->user); + self::$current_user_id = local_user(); - if (Session::get('allow_api')) { - self::$current_user_id = local_user(); - } else { - self::$current_user_id = 0; - } return self::$current_user_id; } }