mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-05-28 06:59:02 +00:00

modeled after UserView and related code. Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
92 lines
1.8 KiB
JavaScript
92 lines
1.8 KiB
JavaScript
Ext.define('PVE.form.TokenSelector', {
|
|
extend: 'Proxmox.form.ComboGrid',
|
|
alias: ['widget.pveTokenSelector'],
|
|
|
|
allowBlank: false,
|
|
autoSelect: false,
|
|
valueField: 'id',
|
|
displayField: 'id',
|
|
|
|
editable: true,
|
|
anyMatch: true,
|
|
forceSelection: true,
|
|
|
|
initComponent: function() {
|
|
var me = this;
|
|
|
|
var store = new Ext.data.Store({
|
|
model: 'pve-tokens',
|
|
sorters: [{
|
|
property: 'userid'
|
|
},
|
|
{
|
|
property: 'tokenid'
|
|
}]
|
|
});
|
|
|
|
Ext.apply(me, {
|
|
store: store,
|
|
listConfig: {
|
|
columns: [
|
|
{
|
|
header: gettext('API Token'),
|
|
sortable: true,
|
|
dataIndex: 'id',
|
|
flex: 1
|
|
},
|
|
{
|
|
header: gettext('Comment'),
|
|
sortable: false,
|
|
dataIndex: 'comment',
|
|
renderer: Ext.String.htmlEncode,
|
|
flex: 1
|
|
}
|
|
]
|
|
}
|
|
});
|
|
|
|
me.callParent();
|
|
|
|
Proxmox.Utils.API2Request({
|
|
url: '/access/users/?full=1',
|
|
method: 'GET',
|
|
failure: function(response, opts) {
|
|
Proxmox.Utils.setErrorMask(me, response.htmlStatus);
|
|
me.load_task.delay(me.load_delay);
|
|
},
|
|
success: function(response, opts) {
|
|
Proxmox.Utils.setErrorMask(me, false);
|
|
var result = Ext.decode(response.responseText);
|
|
var data = result.data || [];
|
|
var records = [];
|
|
Ext.Array.each(data, function(user) {
|
|
tokens = user.tokens || [];
|
|
Ext.Array.each(tokens, function(token) {
|
|
var r = {};
|
|
r.id = user.userid + '!' + token.tokenid;
|
|
r.comment = token.comment;
|
|
records.push(r);
|
|
});
|
|
});
|
|
store.loadData(records);
|
|
},
|
|
});
|
|
}
|
|
|
|
}, function() {
|
|
|
|
Ext.define('pve-tokens', {
|
|
extend: 'Ext.data.Model',
|
|
fields: [
|
|
'id', 'userid', 'tokenid', 'comment',
|
|
{ type: 'boolean', name: 'privsep' },
|
|
{ type: 'date', dateFormat: 'timestamp', name: 'expire' }
|
|
],
|
|
idProperty: 'id'
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|