85 foreach(static::$authQueryParams as
$key)
94 if ($authCode ===
null)
100 $method = \CRestServer::instance()->getMethod();
101 if (
$method === self::PASSWORD_CHECK_METHOD)
105 if (!$conference || !$conference->isActive())
108 'error' =>
'CALL_AUTH_NOT_ACTIVE',
109 'error_description' =>
'Call: conference is not active',
119 if(
$storage->get(
'checked') ===
true)
127 if (!$conference || !$conference->isActive())
130 'error' =>
'CALL_AUTH_VIDEOCONF_NOT_ACTIVE',
131 'error_description' =>
'Call: conference is not active',
138 if ($conference->isPasswordRequired())
140 if ($conference->getPassword() ===
$query[
'videoconf_password'])
147 'error' =>
'CALL_AUTH_ACCESS_DENIED',
148 'error_description' =>
'Call: access to conference is denied',
158 if ($authCode == self::AUTH_CODE_GUEST)
160 if (self::checkQueryMethod(self::METHODS_WITHOUT_AUTH))
162 $res = self::getSuccessfulResult();
169 'error' =>
'CALL_AUTH_METHOD_ERROR',
170 'error_description' =>
'Call: you don\'t have access to use this method [1]',
177 else if (!preg_match(
"/^[a-fA-F0-9]{32}$/i", $authCode))
180 'error' =>
'CALL_AUTH_FAILED',
181 'error_description' =>
'Call: user auth failed [code is not correct]',
186 if (!self::checkQueryMethod(array_merge(self::METHODS_WITH_AUTH, self::METHODS_WITHOUT_AUTH)))
189 'error' =>
'CALL_AUTH_METHOD_ERROR',
190 'error_description' =>
'Call: you don\'t have access to use this method [2]',
197 $xmlId = self::AUTH_TYPE.
"|".$authCode;
199 if (
$USER->IsAuthorized())
201 if (
$USER->GetParam(
'EXTERNAL_AUTH_ID') ==
'call')
203 if (
$USER->GetParam(
'XML_ID') == $xmlId)
205 $res = self::getSuccessfulResult();
207 \CUser::SetLastActivityDate(
$USER->GetID(),
true);
214 'error' =>
'CALL_AUTH_DIFF_USER',
215 'error_description' =>
'Call: you are authorized with a different user [2]',
216 'additional' => [
'hash' => mb_substr(
$USER->GetParam(
'XML_ID'), mb_strlen(self::AUTH_TYPE) + 1)]
225 'error' =>
'CALL_AUTH_PORTAL_USER',
226 'error_description' =>
'Call: you are authorized with a portal user [2]',
236 'select' => [
'ID',
'EXTERNAL_AUTH_ID'],
237 'filter' => [
'=XML_ID' => $xmlId]
241 if ($userData && $userData[
'EXTERNAL_AUTH_ID'] ==
'call')
245 $res = self::getSuccessfulResult();
247 \CUser::SetLastActivityDate(
$USER->GetID(),
true);
253 'error' =>
'CALL_AUTH_FAILED',
254 'error_description' =>
'Call: user auth failed [user not found]',
265 if (!$skipAuthorizeCheck &&
$USER->IsAuthorized())
270 $context = \Bitrix\Main\Context::getCurrent();
272 if (is_null($setCookie))
275 if (
$context->getRequest()->getCookieRaw(
'BITRIX_CALL_AUTH'))
283 $USER->Authorize(
$userId, $setCookie, $setCookie,
'public');
286 $cookie = new \Bitrix\Main\Web\Cookie(
'BITRIX_CALL_AUTH',
'Y',
null,
false);
287 $cookie->setHttpOnly(
false);
288 $context->getResponse()->addCookie($cookie);
290 $authCode = str_replace(self::AUTH_TYPE.
'|',
'',
$USER->GetParam(
'XML_ID'));
292 $cookie = new \Bitrix\Main\Web\Cookie(
'BITRIX_CALL_HASH', $authCode,
null,
false);
293 $cookie->setHttpOnly(
false);
294 $context->getResponse()->addCookie($cookie);