]> git.eshelyaron.com Git - emacs.git/commitdiff
Forward user to auth-source inside url-basic-auth
authorBjörn Bidar <bjorn.bidar@thaodan.de>
Thu, 8 Aug 2024 14:36:01 +0000 (17:36 +0300)
committerEshel Yaron <me@eshelyaron.com>
Wed, 4 Sep 2024 07:51:28 +0000 (09:51 +0200)
* lisp/url/url-auth.el (url-basic-auth): Forward the user if
provided by the url or found by 'auth-source' when searching
for secrets.  Supplying 'auth-source' with the user when
matching secrets allows for more accurate retrieval and fixes
instances where the user enters an url that already contains
the user such as "user@host.de".  (Bug#72526)

(cherry picked from commit 32afdcca8815331f1231fe9d8279ab9914197381)

lisp/url/url-auth.el

index 7b5d56071725b9b8032730ad9f5dc5aaa7b4e77e..23a6de1541bd454f5f2f2e4a3b8885238437ba5f 100644 (file)
@@ -89,7 +89,7 @@ instead of the filename inheritance method."
                       (read-string (url-auth-user-prompt href realm)
                                    (or user (user-real-login-name)))))
            pass (or
-                 (url-do-auth-source-search server type :secret)
+                 (url-do-auth-source-search server type :secret user)
                   (and (url-interactive-p)
                       (read-passwd "Password: " nil (or pass "")))))
       (setq server (format "%s:%d" server port))
@@ -125,7 +125,7 @@ instead of the filename inheritance method."
                             (read-string (url-auth-user-prompt href realm)
                                          (user-real-login-name))))
                  pass (or
-                       (url-do-auth-source-search server type :secret)
+                       (url-do-auth-source-search server type :secret user)
                         (and (url-interactive-p)
                             (read-passwd "Password: ")))
                   server (format "%s:%d" server port)
@@ -459,8 +459,8 @@ challenge such as nonce and opaque."
   "A list of the registered authorization schemes and various and sundry
 information associated with them.")
 
-(defun url-do-auth-source-search (server type parameter)
-  (let* ((auth-info (auth-source-search :max 1 :host server :port type))
+(defun url-do-auth-source-search (server type parameter &optional user)
+  (let* ((auth-info (auth-source-search :max 1 :host server :port type :user user))
          (auth-info (nth 0 auth-info))
          (token (plist-get auth-info parameter))
          (token (if (functionp token) (funcall token) token)))