]> git.proxmox.com Git - proxmox-backup.git/blame - www/config/UserView.js
fix ipv6 handling for remotes/sync jobs
[proxmox-backup.git] / www / config / UserView.js
CommitLineData
88acc861
DC
1Ext.define('pmx-users', {
2 extend: 'Ext.data.Model',
3 fields: [
4 'userid', 'firstname', 'lastname', 'email', 'comment',
5 { type: 'boolean', name: 'enable', defaultValue: true },
6 { type: 'date', dateFormat: 'timestamp', name: 'expire' },
7 ],
8 idProperty: 'userid',
9 proxy: {
10 type: 'proxmox',
11 url: '/api2/json/access/users',
12 },
13});
14
15Ext.define('PBS.config.UserView', {
16 extend: 'Ext.grid.GridPanel',
17 alias: 'widget.pbsUserView',
18
19 stateful: true,
20 stateId: 'grid-users',
21
22 title: gettext('Users'),
23
24 controller: {
25 xclass: 'Ext.app.ViewController',
26
27 addUser: function() {
28 let me = this;
29 Ext.create('PBS.window.UserEdit', {
30 listeners: {
31 destroy: function() {
32 me.reload();
33 },
34 },
35 }).show();
36 },
37
38 editUser: function() {
39 let me = this;
40 let view = me.getView();
41 let selection = view.getSelection();
42 if (selection.length < 1) return;
43
44 Ext.create('PBS.window.UserEdit', {
45 userid: selection[0].data.userid,
46 listeners: {
47 destroy: function() {
48 me.reload();
49 },
50 },
51 }).show();
52 },
53
16f0afbf
AL
54 setPassword: function() {
55 let me = this;
56 let view = me.getView();
57 let selection = view.getSelection();
58
59 if (selection.length < 1) return;
60
61 Ext.create('PBS.window.UserPassword', {
62 url: '/api2/extjs/access/users/' + selection[0].data.userid,
63 }).show();
64 },
65
88acc861
DC
66 renderUsername: function(userid) {
67 return Ext.String.htmlEncode(userid.match(/^(.+)@([^@]+)$/)[1]);
68 },
69
70 renderRealm: function(userid) {
71 return Ext.String.htmlEncode(userid.match(/^(.+)@([^@]+)$/)[2]);
72 },
73
74 reload: function() { this.getView().getStore().rstore.load(); },
12710fd3
DC
75
76 init: function(view) {
77 Proxmox.Utils.monStoreErrors(view, view.getStore().rstore);
78 },
88acc861
DC
79 },
80
81 listeners: {
82 activate: 'reload',
83 itemdblclick: 'editUser',
84 },
85
86 store: {
87 type: 'diff',
88 autoDestroy: true,
89 autoDestroyRstore: true,
90 sorters: 'userid',
91 rstore: {
92 type: 'update',
93 storeid: 'pmx-users',
94 model: 'pmx-users',
95 autoStart: true,
96 interval: 5000,
97 },
98 },
99
100 tbar: [
101 {
102 xtype: 'proxmoxButton',
103 text: gettext('Add'),
104 handler: 'addUser',
105 selModel: false,
106 },
107 {
108 xtype: 'proxmoxButton',
109 text: gettext('Edit'),
110 handler: 'editUser',
111 disabled: true,
112 },
16f0afbf
AL
113 {
114 xtype: 'proxmoxButton',
115 text: gettext('Password'),
116 handler: 'setPassword',
117 disabled: true,
118 },
88acc861
DC
119 {
120 xtype: 'proxmoxStdRemoveButton',
121 baseurl: '/access/users/',
122 enableFn: (rec) => rec.data.userid !== 'root@pam',
123 callback: 'reload',
124 },
125 ],
126
127 viewConfig: {
128 trackOver: false,
129 },
130
131 columns: [
132 {
133 header: gettext('User name'),
134 width: 200,
135 sortable: true,
136 renderer: 'renderUsername',
137 dataIndex: 'userid',
138 },
139 {
140 header: gettext('Realm'),
141 width: 100,
142 sortable: true,
143 renderer: 'renderRealm',
144 dataIndex: 'userid',
145 },
146 {
147 header: gettext('Enabled'),
148 width: 80,
149 sortable: true,
150 renderer: Proxmox.Utils.format_boolean,
151 dataIndex: 'enable',
152 },
153 {
154 header: gettext('Expire'),
155 width: 80,
156 sortable: true,
157 renderer: Proxmox.Utils.format_expire,
158 dataIndex: 'expire',
159 },
160 {
161 header: gettext('Name'),
162 width: 150,
163 sortable: true,
164 dataIndex: 'firstname',
165 },
166 {
167 header: gettext('Comment'),
168 sortable: false,
169 renderer: Ext.String.htmlEncode,
170 dataIndex: 'comment',
171 flex: 1,
172 },
173 ],
174});