1<?php declare(strict_types=1); 2/* 3** Zabbix 4** Copyright (C) 2001-2021 Zabbix SIA 5** 6** This program is free software; you can redistribute it and/or modify 7** it under the terms of the GNU General Public License as published by 8** the Free Software Foundation; either version 2 of the License, or 9** (at your option) any later version. 10** 11** This program is distributed in the hope that it will be useful, 12** but WITHOUT ANY WARRANTY; without even the implied warranty of 13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14** GNU General Public License for more details. 15** 16** You should have received a copy of the GNU General Public License 17** along with this program; if not, write to the Free Software 18** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19**/ 20 21 22/** 23 * @var CView $this 24 */ 25 26$this->addJsFile('class.calendar.js'); 27 28$this->includeJsFile('administration.user.token.edit.js.php'); 29 30$widget = (new CWidget()) 31 ->setTitle(_('API tokens')) 32 ->setTitleSubmenu(getUserSettingsSubmenu()); 33 34$token_form = (new CForm()) 35 ->setId('token_form') 36 ->setName('token') 37 ->setAttribute('aria-labeledby', ZBX_STYLE_PAGE_TITLE) 38 ->addVar('userid', CWebUser::$data['userid']) 39 ->addVar('action_src', 'user.token.edit') 40 ->addVar('action_dst', ($data['tokenid'] == 0) ? 'user.token.view' : 'user.token.list') 41 ->addVar('action', ($data['tokenid'] == 0) ? 'token.create' : 'token.update') 42 ->addVar('tokenid', $data['tokenid']); 43 44$token_from_list = (new CFormList()) 45 ->addRow((new CLabel(_('Name'), 'name'))->setAsteriskMark(), 46 (new CTextBox('name', $data['name'], false, DB::getFieldLength('token', 'name'))) 47 ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH) 48 ->setAttribute('autofocus', 'autofocus') 49 ->setAriaRequired() 50 ) 51 ->addRow(new CLabel(_('Description'), 'description'), 52 (new CTextArea('description', $data['description'])) 53 ->addClass(ZBX_STYLE_MONOSPACE_FONT) 54 ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH) 55 ->setMaxLength(DB::getFieldLength('token', 'description')) 56 ->setAriaRequired() 57 ) 58 ->addRow(_('Set expiration date and time'), 59 (new CCheckBox('expires_state', '1')) 60 ->setChecked($data['expires_state']) 61 ->setUncheckedValue('0') 62 ) 63 ->addRow((new CLabel(_('Expires at')))->setAsteriskMark(), 64 (new CDateSelector('expires_at', $data['expires_at'])) 65 ->setDateFormat(DATE_TIME_FORMAT_SECONDS) 66 ->setPlaceholder(_('YYYY-MM-DD hh:mm:ss')) 67 ->setAriaRequired(), 68 'expires-at-row' 69 ) 70 ->addRow(_('Enabled'), 71 (new CCheckBox('status', ZBX_AUTH_TOKEN_ENABLED)) 72 ->setChecked($data['status'] == ZBX_AUTH_TOKEN_ENABLED) 73 ->setUncheckedValue(ZBX_AUTH_TOKEN_DISABLED) 74 ); 75 76 77$token_view = (new CTabView())->addTab('token', '', $token_from_list); 78$cancel_button = (new CRedirectButton(_('Cancel'), (new CUrl('zabbix.php')) 79 ->setArgument('action', 'user.token.list') 80 ->setArgument('page', CPagerHelper::loadPage('user.token.list', null)) 81))->setId('cancel'); 82 83if ($data['tokenid'] == 0) { 84 $add_button = (new CSubmitButton(_('Add')))->setId('add'); 85 $token_view->setFooter(makeFormFooter($add_button, [$cancel_button])); 86} 87else { 88 $update_button = (new CSubmitButton(_('Update')))->setId('update'); 89 $regenerate_button = (new CSimpleButton(_('Regenerate'))) 90 ->setAttribute('data-confirmation', _('Regenerate selected API token? Previously generated token will become invalid.')) 91 ->setId('regenerate'); 92 $delete_button = (new CRedirectButton(_('Delete'), (new CUrl('zabbix.php')) 93 ->setArgumentSID() 94 ->setArgument('action', 'token.delete') 95 ->setArgument('action_src', 'user.token.list') 96 ->setArgument('tokenids', (array) $data['tokenid']), 97 _('Delete selected API token?') 98 ))->setId('delete'); 99 100 $token_view->setFooter(makeFormFooter( 101 $update_button, 102 [ 103 $regenerate_button, 104 $delete_button, 105 $cancel_button 106 ] 107 )); 108} 109 110$token_form->addItem($token_view); 111$widget 112 ->addItem($token_form) 113 ->show(); 114