Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

node.js auth package (password, facebook, & more) for Connect and Express apps

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 .gitignore
Octocat-spinner-32 README.md
Octocat-spinner-32 index.js
Octocat-spinner-32 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
  .getLoginPath('/login') // Page with the login form
  .postLoginPath('/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);

Express Helpers

If you are using express, everyauth comes with some useful dynamic helpers. To enable them:

var express = require('express')
  , everyauth = require('everyauth')
  , app = express.createServer();

everyauth.helpExpress(app);

Then, from within your views, you will have access to the following helpers methods attached to the helper, everyauth:

  • everyauth.loggedIn
  • (more - we copy over req.session.auth keys/values to the everyauth helper)

License

MIT License


Author

Brian Noguchi

Something went wrong with that request. Please try again.