npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cozy-clearance

v0.1.23

Published

cozy-clearance provides clearance management

Downloads

14

Readme

cozy-clearance

Helper package to manage clearances in cozy. This package include two parts:

  • server side
  • client side

Usage : Server Side

Base Module

documentation

clearance = require 'cozy-clearance'

details  = {email:"[email protected]", contactid:"3615", any:"other field"}
details2 = {email:"[email protected]", contactid:"3616", any:"other field"}

The clearance.add function allows you to add a rule to a model

clearance.add someModel, 'rw', details, (err) ->
    clearance.add someModel, 'r', details2, (err) ->
        console.log someModel.clearance
# [
#     {email:"[email protected]", contactid:"3615", any:"other field", key:"secret", perm:"rw"}
#     {email:"[email protected]", contactid:"3616", any:"other field", key:"secret2", perm:"rw"}
# ]

The clearance.check function allows you to check a request against the model. It looks for the key in the request's querystring The callback is called with the matching rule if found, false otherwise

req.query.key = "secret"
clearance.check someModel, 'r', req, (err, rule) ->
    # rule == {email:"[email protected]", contactid:"3615", any:"other field", key:"secret", perm:"rw"}

clearance.check someModel, 'w', req, (err, rule) ->
    # rule == false, steve doesn't have the 'w' permission

The clearance.revoke function allows you to revoke a rule for the model. All rules matching the given object will be revoked

clearance.revoke someModel, {email:"[email protected]"}, (err) ->
    console.log someModel.clearance
    # [{email:"[email protected]", contactid:"3616", any:"other field", key:"secret2", perm:"rw"}]

# or

clearance.revoke someModel, {any:"other field"}, (err) ->
    console.log someModel.clearance
    # []

Controller :

To use the client side of cozy-clearance, you will need to expose some of the controller's routes.

# in routes.coffee
clearance = require 'cozy-clearance'

# use mailSubject & mailTemplate functions to customize the sent mail.
clearanceCtl = clearance.controller
    mailSubject: (options) -> # options.doc , options.url
    mailTemplate: (options) -> # options.doc , options.url
    attachments: optional array of attachments

'docid':
    param: # fetch and save in req.doc
'clearance/contacts':
    get: clearanceCtl.contactList
'clearance/contacts/:contactid':
    get: clearanceCtl.contact
'clearance/contacts/:contactid.jpg':
    get: sharing.contactPicture
'clearance/:docid'
    put: clearanceCtl.change
'clearance/:docid/send':
    post: clearanceCtl.sendAll

Usage : Client Side

Your client side environement should include the following :

  • a global require & require.define, following the commonjs convention (like brunch)
  • a global t function that handles translations

Include the file client-build.js or client-build.min.js in your vendor/scripts folder and use it like this :

CozyClearanceModal = require 'cozy-clearance/modal_share_view'
new CozyClearanceModal model: someModel

You can override some methods :

class YourModalView extends CozyClearanceModal

    # change the permissions method to add possible permissions
    permissions: ->
        'r': 'see this'
        'rw': 'see and edit'
        'rwy': 'see, edit and do Y'
        'rwz': 'see, edit and do Z'
        # note : list all possible combinations, here, you can't have both Y & Z permissions

See cozy-files for heavy customization.

The contactCollection can be plugged to your app's realtime :

contactCollection = require 'cozy-clearance/contact_collection'
socketListener.process = (event) ->
   {doctype, operation, id} = event
   # ...
   contactCollection.handleRealtimeContactEvent event

Locales

The client-side library use the following locale keys:

  • "cancel"
  • "confirm"
  • "copy paste link"
  • "mail not send"
  • "modal error"
  • "modal ok"
  • "modal question " + type + " shareable"
  • "modal send mails
  • "modal shared " + type + " custom msg"
  • "modal shared public link msg"
  • "modal shared with people msg"
  • "no forgot"
  • "no"
  • "only you can see"
  • "perm"
  • "private"
  • "r"
  • "revoke"
  • "save"
  • "see link"
  • "send email hint"
  • "send mails question"
  • "server error occured"
  • "share confirm save"
  • "share forgot add"
  • "shared"
  • "sharing"
  • "yes forgot"
  • "yes"

Contribute

Use coffeegulp to build the client side.

Use npm run build to build the server side

use npm test to run tests