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