Created
March 13, 2013 12:47
-
-
Save simenbrekken/5151751 to your computer and use it in GitHub Desktop.
Easier Firebase authentication with jQuery Deferred
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var db = new Firebase('https://demo.firebaseio.com') | |
var authenticate = (function(db) { | |
var loggedIn, | |
deferred = $.Deferred() | |
var client = new FirebaseAuthClient(db, function(err, user) { | |
loggedIn = !!user | |
if (err) { | |
deferred.reject(err) | |
} else if (user) { | |
deferred.resolve(user) | |
} | |
}) | |
return function(provider, options) { | |
if (!loggedIn) client.login(provider, options) | |
return deferred | |
} | |
})(db) | |
authenticate('facebook').done(function(user) { | |
console.log('Logged in as:', user) | |
}).fail(function(err) { | |
console.log('Error:', err) | |
}) |
Nice! So in the angular world would the authenticate definition live in a factory and it'd be accessible from any controller where the factory was a dependency (like the call on line 24)? If so, would there also be a way to confirm they're logged in or would that require a separate factory?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Beautiful!
How about using Angular's built in promise service
$q