Browse Source

HUE-9286 [sqlalchemy] Provide an ability to configure outbound impersonation (#1120)

Co-authored-by: Romain Rigaux <romain.rigaux@gmail.com>
Ivan Dzikovsky 5 năm trước cách đây
mục cha
commit
8ed2e0ee6e
1 tập tin đã thay đổi với 15 bổ sung13 xóa
  1. 15 13
      desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py

+ 15 - 13
desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py

@@ -137,20 +137,22 @@ class SqlAlchemyApi(Api):
     return ENGINES[engine_key]
 
   def _create_engine(self):
-    if '${' in self.options['url']: # URL parameters substitution
-      auth_provided = False
+    if '${' in self.options['url']:  # URL parameters substitution
       vars = {'USER': self.user.username}
-      if 'session' in self.options:
-        for _prop in self.options['session']['properties']:
-          if _prop['name'] == 'user':
-            vars['USER'] = _prop['value']
-            auth_provided = True
-          if _prop['name'] == 'password':
-            vars['PASSWORD'] = _prop['value']
-            auth_provided = True
-
-      if not auth_provided:
-        raise AuthenticationRequired(message='Missing username and/or password')
+
+      if '${PASSWORD}' in self.options['url']:
+        auth_provided = False
+        if 'session' in self.options:
+          for _prop in self.options['session']['properties']:
+            if _prop['name'] == 'user':
+              vars['USER'] = _prop['value']
+              auth_provided = True
+            if _prop['name'] == 'password':
+              vars['PASSWORD'] = _prop['value']
+              auth_provided = True
+
+        if not auth_provided:
+          raise AuthenticationRequired(message='Missing username and/or password')
 
       raw_url = Template(self.options['url'])
       url = raw_url.safe_substitute(**vars)