UNPKG

passport-netlify

Version:

[Passport](http://passportjs.org/) strategy for authenticating with [Netlify](https://www.netlify.com/) using the OAuth 2.0 API.

81 lines (62 loc) 3.06 kB
# passport-netlify [Passport](http://passportjs.org/) strategy for authenticating with [Netlify](https://www.netlify.com/) using the OAuth 2.0 API. [![Build Status](https://travis-ci.com/skogsmaskin/passport-netlify.svg?branch=master)](https://travis-ci.com/skogsmaskin/passport-netlify) This module lets you authenticate with Netlify in your Node.js applications. By plugging into Passport, Netlify authentication can be easily and unobtrusively integrated into any application or framework that supports [Connect](http://www.senchalabs.org/connect/)-style middleware, including [Express](http://expressjs.com/). ## Install ```bash $ npm install passport-netlify ``` ## Usage #### Create an Application Before using `passport-netlify`, you must register an application with Netlify. If you have not already done so, a new application can be created at [OAuth applications](https://app.netlify.com/account/applications) within your Netlify account settings panel. Your application will be issued a client ID and client secret, which need to be provided to the strategy. You will also need to configure a callback URL which matches the route in your application. #### Configure Strategy The Netlify authentication strategy authenticates users using a Netlify account and OAuth 2.0 tokens. The client 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, as well as `profile` which contains the authenticated user's Netilify profile. The `verify` callback must call `cb` providing a user to complete authentication. ```js const NetlifyStrategy = require('passport-netlify').Strategy; passport.use(new NetlifyStrategy({ clientID: NETLIFY_CLIENT_ID, clientSecret: NETLIFY_CLIENT_SECRET, callbackURL: "http://127.0.0.1:3000/auth/netlify/callback", state: true // use OAuth2 state param to protect against csrf attacks (requries express-session) }, (accessToken, refreshToken, profile, cb) => { User.findOrCreate({provider: 'netlify': providerId: profile.id }, (err, user) => { return cb(err, user) }) } )) ``` *Note: While Netlify doesn't support refresh tokens (as for Jan. 2019), the verify callback still uses a second parameter `refreshToken` to conform to the OAuth2 standard. This makes it easier to share a verify callback function for all `passport-oauth2` based authentications you use with Passport.js. The `refreshToken` will be undefined with this strategy, and should just be ignored.* #### Authenticate Requests Use `passport.authenticate()`, specifying the `'netlify'` strategy, to authenticate requests. For example, as route middleware in an [Express](http://expressjs.com/) application: ```js app.get('/auth/netlify', passport.authenticate('netlify')) app.get('/auth/netlify/callback', passport.authenticate('netlify', { failureRedirect: '/login' }), (req, res) => { // Successful authentication, redirect home. res.redirect('/'); }) ```