어디야 관리자 확인 브리지 추가
This commit is contained in:
1 parent
acf6cbe530
commit
62d25a286b
2 files changed
+34
-1
No files matched your search
@@ -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'] ?? '');
|
||||
|
||||
Reference in new issue
Block a user