1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-11-28 12:45:45 +01:00

manage group users

This commit is contained in:
Kyle Spearrin 2018-10-17 22:56:49 -04:00
parent be80d62c01
commit 6b09210a80
3 changed files with 19 additions and 11 deletions

2
jslib

@ -1 +1 @@
Subproject commit 2b8ffea494a82aef30a7b0ee741f5f986bd027cc Subproject commit d1f7a97011f043a6225f603e71f0565acbe7dcdd

View File

@ -11,7 +11,6 @@ import { Angulartics2 } from 'angulartics2';
import { ApiService } from 'jslib/abstractions/api.service'; import { ApiService } from 'jslib/abstractions/api.service';
import { I18nService } from 'jslib/abstractions/i18n.service'; import { I18nService } from 'jslib/abstractions/i18n.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
import { OrganizationUserStatusType } from 'jslib/enums/organizationUserStatusType'; import { OrganizationUserStatusType } from 'jslib/enums/organizationUserStatusType';
import { OrganizationUserType } from 'jslib/enums/organizationUserType'; import { OrganizationUserType } from 'jslib/enums/organizationUserType';
@ -39,8 +38,7 @@ export class EntityUsersComponent implements OnInit {
formPromise: Promise<any>; formPromise: Promise<any>;
constructor(private apiService: ApiService, private i18nService: I18nService, constructor(private apiService: ApiService, private i18nService: I18nService,
private analytics: Angulartics2, private toasterService: ToasterService, private analytics: Angulartics2, private toasterService: ToasterService) { }
private platformUtilsService: PlatformUtilsService) { }
async ngOnInit() { async ngOnInit() {
await this.loadUsers(); await this.loadUsers();
@ -52,10 +50,18 @@ export class EntityUsersComponent implements OnInit {
this.users = users.data.map((r) => r).sort(Utils.getSortFunction(this.i18nService, 'email')); this.users = users.data.map((r) => r).sort(Utils.getSortFunction(this.i18nService, 'email'));
if (this.entity === 'group') { if (this.entity === 'group') {
const response = await this.apiService.getGroupUsers(this.organizationId, this.entityId); const response = await this.apiService.getGroupUsers(this.organizationId, this.entityId);
if (response != null && users.data.length > 0) {
response.forEach((s) => {
const user = users.data.filter((u) => !u.accessAll && u.id === s);
if (user != null && user.length > 0) {
(user[0] as any).checked = true;
}
});
}
} else if (this.entity === 'collection') { } else if (this.entity === 'collection') {
const response = await this.apiService.getCollectionUsers(this.organizationId, this.entityId); const response = await this.apiService.getCollectionUsers(this.organizationId, this.entityId);
if (response != null && users.data.length > 0) { if (response != null && users.data.length > 0) {
response.data.forEach((s) => { response.forEach((s) => {
const user = users.data.filter((u) => !u.accessAll && u.id === s.id); const user = users.data.filter((u) => !u.accessAll && u.id === s.id);
if (user != null && user.length > 0) { if (user != null && user.length > 0) {
(user[0] as any).checked = true; (user[0] as any).checked = true;
@ -80,19 +86,18 @@ export class EntityUsersComponent implements OnInit {
} }
async submit() { async submit() {
const selections = this.users.filter((u) => (u as any).checked && !u.accessAll)
.map((u) => new SelectionReadOnlyRequest(u.id, !!(u as any).readOnly));
try { try {
if (this.entity === 'group') { if (this.entity === 'group') {
// const selections = this.users.filter((u) => (u as any).checked && !u.accessAll).map((u) => u.id);
this.formPromise = this.apiService.putGroupUsers(this.organizationId, this.entityId, selections);
} else { } else {
const selections = this.users.filter((u) => (u as any).checked && !u.accessAll)
.map((u) => new SelectionReadOnlyRequest(u.id, !!(u as any).readOnly));
this.formPromise = this.apiService.putCollectionUsers(this.organizationId, this.entityId, selections); this.formPromise = this.apiService.putCollectionUsers(this.organizationId, this.entityId, selections);
} }
await this.formPromise; await this.formPromise;
this.analytics.eventTrack.next({ this.analytics.eventTrack.next({
action: this.entity === 'group' ? 'Edited Group Users' : action: this.entity === 'group' ? 'Edited Group Users' : 'Edited Collection Users',
'Edited Collection Users',
}); });
this.toasterService.popAsync('success', null, this.i18nService.t('updatedUsers')); this.toasterService.popAsync('success', null, this.i18nService.t('updatedUsers'));
this.onEditedUsers.emit(); this.onEditedUsers.emit();

View File

@ -131,6 +131,9 @@ export class GroupsComponent implements OnInit {
childComponent.entityId = group.id; childComponent.entityId = group.id;
childComponent.entityName = group.name; childComponent.entityName = group.name;
childComponent.onEditedUsers.subscribe(() => {
this.modal.close();
});
this.modal.onClosed.subscribe(() => { this.modal.onClosed.subscribe(() => {
this.modal = null; this.modal = null;
}); });