Signed-off-by: Fabian Grünbichler <f.gruenbich...@proxmox.com> --- www/manager6/Workspace.js | 10 +++ www/manager6/dc/TokenEdit.js | 2 +- www/manager6/dc/TokenView.js | 122 ++++++++++++++++++++++++++++------- 3 files changed, 108 insertions(+), 26 deletions(-)
diff --git a/www/manager6/Workspace.js b/www/manager6/Workspace.js index 335e7e61..b2bf142d 100644 --- a/www/manager6/Workspace.js +++ b/www/manager6/Workspace.js @@ -358,6 +358,16 @@ Ext.define('PVE.StdWorkspace', { win.show(); } }, + { + text: gettext('API Tokens'), + iconCls: 'fa fa-fw fa-user-o', + handler: function(btn, event, rec) { + var win = Ext.create('PVE.window.TokenView',{ + userid: Proxmox.UserName + }); + win.show(); + } + }, '-', { iconCls: 'fa fa-fw fa-sign-out', diff --git a/www/manager6/dc/TokenEdit.js b/www/manager6/dc/TokenEdit.js index c047c175..1af299da 100644 --- a/www/manager6/dc/TokenEdit.js +++ b/www/manager6/dc/TokenEdit.js @@ -23,7 +23,7 @@ Ext.define('PVE.dc.TokenEdit', { var column1 = [ { - xtype: me.isCreate ? 'pveUserSelector' : 'displayfield', + xtype: me.isCreate && !me.fixedUser ? 'pveUserSelector' : 'displayfield', name: 'userid', fieldLabel: gettext('User'), value: me.userid, diff --git a/www/manager6/dc/TokenView.js b/www/manager6/dc/TokenView.js index 201aac50..3a6eaad0 100644 --- a/www/manager6/dc/TokenView.js +++ b/www/manager6/dc/TokenView.js @@ -10,11 +10,13 @@ Ext.define('PVE.dc.TokenView', { stateId: 'grid-tokens', // use fixed user - userid: undefined, + fixedUser: undefined, initComponent : function() { var me = this; + fixedUser = me.userid; + var caps = Ext.state.Manager.get('GuiCap'); var store = new Ext.data.Store({ @@ -33,34 +35,64 @@ Ext.define('PVE.dc.TokenView', { }); var reload = function() { - 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 me = this; + + if (me.fixedUser) { + Proxmox.Utils.API2Request({ + url: '/access/users/' + encodeURIComponent(me.fixedUser) + '/token', + 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(token) { var r = {}; - r.id = user.userid + '!' + token.tokenid; - r.userid = user.userid; + r.id = me.fixedUser + '!' + token.tokenid; + r.userid = me.fixedUser; r.tokenid = token.tokenid; r.comment = token.comment; r.expire = token.expire; r.privsep = token.privsep === 1 ? true : false; records.push(r); }); - }); - store.loadData(records); - }, - }); + store.loadData(records); + }, + }); + } else { + 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.userid = user.userid; + r.tokenid = token.tokenid; + r.comment = token.comment; + r.expire = token.expire; + r.privsep = token.privsep === 1 ? true : false; + records.push(r); + }); + }); + store.loadData(records); + }, + }); + } }; var sm = Ext.create('Ext.selection.RowModel', {}); @@ -122,7 +154,10 @@ Ext.define('PVE.dc.TokenView', { handler: function() { var rec = sm.getSelection()[0]; var data = {}; - if (rec && rec.data) { + if (me.fixedUser) { + data.userid = me.fixedUser; + data.fixedUser = true; + } else if (rec && rec.data) { data.userid = rec.data.userid; } var win = Ext.create('PVE.dc.TokenEdit', data); @@ -155,14 +190,16 @@ Ext.define('PVE.dc.TokenView', { width: 200, sortable: true, renderer: render_username, - dataIndex: 'userid' + dataIndex: 'userid', + hidden: !!me.fixedUser }, { header: gettext('Realm'), width: 100, sortable: true, renderer: render_realm, - dataIndex: 'userid' + dataIndex: 'userid', + hidden: !!me.fixedUser }, { header: gettext('Token name'), @@ -198,6 +235,41 @@ Ext.define('PVE.dc.TokenView', { } }); + if (me.fixedUser) { + reload(); + } + + me.callParent(); + } +}); + +Ext.define('PVE.window.TokenView', { + extend: 'Ext.window.Window', + + modal: true, + title: gettext('API Tokens'), + subject: gettext('API Tokens'), + scrollable: true, + layout: 'fit', + width: 800, + height: 400, + + initComponent: function() { + var me = this; + + if (!me.userid) { + throw "no userid given"; + } + + Ext.apply(me, { + subject: gettext('API Tokens') + ' - ' + me.userid, + items: [ + Ext.create('PVE.dc.TokenView', { + fixedUser: me.userid + }) + ] + }); + me.callParent(); } }); -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel