Introduce gr-permission
This element houses rules for a particular project access section.
Here is the access hierarchy:
Project access
- Sections
- Permissions <-- This is the component for this change
- Rules
It has the ability to add new rules, or remove itself (with an undo
option).
Rules that already exist in a particular permission will not be present
in the autocomplete options.
Change-Id: I4db09d1a8bb7f738dff771867d25fce424a3ea3a
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
<!--
|
||||
Copyright (C) 2017 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script>
|
||||
(function(window) {
|
||||
'use strict';
|
||||
|
||||
window.Gerrit = window.Gerrit || {};
|
||||
|
||||
/** @polymerBehavior Gerrit.AccessBehavior */
|
||||
Gerrit.AccessBehavior = {
|
||||
properties: {
|
||||
permissionValues: {
|
||||
type: Object,
|
||||
readOnly: true,
|
||||
value: {
|
||||
abandon: {
|
||||
id: 'abandon',
|
||||
name: 'Abandon',
|
||||
},
|
||||
addPatchSet: {
|
||||
id: 'addPatchSet',
|
||||
name: 'Add Patch Set',
|
||||
},
|
||||
create: {
|
||||
id: 'create',
|
||||
name: 'Create Reference',
|
||||
},
|
||||
createTag: {
|
||||
id: 'createTag',
|
||||
name: 'Create Annotated Tag',
|
||||
},
|
||||
createSignedTag: {
|
||||
id: 'createSignedTag',
|
||||
name: 'Create Signed Tag',
|
||||
},
|
||||
delete: {
|
||||
id: 'delete',
|
||||
name: 'Delete Reference',
|
||||
},
|
||||
deleteDrafts: {
|
||||
id: 'deleteDrafts',
|
||||
name: 'Delete Drafts',
|
||||
},
|
||||
deleteOwnChanges: {
|
||||
id: 'deleteOwnChanges',
|
||||
name: 'Delete Own Changes',
|
||||
},
|
||||
editAssignee: {
|
||||
id: 'editAssignee',
|
||||
name: 'Edit Assignee',
|
||||
},
|
||||
editHashtags: {
|
||||
id: 'editHashtags',
|
||||
name: 'Edit Hashtags',
|
||||
},
|
||||
editTopicName: {
|
||||
id: 'editTopicName',
|
||||
name: 'Edit Topic Name',
|
||||
},
|
||||
forgeAuthor: {
|
||||
id: 'forgeAuthor',
|
||||
name: 'Forge Author Identity',
|
||||
},
|
||||
forgeCommitter: {
|
||||
id: 'forgeCommitter',
|
||||
name: 'Forge Committer Identity',
|
||||
},
|
||||
forgeServerAsCommitter: {
|
||||
id: 'forgeServerAsCommitter',
|
||||
name: 'Forge Server Identity',
|
||||
},
|
||||
owner: {
|
||||
id: 'owner',
|
||||
name: 'Owner',
|
||||
},
|
||||
publishDrafts: {
|
||||
id: 'publishDrafts',
|
||||
name: 'Publish Drafts',
|
||||
},
|
||||
push: {
|
||||
id: 'push',
|
||||
name: 'Push',
|
||||
},
|
||||
pushMerge: {
|
||||
id: 'pushMerge',
|
||||
name: 'Push Merge Commit',
|
||||
},
|
||||
read: {
|
||||
id: 'read',
|
||||
name: 'Read',
|
||||
},
|
||||
rebase: {
|
||||
id: 'rebase',
|
||||
name: 'Rebase',
|
||||
},
|
||||
removeReviewer: {
|
||||
id: 'removeReviewer',
|
||||
name: 'Remove Reviewer',
|
||||
},
|
||||
submit: {
|
||||
id: 'submit',
|
||||
name: 'Submit',
|
||||
},
|
||||
submitAs: {
|
||||
id: 'submitAs',
|
||||
name: 'Submit (On Behalf Of)',
|
||||
},
|
||||
viewDrafts: {
|
||||
id: 'viewDrafts',
|
||||
name: 'View Drafts',
|
||||
},
|
||||
viewPrivateChanges: {
|
||||
id: 'viewPrivateChanges',
|
||||
name: 'View Private Changes',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {!Object} obj
|
||||
* @return {!Array} returns a sorted array sorted by the id of the original
|
||||
* object.
|
||||
*/
|
||||
toSortedArray(obj) {
|
||||
return Object.keys(obj).map(key => {
|
||||
return {
|
||||
id: key,
|
||||
value: obj[key],
|
||||
};
|
||||
}).sort((a, b) => {
|
||||
return a.id > b.id;
|
||||
});
|
||||
},
|
||||
};
|
||||
})(window);
|
||||
</script>
|
||||
@@ -0,0 +1,68 @@
|
||||
<!DOCTYPE html>
|
||||
<!--
|
||||
Copyright (C) 2017 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
|
||||
<title>keyboard-shortcut-behavior</title>
|
||||
|
||||
<script src="../../bower_components/webcomponentsjs/webcomponents.min.js"></script>
|
||||
<script src="../../bower_components/web-component-tester/browser.js"></script>
|
||||
<link rel="import" href="../../test/common-test-setup.html"/>
|
||||
<link rel="import" href="gr-access-behavior.html">
|
||||
|
||||
<test-fixture id="basic">
|
||||
<template>
|
||||
<test-element></test-element>
|
||||
</template>
|
||||
</test-fixture>
|
||||
|
||||
<script>
|
||||
suite('gr-access-behavior tests', () => {
|
||||
let element;
|
||||
|
||||
suiteSetup(() => {
|
||||
// Define a Polymer element that uses this behavior.
|
||||
Polymer({
|
||||
is: 'test-element',
|
||||
behaviors: [Gerrit.AccessBehavior],
|
||||
});
|
||||
});
|
||||
|
||||
setup(() => {
|
||||
element = fixture('basic');
|
||||
});
|
||||
|
||||
test('toSortedArray', () => {
|
||||
const rules = {
|
||||
'global:Project-Owners': {
|
||||
action: 'ALLOW', force: false,
|
||||
},
|
||||
'4c97682e6ce6b7247f3381b6f1789356666de7f': {
|
||||
action: 'ALLOW', force: false,
|
||||
},
|
||||
};
|
||||
const expectedResult = [
|
||||
{id: '4c97682e6ce6b7247f3381b6f1789356666de7f', value: {
|
||||
action: 'ALLOW', force: false,
|
||||
}},
|
||||
{id: 'global:Project-Owners', value: {
|
||||
action: 'ALLOW', force: false,
|
||||
}},
|
||||
];
|
||||
assert.deepEqual(element.toSortedArray(rules), expectedResult);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user