0.0.8 • Published 8 years ago

passport-producteca v0.0.8

Weekly downloads
195
License
MIT
Repository
github
Last release
8 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

8 years ago

0.0.7

8 years ago

0.0.6

9 years ago

0.0.5

9 years ago

0.0.4

9 years ago

0.0.3

9 years ago

0.0.2

9 years ago

0.0.1

9 years ago