Skip to content

JoeChapman/better-forms

Repository files navigation

Better Forms

A better way to create, validate and handle forms in Express

Build Status NPM version Codeship Status for JoeChapman/better-forms

Use Better Forms to create your form, securely handle requests, validate form data and display validation errors.

Example usage

Build a form, giving it a name and fields. More examples

var forms = require('better-forms');

module.exports = forms('simpleform', {
    fname: new forms.fields.string({label: 'First name', required: true}),
    lname: new forms.fields.string({label: 'Last name', validateif: 'fname'})
}, {
    action: '/',
    method: 'POST',
    novalidate: true,
    template: 'simple'
});

Hook up your router to use form.requestHandler for each form request and Better Forms will process the request accordingly

var form = require('../form');

app
    .get('/', form.requestHandler)
    .post('/', form.requestHandler);

Print out the form mark up in your template

doctype html
html(lang="en")
    head
        meta(charset='utf-8')
        title Simple Form
    body
        !=forms.simpleform.html

Add CSRF support. Install csurf

$ npm install csurf

And use it in your server

app.use(require('csurf')())

Set a token in your middleware

module.exports = function () {
    return function (req, res, next) {
        res.locals._csrf = req.csrfToken();
        next();
    };
};

Use the middleware in your server

app.use(require('./middleware/csrf')())

Setup

Install

npm install better-forms

Test

npm test

Lint

npm run lint

Examples

$ git clone git@github.com:JoeChapman/better-forms.git
$ cd better-forms
$ npm install

then run an example such as,

$ node examples/simple/server

and browse to http://localhost:3030

About

A better way to create, validate and handle forms

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages