Добавление дополнительных данных из соц сетей в основную запись

Я работаю с сайтом на системе 1С-bitrix, на котором реализована возможность авторизоваться через соц сети, с помощью модуля социальные сервисы. Немного посмотрев файловую структуру, я нашёл кастомный класс авторизации, который используется на данный момент

   <?

       if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

    /**
      * @global CMain $APPLICATION
      * @global CUser $USER
      * @var array $this ->arParams
      * Parameters:
      *    AUTH_RESULT - Authorization result message
      *    NOT_SHOW_LINKS - Whether to show links to register page && password restoration (Y/N)
     */
      class AuthAuthorize extends \CBitrixComponent{
       /**
         * {@inheritdoc}
       */
         public function executeComponent(){

    global $USER;

    $this->socialAuthHandler();

    if (!$USER->IsAuthorized() && CModule::IncludeModule("socialservices")) {
        $oAuthManager = new CSocServAuthManager();
        $arServices = $oAuthManager->GetActiveAuthServices(array(
            'BACKURL' => $this->arResult['~BACKURL'],
            'FOR_INTRANET' => $this->arResult['FOR_INTRANET'],
        ));

        if (!empty($arServices)) {
            $this->arResult["AUTH_SERVICES"] = $arServices;
            if (
                isset($_REQUEST["auth_service_id"]) &&
                $_REQUEST["auth_service_id"] <> '' &&
                isset($this->arResult["AUTH_SERVICES"][$_REQUEST["auth_service_id"]])
            ) {
                $this->arResult["CURRENT_SERVICE"] = $_REQUEST["auth_service_id"];
                $_SESSION['SOCIAL_AUTH'] = true;
                if (!isset($_REQUEST["auth_service_error"]) || $_REQUEST["auth_service_error"] == '') {
                    $oAuthManager->Authorize($_REQUEST["auth_service_id"]);
                }
            }
        }
    }


    $this->IncludeComponentTemplate();
}

protected function socialAuthHandler()
{
    if (!$_SESSION['SOCIAL_AUTH']) {
        return;
    }
    $cUser = new \CUser();
    $userId = $cUser->GetID();
    $user = $cUser->GetByID($userId)->Fetch();

    if (!$user['PERSONAL_MOBILE'] && $user['EXTERNAL_AUTH_ID']) {
        if ($cUser->IsAuthorized()) {
            $cUser->Logout();
        }
        $this->arResult['CONFIRM_PHONE_USER_ID'] = $userId;
    }
    unset($_SESSION['SOCIAL_AUTH']);
}
}

Задача стоит такая - нужно, чтобы пользователь, будучи авторизованным, мог через API вконтакте дозаполнить свои, уже существующие учётные данные, данными из соц сети. Проблема на данный момент для меня заключается в том, что я не знаю, как именно выполняется процесс авторизации и регестрации через компоненты битрикса, потому что я почти не знаю битрикс. В целом, если бы я писал всё сам, то просто добавил бы нужные поля в базу, и делал бы апдейт записи с нужным id недостоющими полями, приходящими из соц сети. Понимаю, что при работе с CMS нужно использовать средства CMS, поэтому пришёл сюда за советом, как можно решить данный вопрос средствами битрикса?


Ответы (0 шт):