]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/dc/UserView.js
ui: tfa: hide digit/duration fields as some auth apps are broken
[pve-manager.git] / www / manager6 / dc / UserView.js
CommitLineData
ee7a4dad
DM
1Ext.define('PVE.dc.UserView', {
2 extend: 'Ext.grid.GridPanel',
3
4 alias: ['widget.pveUserView'],
5
ba93a9c6
DC
6 onlineHelp: 'pveum_users',
7
3ac2a964
DC
8 stateful: true,
9 stateId: 'grid-users',
10
ee7a4dad
DM
11 initComponent : function() {
12 var me = this;
13
14 var caps = Ext.state.Manager.get('GuiCap');
15
16 var store = new Ext.data.Store({
17 id: "users",
18 model: 'pve-users',
19 sorters: {
20 property: 'userid',
21 order: 'DESC'
22 }
23 });
24
25 var reload = function() {
26 store.load();
27 };
28
29 var sm = Ext.create('Ext.selection.RowModel', {});
30
3b1ca3ff 31 var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
ee7a4dad 32 selModel: sm,
3b1ca3ff 33 baseurl: '/access/users/',
ee7a4dad
DM
34 enableFn: function(rec) {
35 if (!caps.access['User.Modify']) {
36 return false;
37 }
38 return rec.data.userid !== 'root@pam';
39 },
3b1ca3ff
DC
40 callback: function() {
41 reload();
ee7a4dad
DM
42 }
43 });
44
45 var run_editor = function() {
46 var rec = sm.getSelection()[0];
47 if (!rec || !caps.access['User.Modify']) {
48 return;
49 }
50
51 var win = Ext.create('PVE.dc.UserEdit',{
52 userid: rec.data.userid
53 });
54 win.on('destroy', reload);
55 win.show();
56 };
57
5720fafa 58 var edit_btn = new Proxmox.button.Button({
ee7a4dad
DM
59 text: gettext('Edit'),
60 disabled: true,
61 enableFn: function(rec) {
62 return !!caps.access['User.Modify'];
63 },
64 selModel: sm,
65 handler: run_editor
66 });
67
5720fafa 68 var pwchange_btn = new Proxmox.button.Button({
ee7a4dad
DM
69 text: gettext('Password'),
70 disabled: true,
71 selModel: sm,
72 handler: function(btn, event, rec) {
83c52beb 73 var win = Ext.create('Proxmox.window.PasswordEdit', {
ee7a4dad
DM
74 userid: rec.data.userid
75 });
76 win.on('destroy', reload);
77 win.show();
78 }
79 });
80
24d2ed8c 81 var tfachange_btn = new Proxmox.button.Button({
31675561 82 text: 'TFA',
24d2ed8c
WB
83 disabled: true,
84 selModel: sm,
85 handler: function(btn, event, rec) {
86 var win = Ext.create('PVE.window.TFAEdit',{
87 userid: rec.data.userid
88 });
89 win.on('destroy', reload);
90 win.show();
91 }
92 });
93
ee7a4dad
DM
94 var tbar = [
95 {
96 text: gettext('Add'),
97 disabled: !caps.access['User.Modify'],
98 handler: function() {
99 var win = Ext.create('PVE.dc.UserEdit',{
100 });
101 win.on('destroy', reload);
102 win.show();
103 }
104 },
24d2ed8c 105 edit_btn, remove_btn, pwchange_btn, tfachange_btn
ee7a4dad
DM
106 ];
107
ee7a4dad
DM
108 var render_username = function(userid) {
109 return userid.match(/^(.+)(@[^@]+)$/)[1];
110 };
111
112 var render_realm = function(userid) {
113 return userid.match(/@([^@]+)$/)[1];
114 };
115
116 Ext.apply(me, {
117 store: store,
118 selModel: sm,
ee7a4dad
DM
119 tbar: tbar,
120 viewConfig: {
121 trackOver: false
122 },
123 columns: [
124 {
125 header: gettext('User name'),
126 width: 200,
127 sortable: true,
128 renderer: render_username,
129 dataIndex: 'userid'
130 },
131 {
132 header: gettext('Realm'),
133 width: 100,
134 sortable: true,
135 renderer: render_realm,
136 dataIndex: 'userid'
137 },
138 {
139 header: gettext('Enabled'),
140 width: 80,
141 sortable: true,
e7ade592 142 renderer: Proxmox.Utils.format_boolean,
ee7a4dad
DM
143 dataIndex: 'enable'
144 },
145 {
146 header: gettext('Expire'),
147 width: 80,
148 sortable: true,
e7ade592 149 renderer: Proxmox.Utils.format_expire,
ee7a4dad
DM
150 dataIndex: 'expire'
151 },
152 {
153 header: gettext('Name'),
154 width: 150,
155 sortable: true,
6ad4be69 156 renderer: PVE.Utils.render_full_name,
ee7a4dad
DM
157 dataIndex: 'firstname'
158 },
159 {
ee7a4dad
DM
160 header: gettext('Comment'),
161 sortable: false,
2eb0767b 162 renderer: Ext.String.htmlEncode,
ee7a4dad
DM
163 dataIndex: 'comment',
164 flex: 1
165 }
166 ],
167 listeners: {
c0b3df6e 168 activate: reload,
ee7a4dad
DM
169 itemdblclick: run_editor
170 }
171 });
172
173 me.callParent();
174 }
175});