0.0.8 • Published 10 years ago

passport-producteca v0.0.8

Weekly downloads
195
License
MIT
Repository
github
Last release
10 years ago

passport-producteca

Passport strategy for authenticating with Producteca using the OAuth 2.0 API.

Learn more about the OAuth 2.0 schema here.

Installation

$ npm install --save passport-producteca

Configuration

The Producteca authentication strategy authenticates users using a Producteca account and OAuth 2.0 tokens. The strategy requires a verify callback, which accepts these credentials and calls done providing a user, as well as options specifying a client ID, client secret, and callback URL.

You can obtain the client ID and secret by creating a Producteca app:

POST auth.producteca.com/apps
Headers:
  Authorization: Bearer {tokenOfTheAppOwner}
Body:
  {
    "name": "Aplicateca",
    "scopes": "all",
    "redirectUri": "http://aplicateca.com/auth/producteca/callback"
  }

The configuration of the strategy is something like this:

var ProductecaStrategy = require('passport-producteca').Strategy;

passport.use(new ProductecaStrategy({
    clientID: 'aplicateca-01fsk',
    clientSecret: 'sarasasasa',
    callbackURL: 'http://aplicateca.com/auth/producteca/callback',
  },
  function (accessToken, _, profile, done) {
    // + store/retrieve user from database, together with access token
    return done(null, profile); 
  }
));

passport.serializeUser(function (user, done) {
  done(null, user);
});

passport.deserializeUser(function (user, done) {
  done(null, user);
});

Usage

Use passport.authorize(), specifying the 'producteca' strategy, to authenticate requests.

For example, as route middleware in an Express application:

app.get('/auth/producteca', passport.authorize('producteca'));

app.get('/auth/producteca/callback', 
  passport.authorize('producteca', { failureRedirect: '/login' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/');
  });

app.get('/', ensureAuthenticated, 
  function(req, res) {
    res.send("Logged in user: " + req.user.username);
  }
);

function ensureAuthenticated(req, res, next) {
  if (req.isAuthenticated()) { 
    return next(); 
  };
  res.redirect('/auth/producteca');
};

Example of the user object are:

{  
   "id": 3,
   "provider": "producteca",
   "accessToken": "alskdjaklsjdflaskjfasl",
   "email": "pablo@gmail.com",
   "authorizations": [  
      {  
         "app": "aplicateca-01fsk",
         "scopes": "all",
         "_id": "5583353109ed7374185e8e82"
      }
   ],
   "company": {  
      "name": "A company",
      "id": 3
   },
   "profile": {  
      "firstName": "Pablo",
      "lastName": "Alta"
   },
   "credentials": {  
      "username": "pablo"
   }
}

License

The MIT License

Thanks

Thanks to https://github.com/mjpearson/passport-wordpress for the README and file structure.

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago