Skip to content

Latest commit

 

History

History
80 lines (67 loc) · 2.66 KB

README.md

File metadata and controls

80 lines (67 loc) · 2.66 KB

everyauth

Authentication and authorization (password, facebook, & more) for your node.js Connect and Express apps.

everyauth is:

  • Modular - We have you covered with Facebook and Twitter OAuth logins, basic login/password support, and modules coming soon for beta invitation support and more.
  • Easily Configurable - everyauth was built with powerful configuration needs in mind. One of the problems I found with existing connect auth solutions is that they offer configurability from options, but if you wanted to do anything more you had to dig into source and fork the codebase. everyauth is built around the concept of steps that you declare and define. So you can over-ride existing steps, add new steps, and manipulate the order of steps in a straightforward easy-to-read and easy-to-write manner.
  • Idiomatic - The syntax for configuring and extending your authorization strategies are idiomatic and chainable.
  • Step-driven

Installation

$ npm install everyauth

Setting up Facebook Connect

var everyauth = require('everyauth')
  , connect = require('connect');

everyauth.facebook
  .myHostname('http://localhost:3000')
  .appId('YOUR APP ID HERE')
  .appSecret('YOUR APP SECRET HERE')
  .findOrCreateUser( function (session, accessToken, fbUserMetadata) {
    // find or create user logic goes here
  })
  .redirectPath('/');

var routes = function (app) {
  // Define your routes here
};

connect(
    connect.bodyParser()
  , connect.cookieParser()
  , connect.session({secret: 'whodunnit'})
  , everyauth.middleware()
  , connect.router(routes);
).listen(3000);

Setting up Password Authentication

var everyauth = require('everyauth')
  , connect = require('connect');

everyauth.password
  .loginPath('/login') // Page with the login form
  .authPath('/login') // What you POST to
  .loginView('a string of html; OR the name of the jade/etc-view-engine view')
  .redirectPath('/') // Where to redirect to after a login
  .findUser( function (didSucceed, login) {
    // Code to find the user based on whether we successfully authenticated or not
  })
  .authenticate( function (login, password) {
    // Returns a boolean or Promise with future Boolean value
    // based on the login + password
  });

var routes = function (app) {
  // Define your routes here
};

connect(
    connect.bodyParser()
  , connect.cookieParser()
  , connect.session({secret: 'whodunnit'})
  , everyauth.middleware()
  , connect.router(routes);
).listen(3000);