public inbox for [email protected]  
help / color / mirror / Atom feed
From: Khushboo Vashi <[email protected]>
To: pgadmin-hackers <[email protected]>
Subject: [pgAdmin4][Patch] - RM #5776 -  Needlessly prompted for a password with SSPI logins
Date: Wed, 5 May 2021 11:28:48 +0530
Message-ID: <CAFOhELcewrxzYP5REkbbbLfrxGRm_8VM+0sq847PzmkmJUQAfg@mail.gmail.com> (raw)

Hi,

Please find the attached patch for RM #5776 -  Needlessly prompted for a
password with SSPI logins.

To fix this issue,  I have enabled the "Kerberos authentication" flag in
the server dialog for Desktop mode also. So, if this flag is set to True,
pgAdmin will not prompt for a password on connection/reconnection.

This patch also includes the Jasmine test failures caused by my previous
Kerberos patch.

Thanks,
Khushboo


Attachments:

  [application/octet-stream] RM_5776.patch (5.5K, 3-RM_5776.patch)
  download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/servers/static/js/server.js b/web/pgadmin/browser/server_groups/servers/static/js/server.js
index fd525d763..b21cba431 100644
--- a/web/pgadmin/browser/server_groups/servers/static/js/server.js
+++ b/web/pgadmin/browser/server_groups/servers/static/js/server.js
@@ -14,12 +14,11 @@ define('pgadmin.node.server', [
   'pgadmin.alertifyjs', 'pgadmin.backform',
   'sources/browser/server_groups/servers/model_validation',
   'pgadmin.authenticate.kerberos',
-  'pgadmin.browser.constants',
   'pgadmin.browser.server.privilege',
 ], function(
   gettext, url_for, $, _, Backbone, pgAdmin, pgBrowser,
   supported_servers, current_user, Alertify, Backform,
-  modelValidation, Kerberos, pgConst,
+  modelValidation, Kerberos,
 ) {
 
   if (!pgBrowser.Nodes['server']) {
@@ -910,11 +909,7 @@ define('pgadmin.node.server', [
           id: 'kerberos_conn', label: gettext('Kerberos authentication?'), type: 'switch',
           group: gettext('Connection'), 'options': {
             'onText':  gettext('True'), 'offText':  gettext('False'), 'size': 'mini',
-          }, disabled: function() {
-            if (current_user['current_auth_source'] != pgConst['KERBEROS'])
-              return true;
-            return false;
-          },
+          }
         },{
           id: 'password', label: gettext('Password'), type: 'password', maxlength: null,
           group: gettext('Connection'), control: 'input', mode: ['create'],
diff --git a/web/pgadmin/tools/backup/static/js/backup_dialog_wrapper.js b/web/pgadmin/tools/backup/static/js/backup_dialog_wrapper.js
index 7e0ddd63f..1a59d420a 100644
--- a/web/pgadmin/tools/backup/static/js/backup_dialog_wrapper.js
+++ b/web/pgadmin/tools/backup/static/js/backup_dialog_wrapper.js
@@ -169,7 +169,7 @@ export class BackupDialogWrapper extends DialogWrapper {
       this.setExtraParameters(selectedTreeNode, treeInfo);
       let backupDate = this.view.model.toJSON();
 
-      if(userInfo['auth_sources'] == 'KERBEROS' && (backupDate.type == 'globals' || backupDate.type == 'server')) {
+      if(userInfo['current_auth_source'] == 'KERBEROS' && (backupDate.type == 'globals' || backupDate.type == 'server')) {
         let newPromise = fetch_ticket_lifetime();
         newPromise.then(
           function(lifetime) {
diff --git a/web/regression/javascript/backup/backup_dialog_wrapper_spec.js b/web/regression/javascript/backup/backup_dialog_wrapper_spec.js
index 24edadb82..1fcb44c04 100644
--- a/web/regression/javascript/backup/backup_dialog_wrapper_spec.js
+++ b/web/regression/javascript/backup/backup_dialog_wrapper_spec.js
@@ -46,6 +46,7 @@ describe('BackupDialogWrapper', () => {
       },
       keyboardNavigation: jasmine.createSpyObj('keyboardNavigation', ['getDialogTabNavigator']),
     };
+
     noDataNode = pgBrowser.treeMenu.addNewNode('level1.1', undefined, [{id: 'level1'}]);
     serverTreeNode = pgBrowser.treeMenu.addNewNode('level2.1', {
       _type: 'server',
diff --git a/web/regression/javascript/backup/global_server_backup_dialog_spec.js b/web/regression/javascript/backup/global_server_backup_dialog_spec.js
index d15a89556..77c635dff 100644
--- a/web/regression/javascript/backup/global_server_backup_dialog_spec.js
+++ b/web/regression/javascript/backup/global_server_backup_dialog_spec.js
@@ -20,7 +20,6 @@ describe('GlobalServerBackupDialog', () => {
   let alertifySpy;
   let backupModelSpy;
 
-
   let rootNode;
   let serverTreeNode;
   let ppasServerTreeNode;
@@ -74,7 +73,6 @@ describe('GlobalServerBackupDialog', () => {
         alertifySpy,
         backupModelSpy
       );
-
       pgBrowser.get_preference = jasmine.createSpy('get_preferences');
     });
 
diff --git a/web/regression/javascript/fake_constants.js b/web/regression/javascript/fake_constants.js
new file mode 100644
index 000000000..4bc7a1651
--- /dev/null
+++ b/web/regression/javascript/fake_constants.js
@@ -0,0 +1,17 @@
+//////////////////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////////////////
+
+define(function () {
+  return {
+    'INTERNAL': 'internal',
+    'LDAP': 'ldap',
+    'KERBEROS': 'kerberos'
+  };
+});
+
diff --git a/web/regression/javascript/fake_current_user.js b/web/regression/javascript/fake_current_user.js
new file mode 100644
index 000000000..6ad0b45b8
--- /dev/null
+++ b/web/regression/javascript/fake_current_user.js
@@ -0,0 +1,15 @@
+//////////////////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////////////////
+
+define(function () {
+  return {
+    'current_auth_source': 'internal'
+  };
+});
+
diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js
index e72798e9a..e0b6fd69f 100644
--- a/web/webpack.test.config.js
+++ b/web/webpack.test.config.js
@@ -179,6 +179,8 @@ module.exports = {
       'pgadmin.tools.erd': path.join(__dirname, './pgadmin/tools/erd/static/js'),
       'bundled_codemirror': path.join(__dirname, './pgadmin/static/bundle/codemirror'),
       'tools': path.join(__dirname, './pgadmin/tools/'),
+      'pgadmin.user_management.current_user': regressionDir + '/javascript/fake_current_user',
+      'pgadmin.browser.constants': regressionDir + '/javascript/fake_constants',
     },
   },
 };


view thread (2+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected]
  Subject: Re: [pgAdmin4][Patch] - RM #5776 -  Needlessly prompted for a password with SSPI logins
  In-Reply-To: <CAFOhELcewrxzYP5REkbbbLfrxGRm_8VM+0sq847PzmkmJUQAfg@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox