]>
Commit | Line | Data |
---|---|---|
ee7a4dad DM |
1 | Ext.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 | }); |