어디야 관리자 확인 브리지 추가

This commit is contained in:
seo committed 2026-09-05 19:34:13 +09:00
1 parent acf6cbe530
commit 62d25a286b
2 files changed
+34 -1

No files matched your search

+31
View File
@@ -140,6 +140,37 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
if (isset($_GET['adminBridge'])) {
$audience = launcher_admin_ticket_audience((string)($_GET['adminBridge'] ?? ''));
$returnUrl = trim((string)($_GET['return'] ?? ''));
$returnParts = parse_url($returnUrl);
$validReturn = $audience !== ''
&& is_array($returnParts)
&& strtolower((string)($returnParts['scheme'] ?? '')) === 'https'
&& strtolower((string)($returnParts['host'] ?? '')) === 'eodiya.net'
&& !isset($returnParts['port'])
&& !isset($returnParts['user'])
&& !isset($returnParts['pass'])
&& !isset($returnParts['fragment']);
if (!$validReturn) {
custom_json(['error' => 'invalid_admin_bridge_return'], 400);
}
$isAdmin = custom_is_site_admin();
if ($isAdmin) {
custom_issue_auth_cookie(true);
}
$fragment = [
'rhymixAdmin' => $isAdmin ? '1' : '0',
];
if ($isAdmin) {
$fragment['rhymixAdminTicket'] = launcher_issue_admin_ticket($audience);
$fragment['rhymixAdminTicketExpiresIn'] = '300';
}
header('Location: ' . $returnUrl . '#' . http_build_query($fragment, '', '&', PHP_QUERY_RFC3986), true, 303);
exit;
}
if (isset($_GET['validateAdminTicket'])) {
$audience = launcher_admin_ticket_audience((string)($_GET['aud'] ?? ''));
$ticket = (string)($_GET['ticket'] ?? '');