|
2 | 2 |
|
3 | 3 | angular
|
4 | 4 | .module('openshiftConsole')
|
5 |
| - .filter('canIDoAny', function(canIFilter) { |
6 |
| - var resourceRulesMap = { |
| 5 | + .filter('canIDoAny', function(APIService, canIFilter) { |
| 6 | + // Top level keys are representing pages. |
| 7 | + // Within each page may one or more resources. |
| 8 | + // canIDoAny returns truthy if the user passes the canIFilter |
| 9 | + // for at least one of the resources and verbs listed in the page. |
| 10 | + var pageRulesMap = { |
7 | 11 | 'buildConfigs': [
|
8 | 12 | {group: '', resource: 'buildconfigs', verbs: ['delete', 'update']},
|
9 | 13 | {group: '', resource: 'buildconfigs/instantiate', verbs: ['create']}
|
10 | 14 | ],
|
11 | 15 | 'builds': [
|
12 |
| - {group: '', resource: 'builds/clone', verbs: ['create']}, |
13 |
| - {group: '', resource: 'builds', verbs: ['delete', 'update']} |
| 16 | + _.assign({}, APIService.getPreferredVersion('builds/clone'), {verbs: ['create']}), |
| 17 | + _.assign({}, APIService.getPreferredVersion('builds'), {verbs: ['delete', 'update']}) |
14 | 18 | ],
|
15 | 19 | 'configmaps': [
|
16 | 20 | {group: '', resource: 'configmaps', verbs: ['update', 'delete']}
|
@@ -58,12 +62,15 @@ angular
|
58 | 62 | 'projects': [
|
59 | 63 | {group: '', resource: 'projects', verbs: ['delete', 'update']}
|
60 | 64 | ],
|
| 65 | + // FIXME: inconsistent case (camel) |
61 | 66 | 'statefulsets': [
|
62 | 67 | {group: 'apps', resource: 'statefulsets', verbs: ['update', 'delete']}
|
63 | 68 | ]
|
64 | 69 | };
|
65 |
| - return function(resource) { |
66 |
| - return _.some(resourceRulesMap[resource], function(rule) { |
| 70 | + |
| 71 | + // the primary key is the page name, NOT the actual resource, though they appear to match. |
| 72 | + return function(pageName) { |
| 73 | + return _.some(pageRulesMap[pageName], function(rule) { |
67 | 74 | return _.some(rule.verbs, function(verb) {
|
68 | 75 | return canIFilter({resource: rule.resource, group: rule.group}, verb);
|
69 | 76 | });
|
|
0 commit comments