- Модуль: rest
- Путь к файлу: ~/bitrix/modules/rest/lib/app.php
- Класс: BitrixRestAppTable
- Вызов: AppTable::onAfterAdd
static function onAfterAdd(MainEntityEvent $event)
{
EventController::onAddApp($event);
$data = $event->getParameters();
if(!static::$skipRemoteUpdate)
{
if(
$data['fields']['STATUS'] === static::STATUS_LOCAL
&& OAuthService::getEngine()->isRegistered()
)
{
try
{
$appFields = array(
'TITLE' => $data['fields']['APP_NAME'],
'REDIRECT_URI' => $data['fields']['URL'],
'SCOPE' => $data['fields']['SCOPE'],
);
$clientData = OAuthService::getEngine()
->getClient()
->addApplication($appFields);
}
catch(MainSystemException $e)
{
$clientData = array(
"error" => $e->getCode(),
"error_description" => $e->getMessage(),
);
}
if(is_array($clientData))
{
if($clientData['result'])
{
static::$skipRemoteUpdate = true;
static::clearClientCache($clientData['result']['client_id']);
$updateResult = static::update($data['id'], array(
'CLIENT_ID' => $clientData['result']['client_id'],
'CLIENT_SECRET' => $clientData['result']['client_secret'],
'STATUS' => static::STATUS_LOCAL,
'SHARED_KEY' => md5(CRestUtil::getMemberId().$clientData['result']['client_secret']),
'CODE' => $clientData['result']['client_id'],
));
static::$skipRemoteUpdate = false;
if($updateResult->isSuccess())
{
return true;
}
else
{
$clientData = array('error' => $updateResult->getErrorMessages());
}
}
}
else
{
$clientData = array('error' => 'Unknown error');
}
static::$skipRemoteUpdate = true;
static::delete($data['id']);
static::$skipRemoteUpdate = false;
throw new OAuthException($clientData);
}
}
if($data['fields']['STATUS'] !== static::STATUS_LOCAL)
{
BitrixRestEngineAccess::getActiveEntity(true);
}
return true;
}