|
1 | 1 | /**
|
2 | 2 | * angular-permission
|
3 | 3 | * Route permission and access control as simple as it can get
|
4 |
| - * @version v2.3.0 - 2016-03-30 |
5 |
| - * @link http://www.rafaelvidaurre.com |
6 |
| - * @author Rafael Vidaurre <narzerus@gmail.com>, Blazej Krysiak <blazej.krysiak@gmail.com> |
| 4 | + * @version v2.3.1 - 2016-04-01 |
| 5 | + * @link https://github.com/Narzerus/angular-permission |
| 6 | + * @author Rafael Vidaurre <narzerus@gmail.com> (http://www.rafaelvidaurre.com), Blazej Krysiak <blazej.krysiak@gmail.com> |
7 | 7 | * @license MIT License, http://www.opensource.org/licenses/MIT
|
8 | 8 | */
|
9 | 9 |
|
|
207 | 207 | .module('permission')
|
208 | 208 | .decorator('$q',
|
209 | 209 | /**
|
210 |
| - * Extends $q implementation by A+ *only* method |
| 210 | + * Extends $q implementation by A+ *any* method |
211 | 211 | * @class $q
|
212 | 212 | * @memberOf permission
|
213 | 213 | *
|
214 | 214 | * @param $delegate {Object} Angular promise implementation
|
215 | 215 | */
|
216 | 216 | ['$delegate', function ($delegate) {
|
217 | 217 |
|
218 |
| - $delegate.only = only; |
| 218 | + $delegate.any = any; |
219 | 219 |
|
220 | 220 | /**
|
221 |
| - * Implementation of missing $q `only` method that wits for first resolution of provided promise set |
| 221 | + * Implementation of missing $q `any` method that wits for first resolution of provided promise set |
222 | 222 | * @method
|
223 |
| - * @private |
224 | 223 | *
|
225 | 224 | * @param promises {Array|promise} Single or set of promises
|
226 | 225 | *
|
|
229 | 228 | * If any of the promises is resolved, this resulting promise will be returned
|
230 | 229 | * with the same resolution value.
|
231 | 230 | */
|
232 |
| - function only(promises) { |
| 231 | + function any(promises) { |
233 | 232 | var deferred = $delegate.defer(),
|
234 | 233 | counter = 0,
|
235 | 234 | results = angular.isArray(promises) ? [] : {};
|
236 | 235 |
|
237 | 236 | angular.forEach(promises, function (promise, key) {
|
238 | 237 | counter++;
|
239 |
| - $delegate.when(promise) |
| 238 | + $delegate |
| 239 | + .when(promise) |
240 | 240 | .then(function (value) {
|
241 |
| - if (results.hasOwnProperty(key)) { |
242 |
| - return; |
243 |
| - } |
244 | 241 | deferred.resolve(value);
|
245 | 242 | })
|
246 | 243 | .catch(function (reason) {
|
247 |
| - if (results.hasOwnProperty(key)) { |
248 |
| - return; |
249 |
| - } |
250 | 244 | results[key] = reason;
|
251 | 245 | if (!(--counter)) {
|
252 | 246 | deferred.reject(reason);
|
|
578 | 572 | */
|
579 | 573 | Role.prototype.validateRole = function (toParams) {
|
580 | 574 |
|
581 |
| - // When set permissions is provided check each of them |
| 575 | + // When permission set is provided check each of them |
582 | 576 | if (this.permissionNames.length) {
|
583 | 577 | var promises = this.permissionNames.map(function (permissionName) {
|
584 | 578 | if (PermissionStore.hasPermissionDefinition(permissionName)) {
|
|
592 | 586 | return validationResult;
|
593 | 587 | }
|
594 | 588 |
|
595 |
| - return $q.reject(null); |
| 589 | + return $q.reject(); |
596 | 590 | });
|
597 | 591 |
|
598 | 592 | return $q.all(promises);
|
|
898 | 892 | function permissionDirective($log, Authorization, PermissionMap, PermissionStrategies) {
|
899 | 893 | return {
|
900 | 894 | restrict: 'A',
|
901 |
| - scope: true, |
| 895 | + scope: false, |
902 | 896 | bindToController: {
|
903 | 897 | only: '=?permissionOnly',
|
904 | 898 | except: '=?permissionExcept',
|
|
1113 | 1107 | function resolveFlatExceptPrivilegeMap(permissionMap, deferred) {
|
1114 | 1108 | var exceptPromises = resolvePrivilegeMap(permissionMap.except);
|
1115 | 1109 |
|
1116 |
| - $q.only(exceptPromises) |
| 1110 | + $q.any(exceptPromises) |
1117 | 1111 | .then(function (rejectedPermissions) {
|
1118 | 1112 | deferred.reject(rejectedPermissions);
|
1119 | 1113 | })
|
|
1137 | 1131 | }
|
1138 | 1132 |
|
1139 | 1133 | var onlyPromises = resolvePrivilegeMap(permissionMap.only);
|
1140 |
| - $q.only(onlyPromises) |
| 1134 | + $q.any(onlyPromises) |
1141 | 1135 | .then(function (resolvedPermissions) {
|
1142 | 1136 | deferred.resolve(resolvedPermissions);
|
1143 | 1137 | })
|
|
1162 | 1156 |
|
1163 | 1157 | return privilegesNames.map(function (statePrivileges) {
|
1164 | 1158 | var resolvedStatePrivileges = resolvePrivilegeMap(statePrivileges);
|
1165 |
| - return $q.only(resolvedStatePrivileges); |
| 1159 | + return $q.any(resolvedStatePrivileges); |
1166 | 1160 | });
|
1167 | 1161 | }
|
1168 | 1162 |
|
|
0 commit comments