[pve-devel] [PATCH pve-manager v3 1/1] fix #5076: Added an "audiences" field for Open ID
Alexander Abraham
a.abraham at proxmox.com
Tue Jun 3 11:12:56 CEST 2025
A field for audiences for OpenId was added for users to supply
Open ID audiences as a space-separated array of strings in their
realm configuration. This array of audiences is then saved in the
realm domains config file.
Signed-off-by: Alexander Abraham <a.abraham at proxmox.com>
---
www/manager6/Parser.js | 27 +++++++++++++++++++++++++++
www/manager6/dc/AuthEditBase.js | 8 ++++++++
www/manager6/dc/AuthEditOpenId.js | 10 +++++++++-
3 files changed, 44 insertions(+), 1 deletion(-)
diff --git a/www/manager6/Parser.js b/www/manager6/Parser.js
index 07eb9b17..4868777e 100644
--- a/www/manager6/Parser.js
+++ b/www/manager6/Parser.js
@@ -1,9 +1,36 @@
// Some configuration values are complex strings - so we need parsers/generators for them.
Ext.define('PVE.Parser', {
+
statics: {
// this class only contains static functions
+ checkKeys: function(obj, subject) {
+ var result = false;
+ for (const [key, _] of Object.entries(obj)) {
+ if (key === subject) {
+ result = true;
+ } else {
+ // Do nothing.
+ }
+ }
+ return result;
+ },
+ parseOpenIdAudiences: function(audiences) {
+ var result = [];
+ var container = [];
+ for (var i = 0; i < audiences.length; i++) {
+ var current = audiences[i];
+ if (current === ' ') {
+ result.push(container.join(''));
+ container = [];
+ } else {
+ container.push(current);
+ }
+ }
+ result.push(container.join(''));
+ return result;
+ },
printACME: function(value) {
if (Ext.isArray(value.domains)) {
value.domains = value.domains.join(';');
diff --git a/www/manager6/dc/AuthEditBase.js b/www/manager6/dc/AuthEditBase.js
index e18fbc3b..0110e191 100644
--- a/www/manager6/dc/AuthEditBase.js
+++ b/www/manager6/dc/AuthEditBase.js
@@ -14,6 +14,14 @@ Ext.define('PVE.panel.AuthBase', {
delete values.port;
}
+ var audiences = [];
+ if (PVE.Parser.checkKeys(values, "audiences")) {
+ audiences = PVE.Parser.parseOpenIdAudiences(values.audiences);
+ console.log(audiences);
+ delete values.audiences;
+ values.audiences = audiences;
+ }
+
if (me.isCreate) {
values.type = me.type;
}
diff --git a/www/manager6/dc/AuthEditOpenId.js b/www/manager6/dc/AuthEditOpenId.js
index 544c0de5..0f4b07a9 100644
--- a/www/manager6/dc/AuthEditOpenId.js
+++ b/www/manager6/dc/AuthEditOpenId.js
@@ -111,6 +111,15 @@ Ext.define('PVE.panel.OpenIDInputPanel', {
deleteEmpty: '{!isCreate}',
},
},
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'audiences',
+ fieldLabel: gettext('Audiences'),
+ submitEmpty: false,
+ cbind: {
+ deleteEmpty: '{!isCreate}',
+ },
+ },
],
initComponent: function() {
@@ -123,4 +132,3 @@ Ext.define('PVE.panel.OpenIDInputPanel', {
me.callParent();
},
});
-
--
2.39.5
More information about the pve-devel
mailing list