]> git.proxmox.com Git - proxmox-widget-toolkit.git/commitdiff
add generic OpenIDInputPanel
authorDominik Csapak <d.csapak@proxmox.com>
Fri, 9 Jul 2021 11:42:24 +0000 (13:42 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 9 Jul 2021 12:46:27 +0000 (14:46 +0200)
mostly copied from pve, but includes a realm displayeditfield
as well as the comment field

in contrast to the inputpanel in PVE, this is not extended
from a base input panel (where in pve the comment/realm/default/etc.
fields come from)

we do this, since not all products can define a default or tfa

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

index 0f094c6308931637f71088f04bcfb7574c4657bc..41b4dc2eef941a77bea762047b0e635c45cf6a2e 100644 (file)
@@ -73,6 +73,7 @@ JSSRC=                                        \
        window/ACMEDomains.js           \
        window/FileBrowser.js           \
        window/AuthEditBase.js          \
        window/ACMEDomains.js           \
        window/FileBrowser.js           \
        window/AuthEditBase.js          \
+       window/AuthEditOpenId.js        \
        node/APT.js                     \
        node/APTRepositories.js         \
        node/NetworkEdit.js             \
        node/APT.js                     \
        node/APTRepositories.js         \
        node/NetworkEdit.js             \
index 42cc02c4defff002c87dc6bd82953901e721ac11..167679ddefa763aa9aea44dcacd4d15a14a2dc36 100644 (file)
@@ -1158,6 +1158,15 @@ utilities: {
            edit: false,
            pwchange: true,
        },
            edit: false,
            pwchange: true,
        },
+       openid: {
+           name: gettext('OpenID Connect Server'),
+           ipanel: 'pmxAuthOpenIDPanel',
+           add: true,
+           edit: true,
+           tfa: false,
+           pwchange: false,
+           iconCls: 'pmx-itype-icon-openid-logo',
+       },
     },
 
     // to add or change existing for product specific ones
     },
 
     // to add or change existing for product specific ones
diff --git a/src/window/AuthEditOpenId.js b/src/window/AuthEditOpenId.js
new file mode 100644 (file)
index 0000000..499e253
--- /dev/null
@@ -0,0 +1,96 @@
+Ext.define('Proxmox.panel.OpenIDInputPanel', {
+    extend: 'Proxmox.panel.InputPanel',
+    xtype: 'pmxAuthOpenIDPanel',
+    mixins: ['Proxmox.Mixin.CBind'],
+
+    type: 'openid',
+
+    onGetValues: function(values) {
+       let me = this;
+
+       if (me.isCreate) {
+           values.type = me.type;
+       }
+
+       return values;
+    },
+
+    columnT: [
+       {
+           xtype: 'textfield',
+           name: 'issuer-url',
+           fieldLabel: gettext('Issuer URL'),
+           allowBlank: false,
+       },
+    ],
+
+    column1: [
+       {
+           xtype: 'pmxDisplayEditField',
+           name: 'realm',
+           cbind: {
+               value: '{realm}',
+               editable: '{isCreate}',
+           },
+           fieldLabel: gettext('Realm'),
+           allowBlank: false,
+       },
+       {
+           xtype: 'proxmoxtextfield',
+           fieldLabel: gettext('Client ID'),
+           name: 'client-id',
+           allowBlank: false,
+       },
+       {
+           xtype: 'proxmoxtextfield',
+           fieldLabel: gettext('Client Key'),
+           cbind: {
+               deleteEmpty: '{!isCreate}',
+           },
+           name: 'client-key',
+       },
+    ],
+
+    column2: [
+       {
+           xtype: 'proxmoxcheckbox',
+           fieldLabel: gettext('Autocreate Users'),
+           name: 'autocreate',
+           value: 0,
+           cbind: {
+               deleteEmpty: '{!isCreate}',
+           },
+       },
+       {
+           xtype: 'pmxDisplayEditField',
+           name: 'username-claim',
+           editConfig: {
+               xtype: 'proxmoxKVComboBox',
+           },
+           cbind: {
+               value: get => get('isCreate') ? '__default__' : Proxmox.Utils.defaultText,
+               deleteEmpty: '{!isCreate}',
+               editable: '{isCreate}',
+           },
+           fieldLabel: gettext('Username Claim'),
+           comboItems: [
+               ['__default__', Proxmox.Utils.defaultText],
+               ['subject', 'subject'],
+               ['username', 'username'],
+               ['email', 'email'],
+           ],
+       },
+    ],
+
+    columnB: [
+       {
+           xtype: 'textfield',
+           name: 'comment',
+           fieldLabel: gettext('Comment'),
+           cbind: {
+               deleteEmpty: '{!isCreate}',
+           },
+       },
+    ],
+});
+