All the glue you need for integrating Passport, Express, and Mongoose.
Passport provides everything you need to use oauth or other authorization methods with Google, GitHub, Twitter, and loads more. Glue plugins give your Mongoose models keys and methods to find or create users from authentication provider responses and to (de)serialize users for persistent sessions. Simultaneously support multiple authentication providers, just add the plugin for each provider you want to use.
Glue currently supports:
- persistent sessions
- Passport
- passport-github
- passport-google-oauth (oauth2)
- passport-twitter
More to come...
Glue provides the keys for authentication type and attributes provided by an authentication provider.
Use the provided base schema (as below) or plugin glue.auth_provider_type and 1 or more provider plugins to your Mongoose schema.
var glue = require('passport-glue');
var userSchema = glue.userSchema;
userSchema.plugin(glue.github_oauth2_plugin);
userSchema.plugin(glue.persistent_sessions_plugin);
mongoose.model('User', userSchema);Glue provides the static findOrCreateGitHubUser function.
passport.use(new GitHubStrategy({
clientID: config.authGitHub.ID,
clientSecret: config.authGitHub.SECRET,
callbackURL: config.authGitHub.callbackURL
},
function (accessToken, refreshToken, profile, done) {
User.findOrCreateGitHubUser(accessToken, refreshToken, profile, done);
}
));Glue provides the static serialize and deserialize functions for restoring user sessions from cookies.
passport.serializeUser(function (user, done) {
User.serializeUser(user, done);
});
passport.deserializeUser(function (obj, done) {
User.deserializeUser(obj, done);
}); app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.session({ secret: 'my secret' }));
app.use(passport.initialize());
app.use(passport.session());Glue provides the static findOrCreateGoogleUser function.
userSchema.plugin(glue.google_oauth2_plugin)
passport.use(new GoogleStrategy({
clientID: config.authGoogle.ID,
clientSecret: config.authGoogle.SECRET,
callbackURL: config.authGoogle.callbackURL
},
function (token, tokenSecret, profile, done) {
User.findOrCreateGoogleUser(token, tokenSecret, profile, done);
}
));Glue provides the static findOrCreateTwitterUser function.
userSchema.plugin(glue.twitter_oauth1a_plugin)
passport.use(new TwitterStrategy({
consumerKey: config.authTwitter.ID,
consumerSecret: config.authTwitter.SECRET,
callbackURL: config.authTwitter.callbackURL
},
function (token, tokenSecret, profile, done) {
User.findOrCreateTwitterUser(token, tokenSecret, profile, done);
}
));This builds on the work of many others, thanks!
OSI: The BSD License, FSF: The Modified BSD License
