]> source.dussan.org Git - sonarqube.git/commitdiff
support organizations on project permissions page
authorStas Vilchik <vilchiks@gmail.com>
Thu, 2 Feb 2017 10:33:34 +0000 (11:33 +0100)
committerStas Vilchik <stas-vilchik@users.noreply.github.com>
Thu, 2 Feb 2017 12:32:25 +0000 (13:32 +0100)
server/sonar-web/src/main/js/api/permissions.js
server/sonar-web/src/main/js/apps/permissions/project/components/AllHoldersList.js
server/sonar-web/src/main/js/apps/permissions/project/components/PageHeader.js
server/sonar-web/src/main/js/apps/permissions/project/store/actions.js
server/sonar-web/src/main/js/apps/permissions/project/views/ApplyTemplateView.js

index f498c3612d98a5b4e3b10b63f7021dc29f0fb1d4..0496d8fa719d4ad3a3d04419a1ad735bcc996867 100644 (file)
@@ -21,49 +21,51 @@ import { getJSON, post, postJSON } from '../helpers/request';
 
 const PAGE_SIZE = 100;
 
-export function getPermissionUsers (data) {
-  const url = '/api/permissions/users';
-  return getJSON(url, data);
-}
-
-export function grantPermissionToUser (projectKey, login, permission) {
+export function grantPermissionToUser (projectKey, login, permission, organization) {
   const url = '/api/permissions/add_user';
   const data = { login, permission };
   if (projectKey) {
     data.projectKey = projectKey;
   }
+  if (organization) {
+    data.organization = organization;
+  }
   return post(url, data);
 }
 
-export function revokePermissionFromUser (projectKey, login, permission) {
+export function revokePermissionFromUser (projectKey, login, permission, organization) {
   const url = '/api/permissions/remove_user';
   const data = { login, permission };
   if (projectKey) {
     data.projectKey = projectKey;
   }
+  if (organization) {
+    data.organization = organization;
+  }
   return post(url, data);
 }
 
-export function getPermissionGroups (data) {
-  const url = '/api/permissions/groups';
-  return getJSON(url, data);
-}
-
-export function grantPermissionToGroup (projectKey, groupName, permission) {
+export function grantPermissionToGroup (projectKey, groupName, permission, organization) {
   const url = '/api/permissions/add_group';
   const data = { groupName, permission };
   if (projectKey) {
     data.projectKey = projectKey;
   }
+  if (organization) {
+    data.organization = organization;
+  }
   return post(url, data);
 }
 
-export function revokePermissionFromGroup (projectKey, groupName, permission) {
+export function revokePermissionFromGroup (projectKey, groupName, permission, organization) {
   const url = '/api/permissions/remove_group';
   const data = { groupName, permission };
   if (projectKey) {
     data.projectKey = projectKey;
   }
+  if (organization) {
+    data.organization = organization;
+  }
   return post(url, data);
 }
 
@@ -144,7 +146,7 @@ export function removeProjectCreatorFromTemplate (templateId, permission) {
   return post(url, data);
 }
 
-export function getPermissionsUsersForComponent (projectKey, query = '', permission = null) {
+export function getPermissionsUsersForComponent (projectKey, query = '', permission = null, organization = null) {
   const url = '/api/permissions/users';
   const data = { projectKey, ps: PAGE_SIZE };
   if (query) {
@@ -153,10 +155,13 @@ export function getPermissionsUsersForComponent (projectKey, query = '', permiss
   if (permission) {
     data.permission = permission;
   }
+  if (organization) {
+    data.organization = organization;
+  }
   return getJSON(url, data).then(r => r.users);
 }
 
-export function getPermissionsGroupsForComponent (projectKey, query = '', permission = null) {
+export function getPermissionsGroupsForComponent (projectKey, query = '', permission = null, organization = null) {
   const url = '/api/permissions/groups';
   const data = { projectKey, ps: PAGE_SIZE };
   if (query) {
@@ -165,10 +170,13 @@ export function getPermissionsGroupsForComponent (projectKey, query = '', permis
   if (permission) {
     data.permission = permission;
   }
+  if (organization) {
+    data.organization = organization;
+  }
   return getJSON(url, data).then(r => r.groups);
 }
 
-export function getGlobalPermissionsUsers (query = '', permission = null) {
+export function getGlobalPermissionsUsers (query = '', permission = null, organization = null) {
   const url = '/api/permissions/users';
   const data = { ps: PAGE_SIZE };
   if (query) {
@@ -177,10 +185,13 @@ export function getGlobalPermissionsUsers (query = '', permission = null) {
   if (permission) {
     data.permission = permission;
   }
+  if (organization) {
+    data.organization = organization;
+  }
   return getJSON(url, data).then(r => r.users);
 }
 
-export function getGlobalPermissionsGroups (query = '', permission = null) {
+export function getGlobalPermissionsGroups (query = '', permission = null, organization = null) {
   const url = '/api/permissions/groups';
   const data = { ps: PAGE_SIZE };
   if (query) {
@@ -189,6 +200,9 @@ export function getGlobalPermissionsGroups (query = '', permission = null) {
   if (permission) {
     data.permission = permission;
   }
+  if (organization) {
+    data.organization = organization;
+  }
   return getJSON(url, data).then(r => r.groups);
 }
 
index dabcf13e5645a544dfd62d19dff90a73e2215ea4..6eff70419e19bbbbe0c6619b5e4f68502f91da92 100644 (file)
@@ -135,20 +135,20 @@ const mapStateToProps = state => ({
   selectedPermission: getPermissionsAppSelectedPermission(state)
 });
 
-const mapDispatchToProps = dispatch => ({
-  loadHolders: projectKey => dispatch(loadHolders(projectKey)),
-  onSearch: (projectKey, query) => dispatch(updateQuery(projectKey, query)),
-  onFilter: (projectKey, filter) => dispatch(updateFilter(projectKey, filter)),
+const mapDispatchToProps = (dispatch, ownProps) => ({
+  loadHolders: projectKey => dispatch(loadHolders(projectKey, ownProps.project.organization)),
+  onSearch: (projectKey, query) => dispatch(updateQuery(projectKey, query, ownProps.project.organization)),
+  onFilter: (projectKey, filter) => dispatch(updateFilter(projectKey, filter, ownProps.project.organization)),
   onSelectPermission: (projectKey, permission) =>
-      dispatch(selectPermission(projectKey, permission)),
+      dispatch(selectPermission(projectKey, permission, ownProps.project.organization)),
   grantPermissionToUser: (projectKey, login, permission) =>
-      dispatch(grantToUser(projectKey, login, permission)),
+      dispatch(grantToUser(projectKey, login, permission, ownProps.project.organization)),
   revokePermissionFromUser: (projectKey, login, permission) =>
-      dispatch(revokeFromUser(projectKey, login, permission)),
+      dispatch(revokeFromUser(projectKey, login, permission, ownProps.project.organization)),
   grantPermissionToGroup: (projectKey, groupName, permission) =>
-      dispatch(grantToGroup(projectKey, groupName, permission)),
+      dispatch(grantToGroup(projectKey, groupName, permission, ownProps.project.organization)),
   revokePermissionFromGroup: (projectKey, groupName, permission) =>
-      dispatch(revokeFromGroup(projectKey, groupName, permission))
+      dispatch(revokeFromGroup(projectKey, groupName, permission, ownProps.project.organization))
 });
 
 export default connect(
index 700b2b48ea326709c11672425c7b62fa97f6bf95..7a0a05686d9859b2f5bc4c701f29bef8c9d95edf 100644 (file)
@@ -80,8 +80,8 @@ const mapStateToProps = state => ({
   loading: isPermissionsAppLoading(state)
 });
 
-const mapDispatchToProps = dispatch => ({
-  loadHolders: projectKey => dispatch(loadHolders(projectKey))
+const mapDispatchToProps = (dispatch, ownProps) => ({
+  loadHolders: projectKey => dispatch(loadHolders(projectKey, ownProps.project.organization))
 });
 
 export default connect(
index 1982d34ea05bb2bee72b132c4fcd1359eec91931..26d69c45e4c6da553e97d06a0e96d21904e9c703 100644 (file)
@@ -37,7 +37,7 @@ import {
   getPermissionsAppSelectedPermission
 } from '../../../../store/rootReducer';
 
-export const loadHolders = projectKey => (dispatch, getState) => {
+export const loadHolders = (projectKey, organization) => (dispatch, getState) => {
   const query = getPermissionsAppQuery(getState());
   const filter = getPermissionsAppFilter(getState());
   const selectedPermission = getPermissionsAppSelectedPermission(getState());
@@ -47,15 +47,13 @@ export const loadHolders = projectKey => (dispatch, getState) => {
   const requests = [];
 
   if (filter !== 'groups') {
-    requests.push(api.getPermissionsUsersForComponent(projectKey, query,
-        selectedPermission));
+    requests.push(api.getPermissionsUsersForComponent(projectKey, query, selectedPermission, organization));
   } else {
     requests.push(Promise.resolve([]));
   }
 
   if (filter !== 'users') {
-    requests.push(api.getPermissionsGroupsForComponent(projectKey, query,
-        selectedPermission));
+    requests.push(api.getPermissionsGroupsForComponent(projectKey, query, selectedPermission, organization));
   } else {
     requests.push(Promise.resolve([]));
   }
@@ -72,46 +70,46 @@ export const loadHolders = projectKey => (dispatch, getState) => {
   });
 };
 
-export const updateQuery = (projectKey, query = '') => dispatch => {
+export const updateQuery = (projectKey, query = '', organization = null) => dispatch => {
   dispatch({ type: UPDATE_QUERY, query });
   if (query.length === 0 || query.length > 2) {
-    dispatch(loadHolders(projectKey));
+    dispatch(loadHolders(projectKey, organization));
   }
 };
 
-export const updateFilter = (projectKey, filter) => dispatch => {
+export const updateFilter = (projectKey, filter, organization) => dispatch => {
   dispatch({ type: UPDATE_FILTER, filter });
-  dispatch(loadHolders(projectKey));
+  dispatch(loadHolders(projectKey, organization));
 };
 
-export const selectPermission = (projectKey, permission) => (dispatch, getState) => {
+export const selectPermission = (projectKey, permission, organization) => (dispatch, getState) => {
   const selectedPermission = getPermissionsAppSelectedPermission(getState());
   if (selectedPermission !== permission) {
     dispatch({ type: SELECT_PERMISSION, permission });
   } else {
     dispatch({ type: SELECT_PERMISSION, permission: null });
   }
-  dispatch(loadHolders(projectKey));
+  dispatch(loadHolders(projectKey, organization));
 };
 
-export const grantToUser = (projectKey, login, permission) => dispatch => {
-  api.grantPermissionToUser(projectKey, login, permission).then(() => {
+export const grantToUser = (projectKey, login, permission, organization) => dispatch => {
+  api.grantPermissionToUser(projectKey, login, permission, organization).then(() => {
     dispatch({ type: GRANT_PERMISSION_TO_USER, login, permission });
   }).catch(e => {
     return parseError(e).then(message => dispatch(raiseError(message)));
   });
 };
 
-export const revokeFromUser = (projectKey, login, permission) => dispatch => {
-  api.revokePermissionFromUser(projectKey, login, permission).then(() => {
+export const revokeFromUser = (projectKey, login, permission, organization) => dispatch => {
+  api.revokePermissionFromUser(projectKey, login, permission, organization).then(() => {
     dispatch({ type: REVOKE_PERMISSION_TO_USER, login, permission });
   }).catch(e => {
     return parseError(e).then(message => dispatch(raiseError(message)));
   });
 };
 
-export const grantToGroup = (projectKey, groupName, permission) => dispatch => {
-  api.grantPermissionToGroup(projectKey, groupName, permission).then(() => {
+export const grantToGroup = (projectKey, groupName, permission, organization) => dispatch => {
+  api.grantPermissionToGroup(projectKey, groupName, permission, organization).then(() => {
     dispatch({
       type: GRANT_PERMISSION_TO_GROUP,
       groupName,
@@ -122,8 +120,8 @@ export const grantToGroup = (projectKey, groupName, permission) => dispatch => {
   });
 };
 
-export const revokeFromGroup = (projectKey, groupName, permission) => dispatch => {
-  api.revokePermissionFromGroup(projectKey, groupName, permission).then(() => {
+export const revokeFromGroup = (projectKey, groupName, permission, organization) => dispatch => {
+  api.revokePermissionFromGroup(projectKey, groupName, permission, organization).then(() => {
     dispatch({
       type: REVOKE_PERMISSION_FROM_GROUP,
       groupName,
index 14817206db76650ca4be6df186d7fed7829fd757..a22e93f8740141a4abada80b013760ea19e3eead 100644 (file)
@@ -33,7 +33,7 @@ export default ModalForm.extend({
   },
 
   loadPermissionTemplates () {
-    return getPermissionTemplates().then(r => {
+    return getPermissionTemplates(this.options.project.organization).then(r => {
       this.permissionTemplates = r.permissionTemplates;
       this.render();
     });