]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/dc/UserView.js
ui: dc/UserEdit: eslint fixes and code cleanup/refactoring
[pve-manager.git] / www / manager6 / dc / UserView.js
1 Ext.define('PVE.dc.UserView', {
2 extend: 'Ext.grid.GridPanel',
3
4 alias: ['widget.pveUserView'],
5
6 onlineHelp: 'pveum_users',
7
8 stateful: true,
9 stateId: 'grid-users',
10
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
31 var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
32 selModel: sm,
33 baseurl: '/access/users/',
34 enableFn: function(rec) {
35 if (!caps.access['User.Modify']) {
36 return false;
37 }
38 return rec.data.userid !== 'root@pam';
39 },
40 callback: function() {
41 reload();
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
58 var edit_btn = new Proxmox.button.Button({
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
68 var pwchange_btn = new Proxmox.button.Button({
69 text: gettext('Password'),
70 disabled: true,
71 selModel: sm,
72 handler: function(btn, event, rec) {
73 var win = Ext.create('Proxmox.window.PasswordEdit', {
74 userid: rec.data.userid,
75 });
76 win.on('destroy', reload);
77 win.show();
78 },
79 });
80
81 var tfachange_btn = new Proxmox.button.Button({
82 text: 'TFA',
83 disabled: true,
84 selModel: sm,
85 handler: function(btn, event, rec) {
86 var d = rec.data;
87 var tfa_type = PVE.Parser.parseTfaType(d.keys);
88 var win = Ext.create('PVE.window.TFAEdit', {
89 tfa_type: tfa_type,
90 userid: d.userid,
91 });
92 win.on('destroy', reload);
93 win.show();
94 },
95 });
96
97 var perm_btn = new Proxmox.button.Button({
98 text: gettext('Permissions'),
99 disabled: false,
100 selModel: sm,
101 handler: function(btn, event, rec) {
102 var win = Ext.create('PVE.dc.PermissionView', {
103 userid: rec.data.userid,
104 });
105 win.show();
106 },
107 });
108
109 var tbar = [
110 {
111 text: gettext('Add'),
112 disabled: !caps.access['User.Modify'],
113 handler: function() {
114 var win = Ext.create('PVE.dc.UserEdit', {
115 });
116 win.on('destroy', reload);
117 win.show();
118 },
119 },
120 edit_btn, remove_btn, pwchange_btn, tfachange_btn, perm_btn,
121 ];
122
123 var render_username = function(userid) {
124 return Ext.String.htmlEncode(userid.match(/^(.+)(@[^@]+)$/)[1]);
125 };
126
127 var render_realm = function(userid) {
128 return Ext.String.htmlEncode(userid.match(/@([^@]+)$/)[1]);
129 };
130
131 Ext.apply(me, {
132 store: store,
133 selModel: sm,
134 tbar: tbar,
135 viewConfig: {
136 trackOver: false,
137 },
138 columns: [
139 {
140 header: gettext('User name'),
141 width: 200,
142 sortable: true,
143 renderer: render_username,
144 dataIndex: 'userid',
145 },
146 {
147 header: gettext('Realm'),
148 width: 100,
149 sortable: true,
150 renderer: render_realm,
151 dataIndex: 'userid',
152 },
153 {
154 header: gettext('Enabled'),
155 width: 80,
156 sortable: true,
157 renderer: Proxmox.Utils.format_boolean,
158 dataIndex: 'enable',
159 },
160 {
161 header: gettext('Expire'),
162 width: 80,
163 sortable: true,
164 renderer: Proxmox.Utils.format_expire,
165 dataIndex: 'expire',
166 },
167 {
168 header: gettext('Name'),
169 width: 150,
170 sortable: true,
171 renderer: PVE.Utils.render_full_name,
172 dataIndex: 'firstname',
173 },
174 {
175 header: 'TFA',
176 width: 50,
177 sortable: true,
178 renderer: function(v) {
179 var tfa_type = PVE.Parser.parseTfaType(v);
180 if (tfa_type === undefined) {
181 return Proxmox.Utils.noText;
182 } else if (tfa_type === 1) {
183 return Proxmox.Utils.yesText;
184 } else {
185 return tfa_type;
186 }
187 },
188 dataIndex: 'keys',
189 },
190 {
191 header: gettext('Comment'),
192 sortable: false,
193 renderer: Ext.String.htmlEncode,
194 dataIndex: 'comment',
195 flex: 1,
196 },
197 ],
198 listeners: {
199 activate: reload,
200 itemdblclick: run_editor,
201 },
202 });
203
204 me.callParent();
205
206 Proxmox.Utils.monStoreErrors(me, store);
207 },
208 });