1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
options_user_settings.php
См. документацию.
1<?php
2
10
13
14IncludeModuleLangFile(__FILE__);
15
16if(!CModule::IncludeModule("security") || !CSecurityUser::isActive()):?>
17 <tr>
18 <td><?=GetMessage("SEC_OTP_NEW_ACCESS_DENIED")?></td>
19 </tr>
20<?
21 return;
23?>
24<?if(
25 $ID <= 0
26 || ($USER->getID() != $ID && !$USER->CanDoOperation('security_edit_user_otp'))
27)
28 return;
29?>
30<?
31CJSCore::Init(array('qrcode', 'ajax', 'window'));
32$APPLICATION->AddHeadScript('/bitrix/js/security/admin/page/user-edit.js');
33$otp = Otp::getByUser($ID);
34$deactivateUntil = $otp->getDeactivateUntil();
35$availableTypes = Otp::getAvailableTypes();
36$availableTypesDescription = Otp::getTypesDescription();
37$currentPage = $APPLICATION->GetCurPageParam(
38 sprintf('%s_active_tab=%s',$tabControl->name, $tabControl->tabs[$tabControl->tabIndex]['DIV']),
39 array(sprintf('%s_active_tab',$tabControl->name))
40);
42$deactivateDays[] = GetMessage("SEC_OTP_NO_DAYS");
43for($i=1; $i <= 10; $i++)
44{
45 $deactivateDays[$i] = FormatDate("ddiff", time()-60*60*24*$i);
46}
48 'SEC_OTP_ERROR_TITLE' => GetMessage('SEC_OTP_ERROR_TITLE'),
49 'SEC_OTP_UNKNOWN_ERROR' => GetMessage('SEC_OTP_UNKNOWN_ERROR')
50);
51$jsSettings = array(
52 'userId' => (int) $ID,
53 'successfulUrl' => $currentPage,
54 'deactivateDays' => $deactivateDays,
55 'availableTypes' => $availableTypesDescription
56)
57?>
58<script>
59 BX.message(<?=Json::encode($jsMessages)?>);
60</script>
61<script>
62 BX.ready(function() {
63 var settings = <?=Json::encode($jsSettings)?>;
64 new BX.Security.UserEdit.Otp(settings.userId, settings);
65 });
66</script>
67<!--Popup starts-->
68<tr style="display: none;">
69 <td colspan="2">
70<div id="otp-mobile-popup" class="otp-popup otp-mobile" data-title="<?=GetMessage('SEC_OTP_CONNECT_MOBILE_TITLE')?>">
71 <div class="otp-description">
72 <ol>
73 <li><?=GetMessage('SEC_OTP_CONNECT_MOBILE_STEP_1')?></li>
74 <li><?=GetMessage('SEC_OTP_CONNECT_MOBILE_STEP_2')?></li>
75 <li><?=GetMessage('SEC_OTP_CONNECT_MOBILE_STEP_3')?></li>
76 </ol>
77 </div>
78 <div class="otp-connect">
79 <div id="connect-by-qr">
80 <div class="input-type">
81 <span class="current"><?=GetMessage('SEC_OTP_MOBILE_SCAN_QR')?></span><span class="separator"><?=GetMessage('SEC_OTP_MOBILE_INPUT_METHODS_SEPARATOR')?></span><a href="#" id="connect-mobile-manual-input"><?=GetMessage('SEC_OTP_MOBILE_MANUAL_INPUT')?></a>
82 </div>
83 <div style="margin-bottom: 20px">
84 <?=GetMessage('SEC_OTP_CONNECT_MOBILE_SCAN_QR')?>
85 </div>
86 <div>
87 <div class="input-wrapper">
88 <div data-role="qr-code-block" data-autoclear="yes" style="margin-top: 8px; margin-left: 8px;"></div>
89 </div>
90 </div>
91 </div>
92 <div id="connect-by-manual-input" style="display: none;">
93 <div class="input-type">
94 <a href="#" id="connect-mobile-scan-qr"><?=GetMessage('SEC_OTP_MOBILE_SCAN_QR')?></a><span class="separator"><?=GetMessage('SEC_OTP_MOBILE_INPUT_METHODS_SEPARATOR')?></span><span class="current"><?=GetMessage('SEC_OTP_MOBILE_MANUAL_INPUT')?></span>
95 </div>
96 <div style="margin-bottom: 20px">
97 <?=GetMessage('SEC_OTP_CONNECT_MOBILE_MANUAL_INPUT')?>
98 <span class="type-title" data-show-type="<?= Otp::TYPE_HOTP ?>"><?=GetMessage('SEC_OTP_CONNECT_MOBILE_MANUAL_INPUT_HOTP')?></span>
99 <span class="type-title" data-show-type="<?= Otp::TYPE_TOTP ?>"><?=GetMessage('SEC_OTP_CONNECT_MOBILE_MANUAL_INPUT_TOTP')?></span>
100 .
101 </div>
102 <div>
103 <div class="input-wrapper">
104 <div data-role="app-code-block" data-autoclear="yes" style="margin-left: auto; margin-right: auto; margin-top: 98px; font-weight: bold; text-align: center;">#APP_CODE#</div>
105 </div>
106 </div>
107 </div>
108 </div>
109 <div>
110 <p>
111 <?=GetMessage('SEC_OTP_CONNECT_MOBILE_INPUT_DESCRIPTION')?>
112 </p>
113 <p>
114 <input type="text" dir="ltr" data-autoclear="yes" data-role="check-code" autocomplete="off" placeholder="<?=GetMessage('SEC_OTP_CONNECT_MOBILE_ENTER_CODE')?>">
115 </p>
116 <p data-require-two-codes="yes">
117 <?=GetMessage('SEC_OTP_CONNECT_MOBILE_INPUT_NEXT_DESCRIPTION')?>
118 </p>
119 <p data-require-two-codes="yes">
120 <input type="text" dir="ltr" data-autoclear="yes" data-role="check-code" autocomplete="off" placeholder="<?=GetMessage('SEC_OTP_CONNECT_MOBILE_ENTER_NEXT_CODE')?>">
121 </p>
122 <div data-role="error-container" class="error-wrapper" data-autoclear="yes"></div>
123 </div>
124</div>
125<div id="otp-device-popup" class="otp-popup otp-device" data-title="<?=GetMessage('SEC_OTP_CONNECT_DEVICE_TITLE')?>">
126 <table>
127 <tr>
128 <td>
129 <?=GetMessage("SEC_OTP_TYPE")?>:
130 </td>
131 <td>
132 <?foreach($availableTypes as $value):?>
133 <span class="type-title" data-show-type="<?=$value?>">
134 <?= ($availableTypesDescription[$value]['title'] ?? $value) ?>
135 </span>
136 <?endforeach?>
137 </td>
138 </tr>
139 <tr>
140 <td>
141 <?=GetMessage("SEC_OTP_SECRET_KEY")?>:
142 </td>
143 <td>
144 <input type="text" autocomplete="off" data-autoclear="yes" data-role="secret-code" size="40" maxlength="64" value="">
145 </td>
146 </tr>
147 <tr data-show-type="<?= Otp::TYPE_TOTP ?>">
148 <td>
149 <?=GetMessage('SEC_OTP_START_TIMESTAMP')?>:
150 </td>
151 <td>
152 <input type="text" autocomplete="off" data-autoclear="yes" data-role="start-timestamp" size="40" maxlength="20" value="">
153 </td>
154 </tr>
155 <tr class="heading">
156 <td colspan="2"><?=GetMessage("SEC_OTP_INIT")?></td>
157 </tr>
158 <tr>
159 <td>
160 <?=GetMessage("SEC_OTP_PASS1")?>:
161 </td>
162 <td>
163 <input type="text" autocomplete="off" data-autoclear="yes" data-role="check-code" size="8" maxlength="8" value="">
164 </td>
165 </tr>
166 <tr data-require-two-codes="yes">
167 <td>
168 <?=GetMessage("SEC_OTP_PASS2")?>:
169 </td>
170 <td>
171 <input type="text" autocomplete="off" data-autoclear="yes" data-role="check-code" size="8" maxlength="8" value="">
172 </td>
173 </tr>
174 <tr>
175 <td colspan="2">
176 <div data-role="error-container" class="error-wrapper" data-autoclear="yes"></div>
177 </td>
178 </tr>
179 </table>
180</div>
181<div id="otp-recovery-codes" class="otp-popup otp-recovery-codes" data-title="<?=GetMessage('SEC_OTP_RECOVERY_CODES_TITLE')?>">
182 <p>
183 <?=GetMessage('SEC_OTP_RECOVERY_CODES_DESCRIPTION')?>
184 </p>
185 <p>
186 <?=GetMessage('SEC_OTP_RECOVERY_CODES_WARNING')?>
187 </p>
188 <div class="input-wrapper">
189 <div>
190 <ol data-role="recoverycodes-container" class="codes-container" style="display: none;">
191 <li data-role="recoverycode-template" data-autoclear="yes">#CODE#</li>
192 </ol>
193 </div>
194 </div>
195 <p>
196 <div style="margin-top: 10px">
197 <input type="button" data-role="print-codes" value="<?=GetMessage('SEC_OTP_RECOVERY_CODES_PRINT')?>" />
198 <input type="button" data-role="save-codes" value="<?=GetMessage('SEC_OTP_RECOVERY_CODES_SAVE_FILE')?>" />
199 </div>
200 </p>
201 <p>
202 <div><?=GetMessage('SEC_OTP_RECOVERY_CODES_REGENERATE_DESCRIPTION')?></div>
203 <div data-role="error-container" class="error-wrapper" data-autoclear="yes"></div>
204 <div>
205 <input type="button" data-role="regenerate-codes" value="<?=GetMessage('SEC_OTP_RECOVERY_CODES_REGENERATE')?>" />
206 </div>
207 </p>
208 <p>
209 * <?=GetMessage('SEC_OTP_RECOVERY_CODES_NOTE')?>
210 </p>
211</div>
212 </td>
213</tr>
214<!--Popup ends-->
215<?if (!$otp->isActivated()):?>
216 <?if (
217 Otp::isMandatoryUsing()
218 && $otp->getInitialDate() // User trigger any of OTP mechanisms
219 && $USER->CanDoOperation('security_edit_user_otp')
220 && !$otp->canSkipMandatoryByRights()
221 ):?>
222 <tr>
223 <td>
224 <?if (!$otp->isMandatorySkipped()):?>
225 <?=BeginNote()?>
226 <?=getMessage('SEC_OTP_MANDATORY_EXPIRED')?>
227 <span class="otp-link-button" id="otp-deffer"><?=GetMessage('SEC_OTP_MANDATORY_DEFFER')?></span>
228 <?=EndNote()?>
229 <?elseif ($otp->getDeactivateUntil()):?>
230 <?=BeginNote()?>
231 <?=getMessage('SEC_OTP_MANDATORY_ALMOST_EXPIRED', array('#DATE#' => $otp->getDeactivateUntil()))?>
232 <span class="otp-link-button" id="otp-deffer"><?=GetMessage('SEC_OTP_MANDATORY_DEFFER')?></span>
233 <?=EndNote()?>
234 <?else:?>
235 <?=BeginNote()?>
236 <?=getMessage('SEC_OTP_MANDATORY_DISABLED')?>
237 <span class="otp-link-button" id="otp-mandatory-active">
238 <?if (empty($deactivateDays)):?>
239 <?=GetMessage('SEC_OTP_MANDATORY_ENABLE_DEFAULT')?>
240 <?else:?>
241 <?=GetMessage('SEC_OTP_MANDATORY_ENABLE')?>
242 <?endif;?>
243 </span>
244 <?=EndNote()?>
245 <?endif;?>
246 </td>
247 </tr>
248 <?endif;?>
249 <tr>
250 <?if ($otp->isInitialized()):?>
251 <td style="text-align: left;">
252 <a class="adm-btn-save adm-btn" id="otp-activate"><?=GetMessage('SEC_OTP_ENABLE')?></a>
253 <?if ($deactivateUntil):?>
254 <span>(<?=getMessage('SEC_OTP_DEACTIVATE_UNTIL', array('#DATE#' => $deactivateUntil))?>)</span>
255 <?endif;?>
256 </td>
257 <td style="text-align: right;">
258 <a class="adm-btn-save adm-btn adm-btn-menu" id="otp-connect-device"><?=GetMessage('SEC_OTP_CONNECT_DEVICE')?></a>
259 <a class="adm-btn-save adm-btn adm-btn-menu" id="otp-connect-mobile" style="margin-left: 20px;"><?=GetMessage('SEC_OTP_CONNECT_MOBILE')?></a>
260 </td>
261 <?else:?>
262 <td colspan="2">
263 <a class="adm-btn-save adm-btn adm-btn-menu" id="otp-connect-device"><?=GetMessage('SEC_OTP_CONNECT_DEVICE')?></a>
264 <a class="adm-btn-save adm-btn adm-btn-menu" id="otp-connect-mobile" style="margin-left: 20px;"><?=GetMessage('SEC_OTP_CONNECT_MOBILE')?></a>
265 </td>
266 <?endif;?>
267 </tr>
268 <tr>
269 <td colspan="2">
270 <div style=" padding: 20px;">
271 <h3 style="clear:both"><br><?=getMessage('SEC_OTP_DESCRIPTION_INTRO_TITLE')?></h3>
272 <div style="float: left; margin-right: 20px">
273 <div style="-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border: 2px solid #e0e3e5; border-radius: 2px; height: 156px; width: 156px; background: white url(/bitrix/images/security/etoken_pass.png?v2) no-repeat center center;"></div>
274 </div>
275 <div>
276 <?=(IsModuleInstalled('intranet')?
277 getMessage('SEC_OTP_DESCRIPTION_INTRO_INTRANET'):
278 getMessage('SEC_OTP_DESCRIPTION_INTRO_SITE'))?>
279 </div>
280 <?
281 if (in_array(LANGUAGE_ID, array('en', 'ru', 'de'), true))
282 $imageLanguage = LANGUAGE_ID;
283 else
284 $imageLanguage = \Bitrix\Main\Localization\Loc::getDefaultLang(LANGUAGE_ID);
285 ?>
286 <h3 style="clear:both"><br><?=getMessage('SEC_OTP_DESCRIPTION_USING_TITLE')?></h3>
287 <div style="float: left; margin-right: 20px">
288 <div style="-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border: 2px solid #e0e3e5; border-radius: 2px; padding: 5px 10px; background: white; height: 150px;">
289 <div style="float: left; background: url(/bitrix/images/security/<?=$imageLanguage?>_login_step0.png) no-repeat top right; width: 220px; height: 120px; padding-top: 20px;" ><?=getMessage('SEC_OTP_DESCRIPTION_USING_STEP_0')?></div>
290 <div style="float: left; background: url(/bitrix/images/security/<?=$imageLanguage?>_login_step1.png) no-repeat top right; width: 220px; height: 120px; padding-top: 20px; margin-left:20px;"><?=getMessage('SEC_OTP_DESCRIPTION_USING_STEP_1')?></div>
291 </div>
292 </div>
293 <div>
294 <?=getMessage('SEC_OTP_DESCRIPTION_USING')?>
295 </div>
296 <h3 style="clear:both"><br><?=getMessage('SEC_OTP_DESCRIPTION_ACTIVATION_TITLE')?></h3>
297 <div>
298 <?=getMessage('SEC_OTP_DESCRIPTION_ACTIVATION')?>
299 </div>
300 <?=BeginNote()?>
301 <h3><?=getMessage('SEC_OTP_DESCRIPTION_ABOUT_TITLE')?></h3>
302 <div>
303 <?=getMessage('SEC_OTP_DESCRIPTION_ABOUT')?>
304 </div>
305 <?=EndNote()?>
306 </div>
307 </td>
308 </tr>
309<?else:?>
310 <?if (Otp::isRecoveryCodesEnabled()):?>
311 <?
312 $codes = \Bitrix\Security\Mfa\RecoveryCodesTable::getList(array(
313 'select' => array('ID'),
314 'filter' => array('=USER_ID' => $ID),
315 'limit' => 1
316 ))->fetch();
317 if (!$codes):?>
318 <tr data-role="otp-recovery-codes-warning">
319 <td colspan="2">
321 "MESSAGE" => GetMessage('SEC_OTP_WARNING_RECOVERY_CODES'),
322 "TYPE" => 'ERROR',
323 "HTML" => true
324 ));?>
325 </td>
326 </tr>
327 <?endif;?>
328 <?endif;?>
329 <tr>
330 <td style="text-align: left;">
331 <span><?=GetMessage('SEC_OTP_CONNECTED')?></span>
332 <?if(
333 !Otp::isMandatoryUsing()
334 || $otp->canSkipMandatory()
335 || $USER->CanDoOperation('security_edit_user_otp')
336 ):?>
337 <span class="otp-link-button" id="otp-deactivate"><?=GetMessage('SEC_OTP_DISABLE')?></span>
338 <?endif;?>
339 <?if (Otp::isRecoveryCodesEnabled()):?>
340 <span class="otp-link-button" id="otp-show-recovery-codes"><?=GetMessage('SEC_OTP_RECOVERY_CODES_BUTTON')?></span>
341 <?endif;?>
342 <?if ($USER->CanDoOperation('security_edit_user_otp')):?>
343 <span class="otp-link-button" id="otp-reinitialize"><?=GetMessage('SEC_OTP_SYNC_NOW')?></span>
344 <?endif;?>
345 </td>
346 <td style="text-align: right;">
347 <a class="adm-btn-save adm-btn adm-btn-menu" id="otp-connect-device"><?=GetMessage('SEC_OTP_CONNECT_NEW_DEVICE')?></a>
348 <a class="adm-btn-save adm-btn adm-btn-menu" id="otp-connect-mobile" style="margin-left: 20px;"><?=GetMessage('SEC_OTP_CONNECT_NEW_MOBILE')?></a>
349 </td>
350 </tr>
351 <?if ($USER->CanDoOperation('security_edit_user_otp')):?>
352 <tr class="heading" style="display:none;" data-show-on-reinitialize="yes">
353 <td colspan="2"><?=GetMessage("SEC_OTP_INIT")?></td>
354 <input type="hidden" name="profile_module_id[]" value="security">
355 </tr>
356 <tr style="display:none;" data-show-on-reinitialize="yes">
357 <td>
358 <?=GetMessage("SEC_OTP_PASS1")?>:
359 </td>
360 <td>
361 <input type="text" autocomplete="off" id="security_SYNC1" name="security_SYNC1" size="8" maxlength="8" value="">
362 </td>
363 </tr>
364 <tr style="display:none;" data-show-on-reinitialize="yes">
365 <td>
366 <?=GetMessage("SEC_OTP_PASS2")?>:
367 </td>
368 <td>
369 <input type="text" autocomplete="off" id="security_SYNC2" name="security_SYNC2" size="8" maxlength="8" value="">
370 </td>
371 </tr>
372 <?endif;?>
373<?endif;?>
global $APPLICATION
Определения include.php:80
static getDefaultLang($lang)
Определения loc.php:463
Определения json.php:9
Определения otp.php:21
static ShowMessage($message)
Определения admin_lib.php:2351
static Init($arExt=array(), $bReturn=false)
Определения jscore.php:66
static isActive()
Определения user.php:159
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
EndNote()
Определения filter_tools.php:601
BeginNote($sParams='', $sMessParams='')
Определения filter_tools.php:589
if($ajaxMode) $ID
Определения get_user.php:27
if(preg_match('/^ else[a-z0-9_]{2}$/i', $siteID)===1)
Определения cron_frame.php:23
global $USER
Определения csv_new_run.php:40
$tabControl
Определения csv_new_setup.php:244
endif
Определения csv_new_setup.php:990
FormatDate($format="", $timestamp=false, $now=false, ?string $languageId=null)
Определения tools.php:871
IsModuleInstalled($module_id)
Определения tools.php:5301
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$value
Определения Param.php:39
global_menu_<?echo $menu["menu_id"]?> adm main menu item icon adm main menu item text text adm main menu hover adm submenu menucontainer menu_id menu_id items_id items_id desktop menu_id block none adm global submenu<?=($subMenuDisplay=="block" ? " adm-global-submenu-active" :"")?> global_submenu_<?echo $menu["menu_id"]?> text MAIN_PR_ADMIN_FAV items adm submenu items wrap adm submenu items stretch wrap BX adminMenu itemsStretchScroll()"> <table class if (!empty( $menu["items"])) elseif ( $menu[ 'menu_id']=='desktop') if ( $menu[ 'menu_id']=='desktop') endforeach
Определения prolog_main_admin.php:255
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
<? endif;?> window document title
Определения prolog_main_admin.php:76
$i
Определения factura.php:643
font style
Определения invoice.php:442
font size
Определения invoice.php:442
for($i=1; $i<=10; $i++) $jsMessages
Определения options_user_settings.php:47
$deactivateUntil
Определения options_user_settings.php:34
$availableTypesDescription
Определения options_user_settings.php:36
$otp
Определения options_user_settings.php:33
$deactivateDays
Определения options_user_settings.php:41
$currentPage
Определения options_user_settings.php:37
$availableTypes
Определения options_user_settings.php:35