]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/dc/ACLView.js
jslint: remove trailing commas
[pve-manager.git] / www / manager6 / dc / ACLView.js
CommitLineData
816052d7
DM
1Ext.define('PVE.dc.ACLAdd', {
2 extend: 'PVE.window.Edit',
3 alias: ['widget.pveACLAdd'],
2d306f25
DC
4 url: '/access/acl',
5 method: 'PUT',
6 isAdd: true,
816052d7
DM
7 initComponent : function() {
8 /*jslint confusion: true */
9 var me = this;
10
11 me.create = true;
12
13 var items = [
14 {
15 xtype: me.path ? 'hiddenfield' : 'textfield',
16 name: 'path',
17 value: me.path,
18 allowBlank: false,
19 fieldLabel: gettext('Path')
20 }
21 ];
22
23 if (me.aclType === 'group') {
24 me.subject = gettext("Group Permission");
25 items.push({
26 xtype: 'pveGroupSelector',
27 name: 'groups',
28 fieldLabel: gettext('Group')
29 });
30 } else if (me.aclType === 'user') {
31 me.subject = gettext("User Permission");
32 items.push({
33 xtype: 'pveUserSelector',
34 name: 'users',
35 fieldLabel: gettext('User')
36 });
37 } else {
38 throw "unknown ACL type";
39 }
40
41 items.push({
42 xtype: 'pveRoleSelector',
43 name: 'roles',
44 value: 'NoAccess',
45 fieldLabel: gettext('Role')
46 });
47
48 if (!me.path) {
49 items.push({
50 xtype: 'pvecheckbox',
51 name: 'propagate',
52 checked: true,
53 fieldLabel: gettext('Propagate')
54 });
55 }
56
57 var ipanel = Ext.create('PVE.panel.InputPanel', {
58 items: items
59 });
60
61 Ext.apply(me, {
816052d7
DM
62 items: [ ipanel ]
63 });
a9f71282 64
816052d7
DM
65 me.callParent();
66 }
67});
68
69Ext.define('PVE.dc.ACLView', {
70 extend: 'Ext.grid.GridPanel',
71
72 alias: ['widget.pveACLView'],
73
74 // use fixed path
75 path: undefined,
76
77 initComponent : function() {
78 var me = this;
79
2d306f25 80 var store = Ext.create('Ext.data.Store',{
816052d7
DM
81 model: 'pve-acl',
82 proxy: {
83 type: 'pve',
84 url: "/api2/json/access/acl"
85 },
a9f71282
DC
86 sorters: {
87 property: 'path',
88 order: 'DESC'
816052d7
DM
89 }
90 });
91
92 if (me.path) {
2d306f25 93 store.addFilter(Ext.create('Ext.util.Filter',{
816052d7
DM
94 filterFn: function(item) {
95 if (item.data.path === me.path) {
96 return true;
97 }
98 }
99 }));
100 }
101
102 var render_ugid = function(ugid, metaData, record) {
103 if (record.data.type == 'group') {
104 return '@' + ugid;
105 }
106
107 return ugid;
108 };
109
110 var columns = [
111 {
112 header: gettext('User') + '/' + gettext('Group'),
113 flex: 1,
114 sortable: true,
115 renderer: render_ugid,
116 dataIndex: 'ugid'
117 },
118 {
119 header: gettext('Role'),
120 flex: 1,
121 sortable: true,
122 dataIndex: 'roleid'
123 }
124 ];
125
126 if (!me.path) {
127 columns.unshift({
128 header: gettext('Path'),
129 flex: 1,
130 sortable: true,
131 dataIndex: 'path'
132 });
133 columns.push({
134 header: gettext('Propagate'),
135 width: 80,
136 sortable: true,
137 dataIndex: 'propagate'
138 });
139 }
140
141 var sm = Ext.create('Ext.selection.RowModel', {});
142
143 var reload = function() {
144 store.load();
145 };
146
147 var remove_btn = new PVE.button.Button({
148 text: gettext('Remove'),
149 disabled: true,
150 selModel: sm,
151 confirmMsg: gettext('Are you sure you want to remove this entry'),
152 handler: function(btn, event, rec) {
a9f71282
DC
153 var params = {
154 'delete': 1,
155 path: rec.data.path,
816052d7
DM
156 roles: rec.data.roleid
157 };
158 if (rec.data.type === 'group') {
159 params.groups = rec.data.ugid;
160 } else if (rec.data.type === 'user') {
161 params.users = rec.data.ugid;
162 } else {
163 throw 'unknown data type';
164 }
165
166 PVE.Utils.API2Request({
167 url: '/access/acl',
168 params: params,
169 method: 'PUT',
170 waitMsgTarget: me,
171 callback: function() {
172 reload();
173 },
174 failure: function (response, opts) {
175 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
176 }
177 });
178 }
179 });
180
181 PVE.Utils.monStoreErrors(me, store);
182
183 Ext.apply(me, {
184 store: store,
185 selModel: sm,
186 stateful: false,
187 tbar: [
188 {
189 text: gettext('Add'),
2d306f25
DC
190 menu: {
191 xtype: 'menu',
816052d7
DM
192 items: [
193 {
194 text: gettext('Group Permission'),
25f08bac 195 iconCls: 'fa fa-fw fa-group',
816052d7
DM
196 handler: function() {
197 var win = Ext.create('PVE.dc.ACLAdd',{
198 aclType: 'group',
199 path: me.path
200 });
201 win.on('destroy', reload);
202 win.show();
203 }
204 },
205 {
206 text: gettext('User Permission'),
25f08bac 207 iconCls: 'fa fa-fw fa-user',
816052d7
DM
208 handler: function() {
209 var win = Ext.create('PVE.dc.ACLAdd',{
210 aclType: 'user',
211 path: me.path
212 });
213 win.on('destroy', reload);
214 win.show();
215 }
216 }
217 ]
22f2f9d6 218 }
816052d7
DM
219 },
220 remove_btn
221 ],
222 viewConfig: {
223 trackOver: false
224 },
225 columns: columns,
226 listeners: {
c0b3df6e 227 activate: reload
816052d7
DM
228 }
229 });
230
231 me.callParent();
232 }
233}, function() {
234
235 Ext.define('pve-acl', {
236 extend: 'Ext.data.Model',
a9f71282
DC
237 fields: [
238 'path', 'type', 'ugid', 'roleid',
239 {
240 name: 'propagate',
816052d7 241 type: 'boolean'
a9f71282 242 }
816052d7
DM
243 ]
244 });
245
2d306f25 246});