Skip to content

Instantly share code, notes, and snippets.

@gengen1988
Last active August 29, 2015 14:13
Show Gist options
  • Save gengen1988/9f0856842bc62d811442 to your computer and use it in GitHub Desktop.
Save gengen1988/9f0856842bc62d811442 to your computer and use it in GitHub Desktop.
Angular Resolve to ACL
function config($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'views/root.html'
}).when('/entry', {
templateUrl: 'views/entry.html',
controller: 'AclController',
resolve: {
acl: function ($q, AclService) {
var deferred = $q.defer();
AclService.havePermission().then(deferred.resolve, deferred.reject);
return deferred.promise;
}
}
}).when('/forbidden', {
templateUrl: 'views/forbidden.html'
}).otherwise('/forbidden');
}
function AclController() {
console.log('controller loaded');
}
function AclService($rootScope, $location, $q) {
$rootScope.$on('$routeChangeError', function () {
$location.path('/forbidden').replace();
});
this.havePermission = function () {
var deferred = $q.defer();
if (true) {
deferred.resolve();
} else {
deferred.reject();
}
return deferred.promise;
};
}
angular.module('app', ['ngRoute'])
.config(config)
.service('AclService', AclService)
.controller('AclController', AclController);
<!DOCTYPE html>
<html ng-app="app">
<head>
<meta charset="utf-8">
</head>
<body>
<div ng-view></div>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="app.js"></script>
<script id="views/root.html" type="text/ng-template">
<h1>Helloworld</h1>
<a href="#/entry">enter</a>
</script>
<script id="views/entry.html" type="text/ng-template">
<h1>You enter the system</h1>
</script>
<script id="views/forbidden.html" type="text/ng-template">
<h1>You have not permission</h1>
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment