aboutsummaryrefslogtreecommitdiff
path: root/lib/AuthenticationMiddleware.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/AuthenticationMiddleware.php')
-rw-r--r--lib/AuthenticationMiddleware.php42
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/AuthenticationMiddleware.php b/lib/AuthenticationMiddleware.php
new file mode 100644
index 00000000..430f977c
--- /dev/null
+++ b/lib/AuthenticationMiddleware.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * This file is part of RSS-Bridge, a PHP project capable of generating RSS and
+ * Atom feeds for websites that don't have one.
+ *
+ * For the full license information, please view the UNLICENSE file distributed
+ * with this source code.
+ *
+ * @package Core
+ * @license http://unlicense.org/ UNLICENSE
+ * @link https://github.com/rss-bridge/rss-bridge
+ */
+
+final class AuthenticationMiddleware
+{
+ public function __invoke(): void
+ {
+ $user = $_SERVER['PHP_AUTH_USER'] ?? null;
+ $password = $_SERVER['PHP_AUTH_PW'] ?? null;
+
+ if ($user === null || $password === null) {
+ $this->renderAuthenticationDialog();
+ exit;
+ }
+ if (
+ Configuration::getConfig('authentication', 'username') === $user
+ && Configuration::getConfig('authentication', 'password') === $password
+ ) {
+ return;
+ }
+ $this->renderAuthenticationDialog();
+ exit;
+ }
+
+ private function renderAuthenticationDialog(): void
+ {
+ http_response_code(401);
+ header('WWW-Authenticate: Basic realm="RSS-Bridge"');
+ print render('error.html.php', ['message' => 'Please authenticate in order to access this instance !']);
+ }
+}