ejeklint/hapi-parse-session-token

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Parse session token validation for Hapi
[![Build Status](https://travis-ci.org/ejeklint/hapi-parse-session-token.svg?branch=master)](https://travis-ci.org/ejeklint/hapi-parse-session-token) [![Code Climate](https://codeclimate.com/github/ejeklint/hapi-parse-session-token/badges/gpa.svg)](https://codeclimate.com/github/ejeklint/hapi-parse-session-token) [![Test Coverage](https://codeclimate.com/github/ejeklint/hapi-parse-session-token/badges/coverage.svg)](https://codeclimate.com/github/ejeklint/hapi-parse-session-token/coverage)

Lead Maintainer: [Per Ejeklint](https://github.com/ejeklint)

A scheme for route authentication by validating the Parse session token against Parse's REST API. It requires valid Parse keys when configured and a session token passed in headers. This `'parse-access-token'` scheme takes the following options:

- `options` - (required)
    - `parse_rest_api_key` (required) - the Parse REST API key.
    - `parse_app_id` (required) - the Parse App ID.
    - `validatedFunc` - (optional) function called after successful validation with the signature `function(credentials, callback)` where:
        - `credentials` - an object with the credentials received from Parse.
        - `callback` - a callback function with the signature `function(err, credentials)` where:
            - `err` - an internal error.
            - `credentials` - a credentials object passed back to the application in `request.auth.credentials`. If err is null, credentials must not be null.

```javascript
var Hapi = require('hapi');

var server = new Hapi.Server();
server.connection({ port: 3000 });

server.register(require('hapi-parse-session-token'), function (err) {

    server.auth.strategy('parse', 'parse-access-token', {
        parse_rest_api_key: 'abc123',
        parse_app_id: 'def456',
        validatedFunc: function( credentials, callback ) {

            // Decorate the credentials
            credentials.extras = 'kilroy was here';
            
            callback(null, credentials)
        }
    });
});

server.route({
    method: 'GET',
    path: '/protected',
    handler: function (request, reply) {
        reply('success');
    },
    config: { auth: 'parse' }
});

server.start(function () {
    console.log('Server started at: ' + server.info.uri);
})
```

License MIT @ Per Ejeklint 2015