]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - Utils.js
fix #2758: reject 'tfa' cookies
[proxmox-widget-toolkit.git] / Utils.js
index 6d1b24c7079080cf04c393f6d64064999899489f..cae25b231efcb74cd9da48355a01aa76cc1ee544 100644 (file)
--- a/Utils.js
+++ b/Utils.js
@@ -42,6 +42,7 @@ Ext.define('Proxmox.Utils', { utilities: {
     enabledText: gettext('Enabled'),
     disabledText: gettext('Disabled'),
     noneText: gettext('none'),
+    NoneText: gettext('None'),
     errorText: gettext('Error'),
     unknownText: gettext('Unknown'),
     defaultText: gettext('Default'),
@@ -57,6 +58,7 @@ Ext.define('Proxmox.Utils', { utilities: {
     groupText: gettext('Group'),
 
     language_map: {
+       ar: 'Arabic',
        ca: 'Catalan',
        da: 'Danish',
        de: 'German',
@@ -205,7 +207,8 @@ Ext.define('Proxmox.Utils', { utilities: {
        if (Proxmox.LoggedOut) {
            return undefined;
        }
-       return (Proxmox.UserName !== '') && Ext.util.Cookies.get(Proxmox.Setup.auth_cookie_name);
+       let cookie = Ext.util.Cookies.get(Proxmox.Setup.auth_cookie_name);
+       return (Proxmox.UserName !== '') && (cookie && !cookie.startsWith("PVE:tfa!"));
     },
 
     authClear: function() {
@@ -233,6 +236,23 @@ Ext.define('Proxmox.Utils', { utilities: {
        }
     },
 
+    getResponseErrorMessage: (err) => {
+       if (!err.statusText) {
+           return gettext('Connection error');
+       }
+       let msg = `${err.statusText} (${err.status})`;
+       if (err.response && err.response.responseText) {
+           let txt = err.response.responseText;
+           try {
+               let res = JSON.parse(txt)
+               for (let [key, value] of Object.entries(res.errors)) {
+                   msg += `<br>${key}: ${value}`;
+               }
+           } catch (e) { /* TODO? */ }
+       }
+       return msg;
+    },
+
     monStoreErrors: function(me, store, clearMaskBeforeLoad) {
        if (clearMaskBeforeLoad) {
            me.mon(store, 'beforeload', function(s, operation, eOpts) {
@@ -256,15 +276,8 @@ Ext.define('Proxmox.Utils', { utilities: {
                return;
            }
 
-           var msg;
-           /*jslint nomen: true */
-           var operation = request._operation;
-           var error = operation.getError();
-           if (error.statusText) {
-               msg = error.statusText + ' (' + error.status + ')';
-           } else {
-               msg = gettext('Connection error');
-           }
+           let error = request._operation.getError();
+           let msg = Proxmox.Utils.getResponseErrorMessage(error);
            Proxmox.Utils.setErrorMask(me, msg);
        });
     },
@@ -453,6 +466,8 @@ Ext.define('Proxmox.Utils', { utilities: {
        acmerefresh: [ 'ACME Account', gettext('Refresh') ],
        acmerenew: [ 'SRV', gettext('Renew Certificate') ],
        acmerevoke: [ 'SRV', gettext('Revoke Certificate') ],
+       'auth-realm-sync': [ gettext('Realm'), gettext('Sync') ],
+       'auth-realm-sync-test': [ gettext('Realm'), gettext('Sync Preview')],
        'move_volume': [ 'CT', gettext('Move Volume') ],
        clustercreate: [ '', gettext('Create Cluster') ],
        clusterjoin: [ '', gettext('Join Cluster') ],
@@ -696,5 +711,7 @@ Ext.define('Proxmox.Utils', { utilities: {
        me.HostPort_match = new RegExp("^(" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")(:\\d+)?$");
        me.HostPortBrackets_match = new RegExp("^\\[(?:" + IPV6_REGEXP + "|" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")\\](:\\d+)?$");
        me.IP6_dotnotation_match = new RegExp("^" + IPV6_REGEXP + "(\\.\\d+)?$");
+        me.Vlan_match = new RegExp('^vlan(\\d+)');
+        me.VlanInterface_match = new RegExp('(\\w+)\\.(\\d+)');
     }
 });