]>
Commit | Line | Data |
---|---|---|
c831fbde FG |
1 | Ext.define('PVE.form.TokenSelector', { |
2 | extend: 'Proxmox.form.ComboGrid', | |
3 | alias: ['widget.pveTokenSelector'], | |
4 | ||
5 | allowBlank: false, | |
6 | autoSelect: false, | |
c831fbde FG |
7 | displayField: 'id', |
8 | ||
9 | editable: true, | |
10 | anyMatch: true, | |
11 | forceSelection: true, | |
12 | ||
4dedd333 TL |
13 | store: { |
14 | model: 'pve-tokens', | |
15 | autoLoad: true, | |
16 | proxy: { | |
17 | type: 'proxmox', | |
18 | url: 'api2/json/access/users', | |
19 | extraParams: { 'full': 1 }, | |
20 | }, | |
21 | sorters: 'id', | |
22 | listeners: { | |
23 | load: function(store, records, success) { | |
24 | let tokens = []; | |
25 | for (const rec of records) { | |
26 | let user = rec.data; | |
27 | if (!user.tokens || user.tokens.length === 0) continue; | |
c831fbde | 28 | |
4dedd333 TL |
29 | for (token of user.tokens) { |
30 | tokens.push({ | |
31 | id: `${user.userid}!${token.tokenid}`, | |
32 | comment: token.comment, | |
33 | }); | |
c831fbde | 34 | } |
4dedd333 TL |
35 | } |
36 | store.loadData(tokens); | |
c831fbde | 37 | }, |
4dedd333 TL |
38 | }, |
39 | }, | |
c831fbde | 40 | |
4dedd333 TL |
41 | listConfig: { |
42 | columns: [ | |
43 | { | |
44 | header: gettext('API Token'), | |
45 | sortable: true, | |
46 | dataIndex: 'id', | |
1011b569 | 47 | renderer: Ext.String.htmlEncode, |
f6710aac | 48 | flex: 1, |
4dedd333 TL |
49 | }, |
50 | { | |
51 | header: gettext('Comment'), | |
52 | sortable: false, | |
53 | dataIndex: 'comment', | |
54 | renderer: Ext.String.htmlEncode, | |
f6710aac TL |
55 | flex: 1, |
56 | }, | |
57 | ], | |
4dedd333 | 58 | }, |
c831fbde | 59 | }, function() { |
c831fbde FG |
60 | Ext.define('pve-tokens', { |
61 | extend: 'Ext.data.Model', | |
62 | fields: [ | |
63 | 'id', 'userid', 'tokenid', 'comment', | |
64 | { type: 'boolean', name: 'privsep' }, | |
f6710aac | 65 | { type: 'date', dateFormat: 'timestamp', name: 'expire' }, |
c831fbde | 66 | ], |
f6710aac | 67 | idProperty: 'id', |
c831fbde | 68 | }); |
c831fbde | 69 | }); |