ngPermission

Add authorization to angular route, so restriction route to specific role becomes so easy.

Note:- Works with ui.route as well as ngRoute :)

Install via bower:

bower install ngPermission

Install via npm:

npm install ngpermission

Add dependency to you module:

angular.module("your app name",["ngPermission"])

Add role permission to ngRoute:

.when('/view1', {
        templateUrl: 'view1/view1.html',
        controller: 'View1Ctrl',
        authorizedRole: ['admin']
    })

Add role permission to ui.router:

 .state('view1', {
        templateUrl: 'view1/view1.html',
        controller: 'View1Ctrl',
        resolve: {
            authorization: ["ngPermissionService", function (ngPermissionService) {
                return ngPermissionService.role(["admin"])

            }]
        }
    });

Resolve if role is present:

.run(['$rootScope', '$http', '$route', function ($rootScope, $http, $route) {
    $rootScope.$on('ngPermission', function (event,roles, defer,routeObject) {
    // do what you want to do
    //role ["admin"]
    //routeObject {templateUrl: 'view1/view1.html',controller: 'View1Ctrl',authorizedRole: ['admin']}
        $http.get('/someUrl').success(function(data){
         var indexRole = roles.indexOf(data.role);
         if(indexRole!=-1){
         defer.resolve();
         }
        });
    });
}])