[mod] auth logic
This commit is contained in:
parent
855b1c398b
commit
19cce2c90d
32
source/base.php
Normal file
32
source/base.php
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
namespace davigil;
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
class _state
|
||||
{
|
||||
public static $parameters = null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
function set_parameters(
|
||||
$parameters
|
||||
) : void
|
||||
{
|
||||
_state::$parameters = $parameters;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
function get_parameters(
|
||||
)
|
||||
{
|
||||
return _state::$parameters;
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -3,6 +3,7 @@
|
|||
namespace davigil;
|
||||
|
||||
require_once('vendor/autoload.php');
|
||||
require_once('base.php');
|
||||
require_once('overwrites/principal_backend.php');
|
||||
require_once('overwrites/auths/_factory.php');
|
||||
require_once('overwrites/caldav_backend.php');
|
||||
|
|
@ -15,6 +16,8 @@ function main(
|
|||
{
|
||||
\davigil\conf\load('conf.json');
|
||||
|
||||
\davigil\set_parameters([]);
|
||||
|
||||
\date_default_timezone_set(\davigil\conf\get()->settings->timezone);
|
||||
|
||||
$source = \davigil\sources\make(
|
||||
|
|
@ -49,7 +52,7 @@ function main(
|
|||
/**
|
||||
* this somehow breaks authentication, but seems to be required for calendar discovery
|
||||
*/
|
||||
$server->addPlugin(new \Sabre\DAVACL\Plugin());
|
||||
// $server->addPlugin(new \Sabre\DAVACL\Plugin());
|
||||
$server->addPlugin(new \Sabre\CalDAV\Plugin());
|
||||
$server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin());
|
||||
$server->addPlugin(new \Sabre\CalDAV\Schedule\Plugin());
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace davigil\overwrites;
|
||||
|
||||
require_once('vendor/autoload.php');
|
||||
require_once('base.php');
|
||||
require_once('sources/_interface.php');
|
||||
|
||||
|
||||
|
|
@ -37,12 +38,15 @@ class class_auth_backend_basic
|
|||
/*string */$password
|
||||
)/* : bool*/
|
||||
{
|
||||
$data = $this->source->get(
|
||||
[
|
||||
$parameters = [
|
||||
'username' => $username,
|
||||
'password' => $password,
|
||||
]
|
||||
);
|
||||
];
|
||||
/**
|
||||
* @todo check for security
|
||||
*/
|
||||
\davigil\set_parameters($parameters);
|
||||
$data = $this->source->get(/*$parameters*/[]);
|
||||
return ($data !== null);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -227,24 +227,24 @@ class class_caldav_backend
|
|||
)
|
||||
{
|
||||
$id = $objectUri;
|
||||
$data = $this->source->get([]);
|
||||
$entries = \array_values(
|
||||
$calendar = $this->source->get([]);
|
||||
$events = \array_values(
|
||||
\array_filter(
|
||||
$data,
|
||||
fn($entry) => ($entry->id === $id)
|
||||
$calendar->events,
|
||||
fn($event) => ($event->id === $id)
|
||||
)
|
||||
);
|
||||
if (\count($entries) < 1)
|
||||
if (\count($events) < 1)
|
||||
{
|
||||
throw (new \Exception(\sprintf('not found: %s', $objectUri)));
|
||||
}
|
||||
else if (\count($entries) > 1)
|
||||
else if (\count($events) > 1)
|
||||
{
|
||||
throw (new \Exception(\sprintf('ambiguous: %s', $objectUri)));
|
||||
}
|
||||
else
|
||||
{
|
||||
$vcalendar = $this->events_to_vcalendar($entries);
|
||||
$vcalendar = $this->events_to_vcalendar($events);
|
||||
$ics = \davigil\helpers\ics\vcalendar_encode($vcalendar);
|
||||
return [
|
||||
'calendardata' => $ics,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ require_once('helpers/string.php');
|
|||
require_once('helpers/cache.php');
|
||||
require_once('helpers/pit.php');
|
||||
require_once('helpers/ics.php');
|
||||
require_once('base.php');
|
||||
require_once('model.php');
|
||||
|
||||
|
||||
|
|
@ -17,7 +18,7 @@ class class_source_ics_feed
|
|||
|
||||
/**
|
||||
*/
|
||||
private string $url;
|
||||
private string $url_template;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -33,12 +34,12 @@ class class_source_ics_feed
|
|||
/**
|
||||
*/
|
||||
public function __construct(
|
||||
string $url,
|
||||
string $url_template,
|
||||
?int $lifetime,
|
||||
bool $combine
|
||||
)
|
||||
{
|
||||
$this->url = $url;
|
||||
$this->url_template = $url_template;
|
||||
$this->lifetime = $lifetime;
|
||||
$this->combine = $combine;
|
||||
$this->cache_file = \davigil\helpers\call\convey(
|
||||
|
|
@ -59,6 +60,19 @@ class class_source_ics_feed
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
private function url(
|
||||
$parameters
|
||||
) : string
|
||||
{
|
||||
return \davigil\helpers\string_\coin(
|
||||
$this->url_template,
|
||||
$parameters
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
private function vcalendar_to_calendar(
|
||||
|
|
@ -122,12 +136,13 @@ class class_source_ics_feed
|
|||
/**
|
||||
*/
|
||||
private function retrieve(
|
||||
string $url
|
||||
)
|
||||
{
|
||||
$client = new \Sabre\HTTP\Client();
|
||||
$request = new \Sabre\HTTP\Request(
|
||||
'GET',
|
||||
$this->url,
|
||||
$url,
|
||||
[],
|
||||
null
|
||||
);
|
||||
|
|
@ -167,8 +182,11 @@ class class_source_ics_feed
|
|||
array $parameters
|
||||
) : \davigil\model\struct_calendar
|
||||
{
|
||||
$key = $this->url;
|
||||
$f1 = fn() => $this->retrieve();
|
||||
$url = $this->url(\davigil\get_parameters());
|
||||
$key = $url;
|
||||
$f1 = fn() => $this->retrieve(
|
||||
$url
|
||||
);
|
||||
$f2 = fn() => \davigil\helpers\cache\get(
|
||||
$this->cache_file,
|
||||
$key,
|
||||
|
|
|
|||
Loading…
Reference in a new issue