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