Browse Source

Fixing authentication cancel with null/undefined credentials.

ali.ibrahim 8 years ago
parent
commit
7f8b180f70
2 changed files with 21 additions and 3 deletions
  1. 2 3
      atom/browser/api/atom_api_url_request.cc
  2. 19 0
      lib/browser/api/net.js

+ 2 - 3
atom/browser/api/atom_api_url_request.cc

@@ -305,9 +305,8 @@ void URLRequest::OnAuthenticationRequired(
     return;
   }
 
-  EmitRequestEvent(
-      false, "login", auth_info.get(),
-      base::Bind(&AtomURLRequest::PassLoginInformation, atom_request_));
+  Emit("login", auth_info.get(),
+       base::Bind(&AtomURLRequest::PassLoginInformation, atom_request_));
 }
 
 void URLRequest::OnResponseStarted(

+ 19 - 0
lib/browser/api/net.js

@@ -192,6 +192,25 @@ class ClientRequest extends EventEmitter {
       this.emit('response', response)
     })
 
+    urlRequest.on('login', (event, authInfo, callback) => {
+      this.emit('login', authInfo, (username, password) => {
+        // If null or undefined usrename/password, force to empty string.
+        if (username === null || username === undefined) {
+          username = ''
+        }
+        if (typeof username !== 'string') {
+          throw new Error('username must be a string')
+        }
+        if (password === null || password === undefined) {
+          password = ''
+        }
+        if (typeof password !== 'string') {
+          throw new Error('password must be a string')
+        }
+        callback(username, password)
+      })
+    })
+
     if (callback) {
       this.once('response', callback)
     }