]> git.proxmox.com Git - proxmox-widget-toolkit.git/commitdiff
add window/AuthEditBase from PVE
authorDominik Csapak <d.csapak@proxmox.com>
Fri, 9 Jul 2021 11:42:21 +0000 (13:42 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 9 Jul 2021 12:46:27 +0000 (14:46 +0200)
basically a straight copy, with the exception that it references
Proxmox.Utils.authSchema instead of PVE.Utils.authSchema

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
src/Makefile
src/window/AuthEditBase.js [new file with mode: 0644]

index 23f23601704564985d277d152732fec5ebc63f77..903879e8b0af81c4054c3c08b04369d732685625 100644 (file)
@@ -71,6 +71,7 @@ JSSRC=                                        \
        window/ACMEPluginEdit.js        \
        window/ACMEDomains.js           \
        window/FileBrowser.js           \
+       window/AuthEditBase.js          \
        node/APT.js                     \
        node/APTRepositories.js         \
        node/NetworkEdit.js             \
diff --git a/src/window/AuthEditBase.js b/src/window/AuthEditBase.js
new file mode 100644 (file)
index 0000000..c710242
--- /dev/null
@@ -0,0 +1,88 @@
+Ext.define('Proxmox.window.AuthEditBase', {
+    extend: 'Proxmox.window.Edit',
+
+    isAdd: true,
+
+    fieldDefaults: {
+       labelWidth: 120,
+    },
+
+    initComponent: function() {
+       var me = this;
+
+       me.isCreate = !me.realm;
+
+       if (me.isCreate) {
+           me.url = '/api2/extjs/access/domains';
+           me.method = 'POST';
+       } else {
+           me.url = '/api2/extjs/access/domains/' + me.realm;
+           me.method = 'PUT';
+       }
+
+       let authConfig = Proxmox.Utils.authSchema[me.authType];
+       if (!authConfig) {
+           throw 'unknown auth type';
+       } else if (!authConfig.add && me.isCreate) {
+           throw 'trying to add non addable realm';
+       }
+
+       me.subject = authConfig.name;
+
+       let items;
+       let bodyPadding;
+       if (authConfig.syncipanel) {
+           bodyPadding = 0;
+           items = {
+               xtype: 'tabpanel',
+               region: 'center',
+               layout: 'fit',
+               bodyPadding: 10,
+               items: [
+                   {
+                       title: gettext('General'),
+                       realm: me.realm,
+                       xtype: authConfig.ipanel,
+                       isCreate: me.isCreate,
+                       type: me.authType,
+                   },
+                   {
+                       title: gettext('Sync Options'),
+                       realm: me.realm,
+                       xtype: authConfig.syncipanel,
+                       isCreate: me.isCreate,
+                       type: me.authType,
+                   },
+               ],
+           };
+       } else {
+           items = [{
+               realm: me.realm,
+               xtype: authConfig.ipanel,
+               isCreate: me.isCreate,
+               type: me.authType,
+           }];
+       }
+
+       Ext.apply(me, {
+           items,
+           bodyPadding,
+       });
+
+       me.callParent();
+
+       if (!me.isCreate) {
+           me.load({
+               success: function(response, options) {
+                   var data = response.result.data || {};
+                   // just to be sure (should not happen)
+                   if (data.type !== me.authType) {
+                       me.close();
+                       throw "got wrong auth type";
+                   }
+                   me.setValues(data);
+               },
+           });
+       }
+    },
+});