node-recaptcha2
Version:
Display and verify a Recaptcha captcha
71 lines (56 loc) • 1.67 kB
JavaScript
/**
* Module dependencies.
*/
var express = require('express'),
Recaptcha = require('../lib/recaptcha').Recaptcha;
var PUBLIC_KEY = 'YOUR_PUBLIC_KEY',
PRIVATE_KEY = 'YOUR_PRIVATE_KEY';
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
app.get('/', function(req, res) {
var recaptcha = new Recaptcha(PUBLIC_KEY, PRIVATE_KEY);
res.render('form', {
layout: false,
locals: {
recaptcha_form: recaptcha.toHTML()
}
});
});
app.post('/', function(req, res) {
var data = {
remoteip: req.connection.remoteAddress,
response: req.body['g-recaptcha-response']
};
var recaptcha = new Recaptcha(PUBLIC_KEY, PRIVATE_KEY, data);
recaptcha.verify(function(success, error_code) {
if (success) {
res.send('Recaptcha response valid.');
}
else {
// Redisplay the form.
res.render('form', {
layout: false,
locals: {
recaptcha_form: recaptcha.toHTML()
}
});
}
});
});
app.listen(3000, function(){
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
});