Merge pull request #2066 from Ron-RONZZ-org/feature/admin-trusted-header-auth

Admin panel: accept trusted proxy-auth header (X-NC-Admin) on the admin host
This commit is contained in:
Maarten 2026-10-22 13:37:52 +02:00 • committed by GitHub
commit cf185b9ab5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -14,6 +14,15 @@ trait Admin
public function IsAdminLoggined(bool $bThrowExceptionOnFalse = true) : bool public function IsAdminLoggined(bool $bThrowExceptionOnFalse = true) : bool
{ {
if ($this->Config()->Get('security', 'allow_admin_panel', true)) { if ($this->Config()->Get('security', 'allow_admin_panel', true)) {
// [PATCH ronzz.org] OIDC bridge: nginx auth_request (webmail-admin.ronzz.org)
// sets X-NC-Admin after validating the Nextcloud session. Honored only on the
// dedicated admin host (admin_panel.host); the header is stripped/overridden
// at nginx for any other path.
if (!empty($_SERVER['HTTP_X_NC_ADMIN'])
&& \strtolower((string) $this->Config()->Get('admin_panel', 'host', '')) === \strtolower($this->Http()->GetHost()))
{
return true;
}
$sAdminKey = $this->getAdminAuthKey(); $sAdminKey = $this->getAdminAuthKey();
if ($sAdminKey && $this->Cacher(null, true)->Get(KeyPathHelper::SessionAdminKey($sAdminKey))) { if ($sAdminKey && $this->Cacher(null, true)->Get(KeyPathHelper::SessionAdminKey($sAdminKey))) {
return true; return true;