]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - src/panel/PermissionView.js
1 Ext
.define('pmx-permissions', {
2 extend
: 'Ext.data.TreeModel',
6 type
: 'boolean', name
: 'propagate',
11 Ext
.define('Proxmox.panel.PermissionViewPanel', {
12 extend
: 'Ext.tree.Panel',
13 xtype
: 'proxmoxPermissionViewPanel',
19 sortableColumns
: false,
21 auth_id_name
: "userid",
27 header
: gettext('Path') + '/' + gettext('Permission'),
32 header
: gettext('Propagate'),
33 dataIndex
: 'propagate',
35 renderer: function(value
) {
36 if (Ext
.isDefined(value
)) {
37 return Proxmox
.Utils
.format_boolean(value
);
44 initComponent: function() {
47 Proxmox
.Utils
.API2Request({
48 url
: '/access/permissions?' + encodeURIComponent(me
.auth_id_name
) + '=' + encodeURIComponent(me
.auth_id
),
50 failure: function(response
, opts
) {
51 Proxmox
.Utils
.setErrorMask(me
, response
.htmlStatus
);
53 success: function(response
, opts
) {
54 Proxmox
.Utils
.setErrorMask(me
, false);
55 let result
= Ext
.decode(response
.responseText
);
56 let data
= result
.data
|| {};
70 Ext
.Object
.each(data
, function(path
, perms
) {
76 Ext
.Object
.each(perms
, function(perm
, propagate
) {
80 propagate
: propagate
=== 1 || propagate
=== true,
81 iconCls
: 'fa fa-fw fa-unlock',
84 path_item
.children
.push(perm_item
);
85 path_item
.expandable
= true;
87 idhash
[path
] = path_item
;
90 Ext
.Object
.each(idhash
, function(path
, item
) {
91 let parent_item
= idhash
['/'];
96 let split_path
= path
.split('/');
97 while (split_path
.pop()) {
98 let parent_path
= split_path
.join('/');
99 if (idhash
[parent_path
]) {
100 parent_item
= idhash
[parent_path
];
105 parent_item
.children
.push(item
);
108 me
.setRootNode(root
);
114 me
.store
.sorters
.add(new Ext
.util
.Sorter({
115 sorterFn: function(rec1
, rec2
) {
116 let v1
= rec1
.data
.text
,
118 if (rec1
.data
.type
!== rec2
.data
.type
) {
124 } else if (v1
< v2
) {
133 Ext
.define('Proxmox.PermissionView', {
134 extend
: 'Ext.window.Window',
135 alias
: 'widget.userShowPermissionWindow',
136 mixins
: ['Proxmox.Mixin.CBind'],
143 title
: (get) => Ext
.String
.htmlEncode(get('auth_id')) +
144 ` - ${gettext('Granted Permissions')}`,
147 xtype
: 'proxmoxPermissionViewPanel',
149 auth_id
: '{auth_id}',
150 auth_id_name
: '{auth_id_name}',