[pve-devel] [PATCH v3 manager 9/9] www: add TokenView with fixed userid
Fabian Grünbichler
f.gruenbichler at proxmox.com
Tue Jan 21 13:54:29 CET 2020
Signed-off-by: Fabian Grünbichler <f.gruenbichler at 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
More information about the pve-devel
mailing list