Files
nextcloud-app-api/lib/AppAPIAuthBackend.php
Andy Scherzinger c5f3d6a764 docs(reuse): Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-18 08:40:54 +01:00

43 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AppAPI;
use OCA\DAV\Connector\Sabre\Auth;
use OCP\IRequest;
use OCP\ISession;
use Sabre\DAV\Auth\Backend\BackendInterface;
use Sabre\HTTP\RequestInterface;
use Sabre\HTTP\ResponseInterface;
class AppAPIAuthBackend implements BackendInterface {
public function __construct(
private IRequest $request,
private ISession $session,
) {
}
public function check(RequestInterface $request, ResponseInterface $response): array {
if ($this->request->getHeader('AUTHORIZATION-APP-API')) {
$davAuthenticated = $this->session->get(Auth::DAV_AUTHENTICATED);
$userIdHeader = explode(':', base64_decode($this->request->getHeader('AUTHORIZATION-APP-API')), 2)[0];
$sessionUserId = $this->session->get('user_id');
if ($sessionUserId === $userIdHeader && $davAuthenticated === $sessionUserId) {
$authString = 'principals/users/' . $this->session->get('user_id');
return [true, $authString];
}
}
return [false, 'AppAPIAuth has not passed'];
}
public function challenge(RequestInterface $request, ResponseInterface $response) {
}
}