core/source/overwrites/auths/basic.php
2025-09-21 13:27:37 +02:00

75 lines
1.2 KiB
PHP

<?php
namespace davina\overwrites;
require_once('vendor/autoload.php');
require_once(DIR_LOGIC . '/base.php');
require_once(DIR_LOGIC . '/sources/_interface.php');
/**
*/
class class_auth_backend_basic
extends \Sabre\DAV\Auth\Backend\AbstractBasic
implements \Sabre\DAV\Auth\Backend\BackendInterface
{
/**
* @var array {list<\davina\sources\interface_source>}
*/
private array $sources;
/**
*/
public function __construct(
array $sources
)
{
// parent::__construct();
$this->sources = $sources;
$this->setRealm('davina');
}
/**
*/
protected function validateUserPass(
/*string */$identifier,
/*string */$password
)/* : bool*/
{
$parts = \explode('-', $identifier, 2);
$source_name = $parts[0];
$username = (
(\count($parts) >= 2)
?
$parts[1]
:
$source_name
);
$parameters = [
'username' => $username,
'password' => $password,
];
if (! \array_key_exists($source_name, $this->sources))
{
return false;
}
else
{
$source = $this->sources[$source_name];
/**
* @todo check for security
*/
\davina\set_parameters($parameters);
$data = $source->read(/*$parameters*/[]);
return ($data !== null);
}
}
}
?>