# authstarter

> Add mongodb based authentication to an express web app with three lines of code

Latest version **0.0.7** (published 2013-05-02) · 0 weekly downloads

## Install

```sh
npm install authstarter
pnpm add authstarter
yarn add authstarter
bun add authstarter
```

## Health

**Score 0/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; low quality score; pre 1.0.

Negative: insecure dependencies; abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.7 |
| Published | 2013-05-02 |
| First published | 2013-02-06 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.8 |
| Dependencies | 11 |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 3 |
| Author | Tom Clarkson |
| Maintainers | tqc |

## Links

- npm: https://www.npmjs.com/package/authstarter
- Repository: https://github.com/tqc/authstarter
- Issues: https://github.com/tqc/authstarter/issues
- npm.io page: https://npm.io/package/authstarter

## Dependencies (11)

- [extend](https://npm.io/package/extend.md) *
- [jshtml](https://npm.io/package/jshtml.md) *
- [express](https://npm.io/package/express.md) >=3.2
- [mongodb](https://npm.io/package/mongodb.md) 1.1.6
- [passport](https://npm.io/package/passport.md) *
- [node-cache](https://npm.io/package/node-cache.md) *
- [connect-flash](https://npm.io/package/connect-flash.md) *
- [password-hash](https://npm.io/package/password-hash.md) *
- [jshtml-express](https://npm.io/package/jshtml-express.md) git://github.com/tqc/jshtml-express.git#patch-1
- [passport-local](https://npm.io/package/passport-local.md) *
- [express-partials](https://npm.io/package/express-partials.md) *

## Recent versions

- 0.0.7 (latest) — 2013-05-02
- 0.0.6 — 2013-04-29
- 0.0.5 — 2013-04-29
- 0.0.4 — 2013-04-17
- 0.0.3 — 2013-02-07
- 0.0.2 — 2013-02-07
- 0.0.1 — 2013-02-06

## README

#Auth Starter

This is the authentication code I find myself implementing on every project that needs a basic password protected demo or admin site. The flexibility of passport is nice, but for a simple app with few users all you need is something that works with minimal effort.

* Express 3
* Based on passport-local
* Username/password stored in mongodb
* Limit unsuccessful login attempts (3 per minute by default)
* Password hashing
* Users cached in memory to avoid excessive db requests
* Redirection to original url
* Hash preserved in redirection urls
* Default login form provided if not overridden by creating views/login.jshtml

The following routes are added to the app:
* GET /login
* POST /login
* GET /logout
* GET /loginredirect

## Installation

    npm install authstarter

To create necessary auth related view files, run

    node
    require("authstarter").setup();

## Usage

    var partials = require('express-partials');
    var AuthStarter = require("authstarter");

    var app = express();

    app.use(partials());

    app.configure(function() {
        app.use(express.cookieParser());
        app.use(express.session({
            secret: 'secret'
        }));
        app.use(express.bodyParser());
    
        AuthStarter.configure(app);
        app.use(app.router);
        app.use(express.static(__dirname + '/static'));
        app.engine('jshtml', require('jshtml-express'));
        app.set('view engine', 'jshtml');
    });


    app.get('/', AuthStarter.ensureAuthenticated, function(req, res) {
        req.send('Secured content');
    });


## User setup

The user store is a mongodb collection containing documents like:

    {
      _id: ObjectId("537159a186915c696a000521"),
      username: "username",
      password: "password",
      roles: {
        admin: false
      }
    }

Passwords may be either plain text or hashed in the format used by https://github.com/davidwood/node-password-hash

Users may be created manually or using one of the provided functions that include password hashing.

    AuthStarter.addUser("username", "password", {"user": true, "admin":false});

    AuthStarter.setPassword(username, password);

## Options

	var settings = {
        mongoUrl: process.env.MONGOHQ_URL,
        baseUrl: process.env.SECURE_DOMAIN,
        userCollection: process.env.USER_COLLECTION || 'AdminUsers',
        hashOptions: {
            algorithm: "sha512"
        },
        maxAttempts: 3,
        layout: "blanklayout",
        title: "Log In",
        customCss: ""
    };

    AuthStarter.configure(app, settings);

* mongoUrl - a mongodb url as used by mongo-native
* baseUrl - used to make redirects absolute. eg "https://example.com"
* userCollection - name of the mongodb collection
* hashOptions - as used by password-hash
* maxAttempts - number of incorrect login attempts allowed within one minute

---
_Source: https://npm.io/package/authstarter · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
