mirror of
https://github.com/bitwarden/browser
synced 2025-12-15 15:53:27 +00:00
Bulk remove organization users (#970)
* Add support for bulk removal of org users * Rename to UserBulkDeleteRequest * Use OrganizationUserBulkRequest * Bump jslib * Fix linting
This commit is contained in:
2
jslib
2
jslib
Submodule jslib updated: 92dbf24ab8...6b9246c272
@@ -191,17 +191,17 @@ import {
|
|||||||
DatePipe,
|
DatePipe,
|
||||||
registerLocaleData,
|
registerLocaleData,
|
||||||
} from '@angular/common';
|
} from '@angular/common';
|
||||||
|
import localeBg from '@angular/common/locales/bg';
|
||||||
import localeCa from '@angular/common/locales/ca';
|
import localeCa from '@angular/common/locales/ca';
|
||||||
import localeCs from '@angular/common/locales/cs';
|
import localeCs from '@angular/common/locales/cs';
|
||||||
import localeBg from '@angular/common/locales/bg';
|
|
||||||
import localeDa from '@angular/common/locales/da';
|
import localeDa from '@angular/common/locales/da';
|
||||||
import localeDe from '@angular/common/locales/de';
|
import localeDe from '@angular/common/locales/de';
|
||||||
import localeEl from '@angular/common/locales/el';
|
import localeEl from '@angular/common/locales/el';
|
||||||
import localeEnGb from '@angular/common/locales/en-GB';
|
import localeEnGb from '@angular/common/locales/en-GB';
|
||||||
import localeEnIn from '@angular/common/locales/en-IN';
|
import localeEnIn from '@angular/common/locales/en-IN';
|
||||||
|
import localeEo from '@angular/common/locales/eo';
|
||||||
import localeEs from '@angular/common/locales/es';
|
import localeEs from '@angular/common/locales/es';
|
||||||
import localeEt from '@angular/common/locales/et';
|
import localeEt from '@angular/common/locales/et';
|
||||||
import localeEo from '@angular/common/locales/eo';
|
|
||||||
import localeFi from '@angular/common/locales/fi';
|
import localeFi from '@angular/common/locales/fi';
|
||||||
import localeFr from '@angular/common/locales/fr';
|
import localeFr from '@angular/common/locales/fr';
|
||||||
import localeHe from '@angular/common/locales/he';
|
import localeHe from '@angular/common/locales/he';
|
||||||
|
|||||||
@@ -35,6 +35,10 @@
|
|||||||
<i class="fa fa-fw fa-envelope-o" aria-hidden="true"></i>
|
<i class="fa fa-fw fa-envelope-o" aria-hidden="true"></i>
|
||||||
{{'reinviteSelected' | i18n}}
|
{{'reinviteSelected' | i18n}}
|
||||||
</button>
|
</button>
|
||||||
|
<button class="dropdown-item text-danger" appStopClick (click)="bulkRemove()">
|
||||||
|
<i class="fa fa-fw fa-remove" aria-hidden="true"></i>
|
||||||
|
{{'remove' | i18n}}
|
||||||
|
</button>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<button class="dropdown-item" appStopClick (click)="selectAll(true)">
|
<button class="dropdown-item" appStopClick (click)="selectAll(true)">
|
||||||
<i class="fa fa-fw fa-check-square-o" aria-hidden="true"></i>
|
<i class="fa fa-fw fa-check-square-o" aria-hidden="true"></i>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import { UserService } from 'jslib/abstractions/user.service';
|
|||||||
|
|
||||||
import { OrganizationUserConfirmRequest } from 'jslib/models/request/organizationUserConfirmRequest';
|
import { OrganizationUserConfirmRequest } from 'jslib/models/request/organizationUserConfirmRequest';
|
||||||
|
|
||||||
import { UserBulkReinviteRequest } from 'jslib/models/request/userBulkReinviteRequest';
|
import { OrganizationUserBulkRequest } from 'jslib/models/request/organizationUserBulkRequest';
|
||||||
import { OrganizationUserUserDetailsResponse } from 'jslib/models/response/organizationUserResponse';
|
import { OrganizationUserUserDetailsResponse } from 'jslib/models/response/organizationUserResponse';
|
||||||
|
|
||||||
import { OrganizationUserStatusType } from 'jslib/enums/organizationUserStatusType';
|
import { OrganizationUserStatusType } from 'jslib/enums/organizationUserStatusType';
|
||||||
@@ -260,6 +260,37 @@ export class PeopleComponent implements OnInit {
|
|||||||
this.actionPromise = null;
|
this.actionPromise = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async bulkRemove() {
|
||||||
|
if (this.actionPromise != null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const users = this.getCheckedUsers();
|
||||||
|
if (users.length <= 0) {
|
||||||
|
this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),
|
||||||
|
this.i18nService.t('noSelectedUsersApplicable'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const confirmed = await this.platformUtilsService.showDialog(
|
||||||
|
this.i18nService.t('removeSelectedUsersConfirmation'), this.i18nService.t('remove'),
|
||||||
|
this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');
|
||||||
|
if (!confirmed) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const request = new OrganizationUserBulkRequest(users.map(user => user.id));
|
||||||
|
this.actionPromise = this.apiService.deleteManyOrganizationUsers(this.organizationId, request);
|
||||||
|
try {
|
||||||
|
await this.actionPromise;
|
||||||
|
this.toasterService.popAsync('success', null, this.i18nService.t('usersHasBeenRemoved'));
|
||||||
|
await this.load();
|
||||||
|
} catch (e) {
|
||||||
|
this.validationService.showError(e);
|
||||||
|
}
|
||||||
|
this.actionPromise = null;
|
||||||
|
}
|
||||||
|
|
||||||
async bulkReinvite() {
|
async bulkReinvite() {
|
||||||
if (this.actionPromise != null) {
|
if (this.actionPromise != null) {
|
||||||
return;
|
return;
|
||||||
@@ -273,7 +304,7 @@ export class PeopleComponent implements OnInit {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const request = new UserBulkReinviteRequest(users.map(user => user.id));
|
const request = new OrganizationUserBulkRequest(users.map(user => user.id));
|
||||||
this.actionPromise = this.apiService.postManyOrganizationUserReinvite(this.organizationId, request);
|
this.actionPromise = this.apiService.postManyOrganizationUserReinvite(this.organizationId, request);
|
||||||
try {
|
try {
|
||||||
await this.actionPromise;
|
await this.actionPromise;
|
||||||
|
|||||||
@@ -3905,5 +3905,11 @@
|
|||||||
},
|
},
|
||||||
"usersHasBeenReinvited": {
|
"usersHasBeenReinvited": {
|
||||||
"message": "The selected users have been reinvited."
|
"message": "The selected users have been reinvited."
|
||||||
|
},
|
||||||
|
"removeSelectedUsersConfirmation": {
|
||||||
|
"message": "Are you sure you want to remove the selected users?"
|
||||||
|
},
|
||||||
|
"usersHasBeenRemoved": {
|
||||||
|
"message": "The selected users have been removed."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user