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 26if ($data['uncheck']) { 27 uncheckTableRows('token'); 28} 29 30$this->addJsFile('multiselect.js'); 31$this->includeJsFile('administration.token.list.js.php'); 32 33$filter = (new CFilter((new CUrl('zabbix.php'))->setArgument('action', 'token.list'))); 34$filter 35 ->addVar('action', 'token.list') 36 ->setProfile($data['profileIdx']) 37 ->setActiveTab($data['active_tab']) 38 ->addFilterTab(_('Filter'), [ 39 (new CFormList()) 40 ->addRow(_('Name'), 41 (new CTextBox('filter_name', $data['filter']['name'])) 42 ->setWidth(ZBX_TEXTAREA_FILTER_STANDARD_WIDTH) 43 ->setAttribute('autofocus', 'autofocus') 44 ) 45 ->addRow(new CLabel(_('Users'), 'filter_userids__ms'), [ 46 (new CMultiSelect([ 47 'name' => 'filter_userids[]', 48 'object_name' => 'users', 49 'data' => $data['ms_users'], 50 'placeholder' => '', 51 'popup' => [ 52 'parameters' => [ 53 'srctbl' => 'users', 54 'srcfld1' => 'userid', 55 'srcfld2' => 'fullname', 56 'dstfrm' => $filter->getName(), 57 'dstfld1' => 'filter_userids_' 58 ] 59 ] 60 ]))->setWidth(ZBX_TEXTAREA_FILTER_STANDARD_WIDTH) 61 ]) 62 ->addRow(_('Expires in less than'), [ 63 (new CCheckBox('filter_expires_state')) 64 ->setChecked($data['filter']['expires_state']) 65 ->setId('filter-expires-state'), 66 (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), 67 (new CNumericBox('filter_expires_days', $data['filter']['expires_days'], 3, false, false, false)) 68 ->setId('filter-expires-days') 69 ->setEnabled($data['filter']['expires_state']) 70 ->setWidth(ZBX_TEXTAREA_NUMERIC_STANDARD_WIDTH), 71 (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), 72 _('days') 73 ]), 74 (new CFormList()) 75 ->addRow(new CLabel(_('Created by users'), 'filter_creator_userids__ms'), [ 76 (new CMultiSelect([ 77 'name' => 'filter_creator_userids[]', 78 'object_name' => 'users', 79 'data' => $data['ms_creators'], 80 'placeholder' => '', 81 'popup' => [ 82 'parameters' => [ 83 'srctbl' => 'users', 84 'srcfld1' => 'userid', 85 'srcfld2' => 'fullname', 86 'dstfrm' => $filter->getName(), 87 'dstfld1' => 'filter_creator_userids_' 88 ] 89 ] 90 ]))->setWidth(ZBX_TEXTAREA_FILTER_STANDARD_WIDTH) 91 ]) 92 ->addRow(_('Status'), 93 (new CRadioButtonList('filter_status', (int) $data['filter']['status'])) 94 ->addValue(_('Any'), -1) 95 ->addValue(_('Enabled'), ZBX_AUTH_TOKEN_ENABLED) 96 ->addValue(_('Disabled'), ZBX_AUTH_TOKEN_DISABLED) 97 ->setModern(true) 98 ) 99 ]); 100 101$widget = (new CWidget()) 102 ->setTitle(_('API tokens')) 103 ->setTitleSubmenu(getAdministrationGeneralSubmenu()) 104 ->setControls( 105 (new CTag('nav', true, 106 (new CList())->addItem(new CRedirectButton(_('Create API token'), 107 (new CUrl('zabbix.php'))->setArgument('action', 'token.edit')) 108 ) 109 ))->setAttribute('aria-label', _('Content controls')) 110 ) 111 ->addItem($filter); 112 113$token_form = (new CForm('get')) 114 ->addVar('action_src', 'token.list') 115 ->setName('token_form'); 116 117$token_table = (new CTableInfo()) 118 ->setHeader([ 119 (new CColHeader( 120 (new CCheckBox('all_tokens')) 121 ->onClick("checkAll('".$token_form->getName()."', 'all_tokens', 'tokenids');") 122 ))->addClass(ZBX_STYLE_CELL_WIDTH), 123 make_sorting_header(_('Name'), 'name', $data['sort'], $data['sortorder'], 124 (new CUrl('zabbix.php')) 125 ->setArgument('action', 'token.list') 126 ->getUrl() 127 ), 128 make_sorting_header(_('User'), 'user', $data['sort'], $data['sortorder'], 129 (new CUrl('zabbix.php')) 130 ->setArgument('action', 'token.list') 131 ->getUrl() 132 ), 133 make_sorting_header(_('Expires at'), 'expires_at', $data['sort'], $data['sortorder'], 134 (new CUrl('zabbix.php')) 135 ->setArgument('action', 'token.list') 136 ->getUrl() 137 ), 138 _('Created at'), 139 make_sorting_header(_('Created by user'), 'creator', $data['sort'], $data['sortorder'], 140 (new CUrl('zabbix.php')) 141 ->setArgument('action', 'token.list') 142 ->getUrl() 143 ), 144 make_sorting_header(_('Last accessed at'), 'lastaccess', $data['sort'], $data['sortorder'], 145 (new CUrl('zabbix.php')) 146 ->setArgument('action', 'token.list') 147 ->getUrl() 148 ), 149 make_sorting_header(_('Status'), 'status', $data['sort'], $data['sortorder'], 150 (new CUrl('zabbix.php')) 151 ->setArgument('action', 'token.list') 152 ->getUrl() 153 ) 154 ]); 155 156foreach ($data['tokens'] as $token) { 157 $name = new CLink($token['name'], (new CUrl('zabbix.php')) 158 ->setArgument('action', 'token.edit') 159 ->setArgument('tokenid', $token['tokenid']) 160 ); 161 162 $token_table->addRow([ 163 new CCheckBox('tokenids['.$token['tokenid'].']', $token['tokenid']), 164 (new CCol($name))->addClass(ZBX_STYLE_NOWRAP), 165 $token['user'], 166 (new CSpan(zbx_date2str(DATE_TIME_FORMAT_SECONDS, $token['expires_at'])))->addClass( 167 $token['is_expired'] ? ZBX_STYLE_RED : ZBX_STYLE_GREEN 168 ), 169 zbx_date2str(DATE_TIME_FORMAT_SECONDS, $token['created_at']), 170 ($token['creator'] === null) 171 ? italic(_('Unknown')) 172 : $token['creator'], 173 zbx_date2str(DATE_TIME_FORMAT_SECONDS, $token['lastaccess']), 174 ($token['status'] == ZBX_AUTH_TOKEN_ENABLED) 175 ? (new CLink(_('Enabled'), (new CUrl('zabbix.php')) 176 ->setArgument('action_src', 'token.list') 177 ->setArgument('action', 'token.disable') 178 ->setArgument('tokenids', (array) $token['tokenid']) 179 ->getUrl() 180 )) 181 ->addClass(ZBX_STYLE_LINK_ACTION) 182 ->addClass(ZBX_STYLE_GREEN) 183 ->addSID() 184 : (new CLink(_('Disabled'), (new CUrl('zabbix.php')) 185 ->setArgument('action_src', 'token.list') 186 ->setArgument('action', 'token.enable') 187 ->setArgument('tokenids', (array) $token['tokenid']) 188 ->getUrl() 189 )) 190 ->addClass(ZBX_STYLE_LINK_ACTION) 191 ->addClass(ZBX_STYLE_RED) 192 ->addSID() 193 ]); 194} 195 196$token_form->addItem([ 197 $token_table, 198 $data['paging'], 199 new CActionButtonList('action', 'tokenids', [ 200 'token.enable' => ['name' => _('Enable'), 'confirm' => _('Enable selected API tokens?')], 201 'token.disable' => ['name' => _('Disable'), 'confirm' => _('Disable selected API tokens?')], 202 'token.delete' => ['name' => _('Delete'), 'confirm' => _('Delete selected API tokens?')] 203 ], 'token') 204]); 205 206$widget 207 ->addItem($token_form) 208 ->show(); 209