Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
node.js auth package (password, facebook, & more) for Connect and Express apps
JavaScript

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
.gitignore
README.md
index.js
package.json

README.md

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);

License

MIT License


Author

Brian Noguchi

Something went wrong with that request. Please try again.