passport-gitlub
v1.0.2
Published
GitLub authentication strategy for Passport.
Downloads
5
Maintainers
Readme
passport-gitlub
Forked from github.com/fh1ch/passport-gitlab2 But modified to work with Gitlub
Passport strategy for authenticating with Gitlub using the OAuth2 authentication provider service.
This module lets you authenticate using GitLab in your Node.js applications. By plugging into Passport, GitLab authentication can be easily and unobtrusively integrated into any application or framework that supports Connect-style middleware, including Express.
Install
$ npm install passport-gitlub
Usage
Before using the OAuth2 authentication provider service, you have register a new application in your user profile. GitLub will then issue an application ID and a secret, which need to be provided to the strategy. You will also need to configure a redirect URI which matches the route in your application.
Configure Strategy
The Gitlub authentication strategy authenticates users using a Gitlub
account and OAuth 2.0 tokens. The app ID and secret obtained when creating an
application are supplied as options when creating the strategy. The strategy
also requires a verify
callback, which receives the access token and optional
refresh token, as well as profile
which contains the authenticated user's
GitLab profile. The verify
callback must call cb
providing a user to
complete authentication.
passport.use(new GitLubStrategy({
clientID: GITLUB_APP_ID,
clientSecret: GITLUB_APP_SECRET,
callbackURL: "http://localhost:3000/auth/gitlub/callback"
},
function(accessToken, refreshToken, profile, cb) {
User.findOrCreate({gitlubId: profile.id}, function (err, user) {
return cb(err, user);
});
}
));
Authenticate Requests
Use passport.authenticate()
, specifying the 'gitlub'
strategy, to
authenticate requests.
For example, as route middleware in an Express application:
app.get('/auth/gitlub', passport.authenticate('gitlub'));
app.get('/auth/gitlub/callback', passport.authenticate('gitlub', { failureRedirect: '/login' }), (req, res) => {
// Successful authentication, redirect home.
res.redirect('/');
});
FAQ
How do I change permissions / scope when obtaining a user profile?
Gitlub supports two scopes at the moment which are read_user
and api
. By
default, the read_user
scope is used which was introduced with Gitlub
version 8.15 and requires at least this version. If you have an older version
or you need full read/write access to all API resources, use the api
scope
instead. Changing the OAuth2 scope to api
works as following:
app.get('/auth/gitlub', passport.authenticate('gitlub', { scope: ['api'] }));
More information can be found in the official GitLab documentation.
License
Copyright (c) 2016-2017 Fabio Huser [email protected]
Copyright (c) 2011-2016 Jared Hanson <http://jaredhanson.net/>