aboutsummaryrefslogtreecommitdiffhomepage
path: root/routes
diff options
context:
space:
mode:
Diffstat (limited to 'routes')
-rw-r--r--routes/actor.php9
-rw-r--r--routes/admin.php1
-rw-r--r--routes/interaction.php5
-rw-r--r--routes/note.php4
4 files changed, 18 insertions, 1 deletions
diff --git a/routes/actor.php b/routes/actor.php
index c228f45..b768413 100644
--- a/routes/actor.php
+++ b/routes/actor.php
@@ -1,21 +1,26 @@
<?php
use Digitigrade\HttpResponseStatus\NotFound;
+use Digitigrade\HttpResponseStatus\PolicyRejected;
use Digitigrade\HttpResponseStatus\TemporaryRedirect;
use Digitigrade\HttpResponseStatus\Unauthorized;
use Digitigrade\Model\Actor;
+use Digitigrade\Model\Instance;
use Digitigrade\Model\Note;
use Digitigrade\Model\NotePrivacyScope;
+use Digitigrade\PolicyManager;
use Digitigrade\Router;
Router::getInstance()->mount('/actor/:id', function (array $args) {
$actor = Actor::find($args['id']);
+ $instance = Instance::findByRequestHeaders();
if ($actor == null || $actor->deleted) {
throw new NotFound("i don't know that actor");
}
if (!$actor->isLocal) {
throw new NotFound("that actor is not local!");
}
+ PolicyManager::getInstance()->checkFederationOrThrow($actor, $instance);
if (isset($_SERVER['HTTP_ACCEPT']) && str_contains($_SERVER['HTTP_ACCEPT'], 'text/html')) {
throw new TemporaryRedirect("/@/$actor->handle");
}
@@ -24,6 +29,8 @@ Router::getInstance()->mount('/actor/:id', function (array $args) {
Router::getInstance()->mount('/actor/:id/basicFeed', function (array $args) {
$actor = Actor::find($args['id']);
+ $instance = Instance::findByRequestHeaders();
+ PolicyManager::getInstance()->checkFederationOrThrow($actor, $instance);
$page = +($_GET['page'] ?? 1);
$pageSize = 100;
$notes = array_filter(
@@ -47,6 +54,8 @@ Router::getInstance()->mount('/actor/:id/basicFeed', function (array $args) {
Router::getInstance()->mount('/actor/:id/fullFeed', function (array $args) {
$actor = Actor::find($args['id']);
+ $instance = Instance::findByRequestHeaders();
+ PolicyManager::getInstance()->checkFederationOrThrow($actor, $instance);
$page = +($_GET['page'] ?? 1);
$pageSize = 10;
$notes = array_filter(
diff --git a/routes/admin.php b/routes/admin.php
index 9915fde..c89f3d5 100644
--- a/routes/admin.php
+++ b/routes/admin.php
@@ -18,7 +18,6 @@ Router::getInstance()->mount('/fragment/admin/settings/:prefix', function (array
foreach ($_POST as $key => $value) {
// same workaround as in settings_field
$key = str_replace('<DOT>', '.', $key);
- error_log("setting '$key' to '$value'");
$settings->set($key, $value);
}
$saved = true;
diff --git a/routes/interaction.php b/routes/interaction.php
index 53bc193..5768fe1 100644
--- a/routes/interaction.php
+++ b/routes/interaction.php
@@ -1,16 +1,21 @@
<?php
use Digitigrade\HttpResponseStatus\NotFound;
+use Digitigrade\HttpResponseStatus\PolicyRejected;
+use Digitigrade\Model\Instance;
use Digitigrade\Model\Interaction;
+use Digitigrade\PolicyManager;
use Digitigrade\Router;
Router::getInstance()->mount('/interaction/:id', function (array $args) {
$interaction = Interaction::find($args['id']);
+ $instance = Instance::findByRequestHeaders();
if ($interaction == null || $interaction->deleted) {
throw new NotFound("i don't know that interaction");
}
if (!$interaction->author->isLocal) {
throw new NotFound("i don't want to tell you about non-local interactions!");
}
+ PolicyManager::getInstance()->checkFederationOrThrow($interaction, $instance);
json_response($interaction);
}); \ No newline at end of file
diff --git a/routes/note.php b/routes/note.php
index 90009d2..2612f0f 100644
--- a/routes/note.php
+++ b/routes/note.php
@@ -2,21 +2,25 @@
use Digitigrade\HttpResponseStatus\Forbidden;
use Digitigrade\HttpResponseStatus\NotFound;
+use Digitigrade\HttpResponseStatus\PolicyRejected;
use Digitigrade\HttpResponseStatus\TemporaryRedirect;
use Digitigrade\Model\Instance;
use Digitigrade\Model\Note;
use Digitigrade\Model\NotePrivacyScope;
use Digitigrade\Model\UserAccount;
+use Digitigrade\PolicyManager;
use Digitigrade\Router;
Router::getInstance()->mount('/note/:id', function (array $args) {
$note = Note::find($args['id']);
+ $instance = Instance::findByRequestHeaders();
if ($note == null || $note->deleted) {
throw new NotFound("i don't know that note");
}
if (!$note->author->isLocal) {
throw new NotFound("i don't want to tell you about non local notes sorry");
}
+ PolicyManager::getInstance()->checkFederationOrThrow($note, $instance);
if (isset($_SERVER['HTTP_ACCEPT']) && str_contains($_SERVER['HTTP_ACCEPT'], 'text/html')) {
throw new TemporaryRedirect('/@/' . $note->author->handle . "/note/$note->id");
}