]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/dc/UserView.js
ui: eslint: fix trailing comma and comma related whitespaces errors
[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',
2a4971d8
TL
19 sorters: {
20 property: 'userid',
f6710aac
TL
21 order: 'DESC',
22 },
ee7a4dad
DM
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();
f6710aac 42 },
ee7a4dad 43 });
2a4971d8 44
ee7a4dad
DM
45 var run_editor = function() {
46 var rec = sm.getSelection()[0];
47 if (!rec || !caps.access['User.Modify']) {
48 return;
49 }
50
f6710aac
TL
51 var win = Ext.create('PVE.dc.UserEdit', {
52 userid: rec.data.userid,
ee7a4dad
DM
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,
f6710aac 65 handler: run_editor,
ee7a4dad
DM
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', {
f6710aac 74 userid: rec.data.userid,
ee7a4dad
DM
75 });
76 win.on('destroy', reload);
77 win.show();
f6710aac 78 },
ee7a4dad
DM
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) {
ca7f3b34 86 var d = rec.data;
ac3daab8 87 var tfa_type = PVE.Parser.parseTfaType(d.keys);
f6710aac 88 var win = Ext.create('PVE.window.TFAEdit', {
ac3daab8 89 tfa_type: tfa_type,
f6710aac 90 userid: d.userid,
24d2ed8c
WB
91 });
92 win.on('destroy', reload);
93 win.show();
f6710aac 94 },
24d2ed8c
WB
95 });
96
98d48570
FG
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', {
f6710aac 103 userid: rec.data.userid,
98d48570
FG
104 });
105 win.show();
f6710aac 106 },
98d48570
FG
107 });
108
ee7a4dad
DM
109 var tbar = [
110 {
111 text: gettext('Add'),
112 disabled: !caps.access['User.Modify'],
113 handler: function() {
f6710aac 114 var win = Ext.create('PVE.dc.UserEdit', {
ee7a4dad
DM
115 });
116 win.on('destroy', reload);
117 win.show();
f6710aac 118 },
ee7a4dad 119 },
f6710aac 120 edit_btn, remove_btn, pwchange_btn, tfachange_btn, perm_btn,
ee7a4dad
DM
121 ];
122
ee7a4dad 123 var render_username = function(userid) {
1011b569 124 return Ext.String.htmlEncode(userid.match(/^(.+)(@[^@]+)$/)[1]);
ee7a4dad
DM
125 };
126
127 var render_realm = function(userid) {
1011b569 128 return Ext.String.htmlEncode(userid.match(/@([^@]+)$/)[1]);
ee7a4dad
DM
129 };
130
131 Ext.apply(me, {
132 store: store,
133 selModel: sm,
ee7a4dad
DM
134 tbar: tbar,
135 viewConfig: {
f6710aac 136 trackOver: false,
ee7a4dad
DM
137 },
138 columns: [
139 {
140 header: gettext('User name'),
141 width: 200,
142 sortable: true,
143 renderer: render_username,
f6710aac 144 dataIndex: 'userid',
ee7a4dad
DM
145 },
146 {
147 header: gettext('Realm'),
148 width: 100,
149 sortable: true,
150 renderer: render_realm,
f6710aac 151 dataIndex: 'userid',
ee7a4dad
DM
152 },
153 {
154 header: gettext('Enabled'),
155 width: 80,
156 sortable: true,
e7ade592 157 renderer: Proxmox.Utils.format_boolean,
f6710aac 158 dataIndex: 'enable',
ee7a4dad
DM
159 },
160 {
161 header: gettext('Expire'),
162 width: 80,
163 sortable: true,
2a4971d8 164 renderer: Proxmox.Utils.format_expire,
f6710aac 165 dataIndex: 'expire',
ee7a4dad
DM
166 },
167 {
168 header: gettext('Name'),
169 width: 150,
170 sortable: true,
6ad4be69 171 renderer: PVE.Utils.render_full_name,
f6710aac 172 dataIndex: 'firstname',
ee7a4dad 173 },
bf0754fd
TL
174 {
175 header: 'TFA',
176 width: 50,
177 sortable: true,
178 renderer: function(v) {
da898810
WB
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 }
bf0754fd 187 },
f6710aac 188 dataIndex: 'keys',
bf0754fd 189 },
ee7a4dad 190 {
ee7a4dad
DM
191 header: gettext('Comment'),
192 sortable: false,
2eb0767b 193 renderer: Ext.String.htmlEncode,
ee7a4dad 194 dataIndex: 'comment',
f6710aac
TL
195 flex: 1,
196 },
ee7a4dad
DM
197 ],
198 listeners: {
c0b3df6e 199 activate: reload,
f6710aac
TL
200 itemdblclick: run_editor,
201 },
ee7a4dad
DM
202 });
203
204 me.callParent();
f3c90a1d
DC
205
206 Proxmox.Utils.monStoreErrors(me, store);
f6710aac 207 },
ee7a4dad 208});