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('user.token'); 28} 29 30$this->includeJsFile('administration.user.token.list.js.php'); 31 32$filter = (new CFilter((new CUrl('zabbix.php'))->setArgument('action', 'user.token.list'))); 33$filter 34 ->addVar('action', 'user.token.list') 35 ->setProfile($data['profileIdx']) 36 ->setActiveTab($data['active_tab']) 37 ->addFilterTab(_('Filter'), [ 38 (new CFormList()) 39 ->addRow(_('Name'), 40 (new CTextBox('filter_name', $data['filter']['name'])) 41 ->setWidth(ZBX_TEXTAREA_FILTER_STANDARD_WIDTH) 42 ->setAttribute('autofocus', 'autofocus') 43 ) 44 ->addRow(_('Expires in less than'), [ 45 (new CCheckBox('filter_expires_state')) 46 ->setChecked($data['filter']['expires_state']) 47 ->setId('filter-expires-state'), 48 (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), 49 (new CNumericBox('filter_expires_days', $data['filter']['expires_days'], 3, false, false, false)) 50 ->setId('filter-expires-days') 51 ->setEnabled($data['filter']['expires_state']) 52 ->setWidth(ZBX_TEXTAREA_NUMERIC_STANDARD_WIDTH), 53 (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), 54 _('days') 55 ]), 56 (new CFormList()) 57 ->addRow(_('Status'), 58 (new CRadioButtonList('filter_status', (int) $data['filter']['status'])) 59 ->addValue(_('Any'), -1) 60 ->addValue(_('Enabled'), ZBX_AUTH_TOKEN_ENABLED) 61 ->addValue(_('Disabled'), ZBX_AUTH_TOKEN_DISABLED) 62 ->setModern(true) 63 ) 64 ]); 65 66$widget = (new CWidget()) 67 ->setTitle(_('API tokens')) 68 ->setTitleSubmenu(getUserSettingsSubmenu()) 69 ->setControls( 70 (new CTag('nav', true, 71 (new CList())->addItem(new CRedirectButton(_('Create API token'), 72 (new CUrl('zabbix.php'))->setArgument('action', 'user.token.edit')) 73 ) 74 ))->setAttribute('aria-label', _('Content controls')) 75 ) 76 ->addItem($filter); 77 78$token_form = (new CForm('get')) 79 ->addVar('action_src', 'user.token.list') 80 ->setName('token_form'); 81 82$token_table = (new CTableInfo()) 83 ->setHeader([ 84 (new CColHeader( 85 (new CCheckBox('all_tokens')) 86 ->onClick("checkAll('".$token_form->getName()."', 'all_tokens', 'tokenids');") 87 ))->addClass(ZBX_STYLE_CELL_WIDTH), 88 make_sorting_header(_('Name'), 'name', $data['sort'], $data['sortorder'], 89 (new CUrl('zabbix.php')) 90 ->setArgument('action', 'user.token.list') 91 ->getUrl() 92 ), 93 make_sorting_header(_('Expires at'), 'expires_at', $data['sort'], $data['sortorder'], 94 (new CUrl('zabbix.php')) 95 ->setArgument('action', 'user.token.list') 96 ->getUrl() 97 ), 98 _('Created at'), 99 make_sorting_header(_('Last accessed at'), 'lastaccess', $data['sort'], $data['sortorder'], 100 (new CUrl('zabbix.php')) 101 ->setArgument('action', 'user.token.list') 102 ->getUrl() 103 ), 104 make_sorting_header(_('Status'), 'status', $data['sort'], $data['sortorder'], 105 (new CUrl('zabbix.php')) 106 ->setArgument('action', 'user.token.list') 107 ->getUrl() 108 ) 109 ]); 110 111foreach ($data['tokens'] as $token) { 112 $name = new CLink($token['name'], (new CUrl('zabbix.php')) 113 ->setArgument('action', 'user.token.edit') 114 ->setArgument('tokenid', $token['tokenid']) 115 ); 116 117 $token_table->addRow([ 118 new CCheckBox('tokenids['.$token['tokenid'].']', $token['tokenid']), 119 (new CCol($name))->addClass(ZBX_STYLE_NOWRAP), 120 (new CSpan(zbx_date2str(DATE_TIME_FORMAT_SECONDS, $token['expires_at'])))->addClass( 121 $token['is_expired'] ? ZBX_STYLE_RED : ZBX_STYLE_GREEN 122 ), 123 zbx_date2str(DATE_TIME_FORMAT_SECONDS, $token['created_at']), 124 zbx_date2str(DATE_TIME_FORMAT_SECONDS, $token['lastaccess']), 125 ($token['status'] == ZBX_AUTH_TOKEN_ENABLED) 126 ? (new CLink(_('Enabled'), (new CUrl('zabbix.php')) 127 ->setArgument('action_src', 'user.token.list') 128 ->setArgument('action', 'token.disable') 129 ->setArgument('tokenids', (array) $token['tokenid']) 130 ->getUrl() 131 )) 132 ->addClass(ZBX_STYLE_LINK_ACTION) 133 ->addClass(ZBX_STYLE_GREEN) 134 ->addSID() 135 : (new CLink(_('Disabled'), (new CUrl('zabbix.php')) 136 ->setArgument('action_src', 'user.token.list') 137 ->setArgument('action', 'token.enable') 138 ->setArgument('tokenids', (array) $token['tokenid']) 139 ->getUrl() 140 )) 141 ->addClass(ZBX_STYLE_LINK_ACTION) 142 ->addClass(ZBX_STYLE_RED) 143 ->addSID() 144 ]); 145} 146 147$token_form->addItem([ 148 $token_table, 149 $data['paging'], 150 new CActionButtonList('action', 'tokenids', [ 151 'token.enable' => ['name' => _('Enable'), 'confirm' => _('Enable selected API tokens?')], 152 'token.disable' => ['name' => _('Disable'), 'confirm' => _('Disable selected API tokens?')], 153 'token.delete' => ['name' => _('Delete'), 'confirm' => _('Delete selected API tokens?')] 154 ], 'user.token') 155]); 156 157$widget 158 ->addItem($token_form) 159 ->show(); 160