Coder Social home page Coder Social logo

toucan's Introduction

toucan

Super simple access tokens for Javascript

Create access tokens with a set of permissions, then pass the token around and let consumers check the token for permissions when needed.

Getting Started

Install toucan

npm install toucan --save

A simple example

var Toucan = require('toucan');

var token = new Toucan();
token.permit('eat')
     .deny('jump')
     .lock();


// Elsewhere in your application
token.can('eat');
    => true

token.can('jump');
    => false

Example with roles

var Toucan = require('toucan');

var RoleToken = module.exports = function(role){
    var token = new Toucan();

    if(role == 'admin')
    {
        token.permit(['edit all users', 'edit files']);
    }

    if(role == 'admin' || role == 'user')
    {
        token.permit(['edit own profile', 'edit own files']);
    }

    token.permit('view public pages');

    if(role == 'banned')
    {
        token.deny('view public pages');
    }

    return token.lock();
}
var token;

if(user)
{
    token = RoleToken(user.role);
}else{
    token = RoleToken('guest');
}

if(token.can('edit own profile'))
{
    // ..... edit profile ......
}

if(token.cannot('view public pages'))
{
    message.flash('You are banned');
}

Allow by default

By default, everything is denied unless explicitly permitted. You can enable allow-by-default by permitting '*'.

var Toucan = require('toucan');

var token = new Toucan();
token
    .permit('*')
    .deny('jump')
    .lock()


// All permissions are allowed
token.can('do absolutely anything');
    => true

// Except this one, because it was explicitly denied
token.can('jump');
    => false

toucan's People

Contributors

jordwest avatar

Stargazers

Adrian Philipp avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.