Phase D
This commit is contained in:
@@ -110,6 +110,16 @@ function hexagamecloud_ChangePackage(array $params): string
|
||||
}
|
||||
}
|
||||
|
||||
function hexagamecloud_ServiceSingleSignOn(array $params)
|
||||
{
|
||||
return hexagamecloud_requestSso($params, 'service');
|
||||
}
|
||||
|
||||
function hexagamecloud_AdminSingleSignOn(array $params)
|
||||
{
|
||||
return hexagamecloud_requestSso($params, 'admin');
|
||||
}
|
||||
|
||||
function hexagamecloud_TestConnection(array $params): array
|
||||
{
|
||||
try {
|
||||
@@ -142,3 +152,31 @@ function hexagamecloud_lifecycleAction(array $params, string $action, array $bod
|
||||
return $exception->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
function hexagamecloud_requestSso(array $params, string $kind)
|
||||
{
|
||||
try {
|
||||
$client = new HexaGameCloudApiClient($params);
|
||||
$externalServiceId = (string) $params['serviceid'];
|
||||
$externalClientId = (string) ($params['clientsdetails']['userid'] ?? $params['userid'] ?? '');
|
||||
$externalUserId = (string) ($params['clientsdetails']['userid'] ?? $params['adminid'] ?? $externalClientId);
|
||||
|
||||
$response = $client->createServiceSso($externalServiceId, [
|
||||
'externalClientId' => $externalClientId,
|
||||
'externalUserId' => $externalUserId,
|
||||
'role' => $kind === 'admin' ? 'admin' : 'owner',
|
||||
'kind' => $kind,
|
||||
]);
|
||||
|
||||
return [
|
||||
'success' => true,
|
||||
'redirectTo' => $response['redirectUrl'],
|
||||
];
|
||||
} catch (Throwable $exception) {
|
||||
logModuleCall('hexagamecloud', 'sso:' . $kind, $params, $exception->getMessage());
|
||||
return [
|
||||
'success' => false,
|
||||
'error' => $exception->getMessage(),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user