|
5 | 5 | // Define a service which provides user authentication and management. |
6 | 6 | angular.module('firebase').factory('$firebaseAuth', [ |
7 | 7 | '$q', '$firebaseUtils', '$log', function($q, $firebaseUtils, $log) { |
8 | | - // This factory returns an object containing the current authentication state of the client. |
9 | | - // This service takes one argument: |
10 | | - // |
11 | | - // * `ref`: A Firebase reference. |
12 | | - // |
13 | | - // The returned object contains methods for authenticating clients, retrieving authentication |
14 | | - // state, and managing users. |
| 8 | + /** |
| 9 | + * This factory returns an object allowing you to manage the client's authentication state. |
| 10 | + * |
| 11 | + * @param {Firebase} ref A Firebase reference to authenticate. |
| 12 | + * @return {object} An object containing methods for authenticating clients, retrieving |
| 13 | + * authentication state, and managing users. |
| 14 | + */ |
15 | 15 | return function(ref) { |
16 | 16 | var auth = new FirebaseAuth($q, $firebaseUtils, $log, ref); |
17 | 17 | return auth.construct(); |
|
77 | 77 | authWithCustomToken: function(authToken, options) { |
78 | 78 | var deferred = this._q.defer(); |
79 | 79 |
|
80 | | - this._ref.authWithCustomToken(authToken, this._utils.makeNodeResolver(deferred), options); |
| 80 | + try { |
| 81 | + this._ref.authWithCustomToken(authToken, this._utils.makeNodeResolver(deferred), options); |
| 82 | + } catch (error) { |
| 83 | + deferred.reject(error); |
| 84 | + } |
81 | 85 |
|
82 | 86 | return deferred.promise; |
83 | 87 | }, |
|
92 | 96 | authAnonymously: function(options) { |
93 | 97 | var deferred = this._q.defer(); |
94 | 98 |
|
95 | | - this._ref.authAnonymously(this._utils.makeNodeResolver(deferred), options); |
| 99 | + try { |
| 100 | + this._ref.authAnonymously(this._utils.makeNodeResolver(deferred), options); |
| 101 | + } catch (error) { |
| 102 | + deferred.reject(error); |
| 103 | + } |
96 | 104 |
|
97 | 105 | return deferred.promise; |
98 | 106 | }, |
|
109 | 117 | authWithPassword: function(credentials, options) { |
110 | 118 | var deferred = this._q.defer(); |
111 | 119 |
|
112 | | - this._ref.authWithPassword(credentials, this._utils.makeNodeResolver(deferred), options); |
| 120 | + try { |
| 121 | + this._ref.authWithPassword(credentials, this._utils.makeNodeResolver(deferred), options); |
| 122 | + } catch (error) { |
| 123 | + deferred.reject(error); |
| 124 | + } |
113 | 125 |
|
114 | 126 | return deferred.promise; |
115 | 127 | }, |
|
126 | 138 | authWithOAuthPopup: function(provider, options) { |
127 | 139 | var deferred = this._q.defer(); |
128 | 140 |
|
129 | | - this._ref.authWithOAuthPopup(provider, this._utils.makeNodeResolver(deferred), options); |
| 141 | + try { |
| 142 | + this._ref.authWithOAuthPopup(provider, this._utils.makeNodeResolver(deferred), options); |
| 143 | + } catch (error) { |
| 144 | + deferred.reject(error); |
| 145 | + } |
130 | 146 |
|
131 | 147 | return deferred.promise; |
132 | 148 | }, |
|
143 | 159 | authWithOAuthRedirect: function(provider, options) { |
144 | 160 | var deferred = this._q.defer(); |
145 | 161 |
|
146 | | - this._ref.authWithOAuthRedirect(provider, this._utils.makeNodeResolver(deferred), options); |
| 162 | + try { |
| 163 | + this._ref.authWithOAuthRedirect(provider, this._utils.makeNodeResolver(deferred), options); |
| 164 | + } catch (error) { |
| 165 | + deferred.reject(error); |
| 166 | + } |
147 | 167 |
|
148 | 168 | return deferred.promise; |
149 | 169 | }, |
|
162 | 182 | authWithOAuthToken: function(provider, credentials, options) { |
163 | 183 | var deferred = this._q.defer(); |
164 | 184 |
|
165 | | - this._ref.authWithOAuthToken(provider, credentials, this._utils.makeNodeResolver(deferred), options); |
| 185 | + try { |
| 186 | + this._ref.authWithOAuthToken(provider, credentials, this._utils.makeNodeResolver(deferred), options); |
| 187 | + } catch (error) { |
| 188 | + deferred.reject(error); |
| 189 | + } |
166 | 190 |
|
167 | 191 | return deferred.promise; |
168 | 192 | }, |
|
294 | 318 | }; |
295 | 319 | } |
296 | 320 |
|
297 | | - this._ref.createUser(credentials, this._utils.makeNodeResolver(deferred)); |
| 321 | + try { |
| 322 | + this._ref.createUser(credentials, this._utils.makeNodeResolver(deferred)); |
| 323 | + } catch (error) { |
| 324 | + deferred.reject(error); |
| 325 | + } |
298 | 326 |
|
299 | 327 | return deferred.promise; |
300 | 328 | }, |
|
324 | 352 | }; |
325 | 353 | } |
326 | 354 |
|
327 | | - this._ref.changePassword(credentials, this._utils.makeNodeResolver(deferred)); |
| 355 | + try { |
| 356 | + this._ref.changePassword(credentials, this._utils.makeNodeResolver(deferred)); |
| 357 | + } catch (error) { |
| 358 | + deferred.reject(error); |
| 359 | + } |
328 | 360 |
|
329 | 361 | return deferred.promise; |
330 | 362 | }, |
|
351 | 383 | }; |
352 | 384 | } |
353 | 385 |
|
354 | | - this._ref.removeUser(credentials, this._utils.makeNodeResolver(deferred)); |
| 386 | + try { |
| 387 | + this._ref.removeUser(credentials, this._utils.makeNodeResolver(deferred)); |
| 388 | + } catch (error) { |
| 389 | + deferred.reject(error); |
| 390 | + } |
355 | 391 |
|
356 | 392 | return deferred.promise; |
357 | 393 | }, |
|
366 | 402 | */ |
367 | 403 | sendPasswordResetEmail: function(emailOrCredentials) { |
368 | 404 | this._log.warn("$sendPasswordResetEmail() has been deprecated in favor of the equivalent $resetPassword()."); |
369 | | - return this.resetPassword(emailOrCredentials); |
| 405 | + |
| 406 | + try { |
| 407 | + return this.resetPassword(emailOrCredentials); |
| 408 | + } catch (error) { |
| 409 | + deferred.reject(error); |
| 410 | + } |
370 | 411 | }, |
371 | 412 |
|
372 | 413 | /** |
|
389 | 430 | }; |
390 | 431 | } |
391 | 432 |
|
392 | | - this._ref.resetPassword(credentials, this._utils.makeNodeResolver(deferred)); |
| 433 | + try { |
| 434 | + this._ref.resetPassword(credentials, this._utils.makeNodeResolver(deferred)); |
| 435 | + } catch (error) { |
| 436 | + deferred.reject(error); |
| 437 | + } |
393 | 438 |
|
394 | 439 | return deferred.promise; |
395 | 440 | } |
|
0 commit comments