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

ng-mr-authorize

v0.1.4

Published

Authorization service for ui-router in angular.

Downloads

7

Readme

ng-mr-authorize

Authorization service for ui-router in angular.

Travis Bower License

Overview

mr.authorize authorizes a state by looking inside of it for an auth property and tries to authorize the user based on that.

Installation

bower install ng-mr-authorize --save

Features

  • Two kinds of authorization: basic (if authed or not) and policies.
  • Child states inherit parent's auth object so you can specify authorization requirements on the parent and even extend them.

Usage

First, referencing the module:

angular.module('app', ['mr.authorize']);

Then you'll have to configure authorizeProvider:

angular
    .module('app')
    .config(function (authorizeProvider) {
        // Both authed and policies functions will be injected.
        // 'storage' is a simple service you can implement that stores user credentials.

        authorizeProvider.authed = function (storage) {
            // return boolean: if user is authed
            return storage.authed();
        };

        authorizeProvider.policies = function () {
            // return array of strings: current user claimed policies
            return storage.policies();
        };
    });

Consider the following states:

$stateProvider
    .state('foo', {
    })
    .state('foo.protected', {
        auth: true
    })
    ...

The final step:

angular.module('app').run(function ($rootScope, $location, authorize) {
    $rootScope.$on('$stateChangeStart', function (e, to, params) {
        // We're providing the state to authorize, you can also provide its name
        var result = authorize(to);
        if (result !== true) {
            e.preventDefault();
            if (result === 401) {
                // 401 means unauthorized, so you probably want to redirect to login
                $state.go('login', { ReturnUrl: $location.path() });
            } else if (result === 403) {
                // 403 means forbidden, this practically means the user was authed but a policy requirement didn't match
                $state.go('access-denied');
            }
        }
    }
});

All options

The auth object:

$stateProvider.state('foo', {
    auth: {
        authed: true, // require user to be authed
        policies: ['p1', 'p2'], // require one of the listed policies
        override: true // override parent state auth
    },
    ...
});

You can also use:

  • auth: true as a shortcut for auth: { authed: true }
  • auth: 'p1' as a shortcut for auth: { policies: ['p1'] }
  • auth: ['p1', 'p2'] as a shortcut for auth: { policies: ['p1', 'p2'] }

Note: auth: { policies: ['p1'] } is implicitly the same as auth: { authed: true, policies: ['p1'] }