diff --git a/openbis_ng_ui/src/js/components/users/browser/UserBrowserController.js b/openbis_ng_ui/src/js/components/users/browser/UserBrowserController.js index 81d8628812c1f62b8103a25b86fcdbcf57686170..a8d7717be28c80cfab7bc4a857f1cf646228cf32 100644 --- a/openbis_ng_ui/src/js/components/users/browser/UserBrowserController.js +++ b/openbis_ng_ui/src/js/components/users/browser/UserBrowserController.js @@ -27,7 +27,7 @@ export default class UserBrowserController extends BrowserController { text: user.userId, object: { type: objectType.USER, id: user.userId }, canMatchFilter: true, - canRemove: false + canRemove: true } }) @@ -95,6 +95,8 @@ export default class UserBrowserController extends BrowserController { _prepareRemoveOperations(type, id, reason) { if (type === objectType.USER_GROUP) { return this._prepareRemoveUserGroupOperations(id, reason) + } else if (type === objectType.USER) { + return this._prepareRemoveUserOperations(id, reason) } else { throw new Error('Unsupported type: ' + type) } @@ -111,6 +113,17 @@ export default class UserBrowserController extends BrowserController { ]) } + _prepareRemoveUserOperations(id, reason) { + const options = new openbis.PersonDeletionOptions() + options.setReason(reason) + return Promise.resolve([ + new openbis.DeletePersonsOperation( + [new openbis.PersonPermId(id)], + options + ) + ]) + } + doGetObservedModifications() { return { [objectType.USER]: [objectOperation.CREATE, objectOperation.DELETE], diff --git a/openbis_ng_ui/src/js/services/openbis/dto.js b/openbis_ng_ui/src/js/services/openbis/dto.js index 48060fd7d7cb209d7c1111960a3560f533f2c6fc..ea7cb50f111e5f1a6a27c1adbb658bbe5476c3a6 100644 --- a/openbis_ng_ui/src/js/services/openbis/dto.js +++ b/openbis_ng_ui/src/js/services/openbis/dto.js @@ -50,6 +50,8 @@ const CLASS_FULL_NAMES = [ 'as/dto/operation/SynchronousOperationExecutionOptions', 'as/dto/person/create/CreatePersonsOperation', 'as/dto/person/create/PersonCreation', + 'as/dto/person/delete/PersonDeletionOptions', + 'as/dto/person/delete/DeletePersonsOperation', 'as/dto/person/fetchoptions/PersonFetchOptions', 'as/dto/person/id/PersonPermId', 'as/dto/person/search/PersonSearchCriteria', diff --git a/openbis_ng_ui/srcTest/js/services/openbis/dto.js b/openbis_ng_ui/srcTest/js/services/openbis/dto.js index f516b9c772dbb8dec98fc1c18884217419ab847f..1c91239f8448fe1af3b67b9b98a5db6916b4ecc2 100644 --- a/openbis_ng_ui/srcTest/js/services/openbis/dto.js +++ b/openbis_ng_ui/srcTest/js/services/openbis/dto.js @@ -33,6 +33,7 @@ import DeleteAuthorizationGroupsOperation from 'as/dto/authorizationgroup/delete import DeleteDataSetTypesOperation from 'as/dto/dataset/delete/DeleteDataSetTypesOperation' import DeleteExperimentTypesOperation from 'as/dto/experiment/delete/DeleteExperimentTypesOperation' import DeleteMaterialTypesOperation from 'as/dto/material/delete/DeleteMaterialTypesOperation' +import DeletePersonsOperation from 'as/dto/person/delete/DeletePersonsOperation' import DeletePluginsOperation from 'as/dto/plugin/delete/DeletePluginsOperation' import DeletePropertyTypesOperation from 'as/dto/property/delete/DeletePropertyTypesOperation' import DeleteQueriesOperation from 'as/dto/query/delete/DeleteQueriesOperation' @@ -64,6 +65,7 @@ import MaterialTypeSearchCriteria from 'as/dto/material/search/MaterialTypeSearc import MaterialTypeUpdate from 'as/dto/material/update/MaterialTypeUpdate' import Person from 'as/dto/person/Person' import PersonCreation from 'as/dto/person/create/PersonCreation' +import PersonDeletionOptions from 'as/dto/person/delete/PersonDeletionOptions' import PersonFetchOptions from 'as/dto/person/fetchoptions/PersonFetchOptions' import PersonPermId from 'as/dto/person/id/PersonPermId' import PersonSearchCriteria from 'as/dto/person/search/PersonSearchCriteria' @@ -201,6 +203,7 @@ const dto = { DeleteDataSetTypesOperation, DeleteExperimentTypesOperation, DeleteMaterialTypesOperation, + DeletePersonsOperation, DeletePluginsOperation, DeletePropertyTypesOperation, DeleteQueriesOperation, @@ -232,6 +235,7 @@ const dto = { MaterialTypeUpdate, Person, PersonCreation, + PersonDeletionOptions, PersonFetchOptions, PersonPermId, PersonSearchCriteria,