Skip to content
A redis based data structure that maps users and collaborators onto project names
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
src
test
.gitignore
.npmignore
LICENCE
Makefile
README.md
package.json

README.md

collaborator-map

A redis data structure for users collaborating on projects.

installation

$ npm install collaborator-map

usage

You need a Redis server running, you can provide the connection details to the constructor.

First - create a new map connected to the redis server:

var Collaborators = require('collaborator-map');

var map = Collaborators({
    host:'127.0.0.1',
    port:6379,

    // this will be prepended to all redis keys used by the map
    prefix:'mycustomprefix'
})

adding a project

When a user creates a new resource that requires access control - tell the map about the:

  • project id
  • owner id
  • access level
// project_id = binocarlos/countries
// user_id = binocarlos
// access = private

map.create_project('binocarlos/countries', 'binocarlos', 'private', function(error){

})

getting access

There are 3 access levels a given user can obtain with a resource:

  • read
  • write
  • none

To get the access level for any user on a particular project id:

map.get_access('binocarlos/countries', 'otheruser', function(error, access){

    // from our example above access would be 'none' - the project is private

})

collaborators

The people who can write to a project (or read a private one) are called 'collaborators'.

By default the owner of a project is a collaborator (and cannot be removed as one).

You can added and remove collaborators to a project:

Add a user:

map.add_collaborator('bobsnewprojects', 'pete', next);

Remove a user:

map.remove_collaborator('bobsnewprojects', 'pete', next);

Get the current collaborators for a project:

map.get_collaborators('bobsnewprojects', function(error, user_id_array){
    ...
})

renaming projects

If for some reason you want to change the id by which you refer to a project:

map.rename_project('oldprojectid', 'newprojectid', next);

listing user projects

You can list the projects that a user can access.

The list contains objects with the following properties:

  • id - the project id
  • access - the access setting (public | private)
  • owner - whether the user is the owner of the project (true | false)
map.get_projects('bob', function(error, projects){
    // projects is an array of objects
})

licence

MIT

Something went wrong with that request. Please try again.