-
{{project?.name}} {{ 'PROJECT.MEMBER.TITLE' | translate }}
+
{{projectName}} {{ 'PROJECT.MEMBER.TITLE' | translate }}
{{ 'PROJECT.MEMBER.DESCRIPTION' | translate }}
diff --git a/console/src/app/modules/project-members/project-members.component.ts b/console/src/app/modules/project-members/project-members.component.ts
index 39c5a21131..2516738813 100644
--- a/console/src/app/modules/project-members/project-members.component.ts
+++ b/console/src/app/modules/project-members/project-members.component.ts
@@ -1,12 +1,12 @@
import { SelectionModel } from '@angular/cdk/collections';
-import { AfterViewInit, Component, ViewChild } from '@angular/core';
+import { Component, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { MatPaginator } from '@angular/material/paginator';
import { MatSelectChange } from '@angular/material/select';
import { MatTable } from '@angular/material/table';
import { ActivatedRoute } from '@angular/router';
-import { take, tap } from 'rxjs/operators';
-import { ProjectMember, ProjectType, ProjectView, User } from 'src/app/proto/generated/management_pb';
+import { take } from 'rxjs/operators';
+import { ProjectGrantView, ProjectMember, ProjectType, ProjectView, User } from 'src/app/proto/generated/management_pb';
import { ProjectService } from 'src/app/services/project.service';
import { ToastService } from 'src/app/services/toast.service';
@@ -18,10 +18,12 @@ import { ProjectMembersDataSource } from './project-members-datasource';
templateUrl: './project-members.component.html',
styleUrls: ['./project-members.component.scss'],
})
-export class ProjectMembersComponent implements AfterViewInit {
- public project!: ProjectView.AsObject;
+export class ProjectMembersComponent {
+ public project!: ProjectView.AsObject | ProjectGrantView.AsObject;
public projectType: ProjectType = ProjectType.PROJECTTYPE_OWNED;
public disabled: boolean = false;
+ public grantId: string = '';
+ public projectName: string = '';
@ViewChild(MatPaginator) public paginator!: MatPaginator;
@ViewChild(MatTable) public table!: MatTable
;
public dataSource!: ProjectMembersDataSource;
@@ -42,23 +44,25 @@ export class ProjectMembersComponent implements AfterViewInit {
this.getRoleOptions();
this.route.params.subscribe(params => {
- this.projectService.GetProjectById(params.projectid).then(project => {
- this.project = project.toObject();
- this.dataSource = new ProjectMembersDataSource(this.projectService);
- this.dataSource.loadMembers(this.project, this.projectType, 0, 25, 'asc');
- });
+ this.grantId = params.grantid;
+ if (this.projectType === ProjectType.PROJECTTYPE_OWNED) {
+ this.projectService.GetProjectById(params.projectid).then(project => {
+ this.project = project.toObject();
+ this.projectName = this.project.name;
+ this.dataSource = new ProjectMembersDataSource(this.projectService);
+ this.dataSource.loadMembers(this.project.projectId, this.projectType, 0, 25);
+ });
+ } else if (this.projectType === ProjectType.PROJECTTYPE_GRANTED) {
+ console.log(params.projectid, params.grantid);
+ this.projectService.GetGrantedProjectByID(params.projectid, params.grantid).then(project => {
+ this.project = project.toObject();
+ this.projectName = this.project.projectName;
+ this.dataSource = new ProjectMembersDataSource(this.projectService);
+ this.dataSource.loadMembers(this.project.projectId, this.projectType, 0, 25, this.grantId);
+ });
+ }
});
});
-
- }
-
- public ngAfterViewInit(): void {
- this.paginator.page
- .pipe(
- tap(() => this.loadMembersPage()),
- )
- .subscribe();
-
}
public getRoleOptions(): void {
@@ -77,33 +81,25 @@ export class ProjectMembersComponent implements AfterViewInit {
}
}
- private loadMembersPage(): void {
- this.dataSource.loadMembers(
- this.project,
- this.projectType,
- this.paginator.pageIndex,
- this.paginator.pageSize,
- );
- }
-
public removeProjectMemberSelection(): void {
Promise.all(this.selection.selected.map(member => {
- return this.projectService.RemoveProjectMember(this.project.projectId, member.userId).then(() => {
- this.toast.showInfo('PROJECT.TOAST.MEMBERREMOVED', true);
- }).catch(error => {
- this.toast.showError(error);
- });
+ if (this.projectType === ProjectType.PROJECTTYPE_OWNED) {
+ return this.projectService.RemoveProjectMember(this.project.projectId, member.userId).then(() => {
+ this.toast.showInfo('PROJECT.TOAST.MEMBERREMOVED', true);
+ }).catch(error => {
+ this.toast.showError(error);
+ });
+ } else if (this.projectType === ProjectType.PROJECTTYPE_GRANTED) {
+ return this.projectService.RemoveProjectGrantMember(this.project.projectId, this.grantId,
+ member.userId).then(() => {
+ this.toast.showInfo('PROJECT.TOAST.MEMBERREMOVED', true);
+ }).catch(error => {
+ this.toast.showError(error);
+ });
+ }
}));
}
- public removeMember(member: ProjectMember.AsObject): void {
- this.projectService.RemoveProjectMember(this.project.projectId, member.userId).then(() => {
- this.toast.showInfo('PROJECT.TOAST.MEMBERREMOVED', true);
- }).catch(error => {
- this.toast.showError(error);
- });
- }
-
public isAllSelected(): boolean {
const numSelected = this.selection.selected.length;
const numRows = this.dataSource.membersSubject.value.length;
@@ -132,7 +128,13 @@ export class ProjectMembersComponent implements AfterViewInit {
if (users && users.length && roles && roles.length) {
Promise.all(users.map(user => {
- return this.projectService.AddProjectMember(this.project.projectId, user.id, roles);
+ if (this.projectType === ProjectType.PROJECTTYPE_OWNED) {
+ return this.projectService.AddProjectMember(this.project.projectId, user.id, roles);
+
+ } else if (this.projectType === ProjectType.PROJECTTYPE_GRANTED) {
+ return this.projectService.AddProjectGrantMember(this.project.projectId, this.grantId,
+ user.id, roles);
+ }
})).then(() => {
this.toast.showInfo('PROJECT.TOAST.MEMBERSADDED', true);
}).catch(error => {
@@ -144,11 +146,21 @@ export class ProjectMembersComponent implements AfterViewInit {
}
updateRoles(member: ProjectMember.AsObject, selectionChange: MatSelectChange): void {
- this.projectService.ChangeProjectMember(this.project.projectId, member.userId, selectionChange.value)
- .then((newmember: ProjectMember) => {
- this.toast.showInfo('PROJECT.TOAST.MEMBERADDED', true);
- }).catch(error => {
- this.toast.showError(error);
- });
+ if (this.projectType === ProjectType.PROJECTTYPE_OWNED) {
+ this.projectService.ChangeProjectMember(this.project.projectId, member.userId, selectionChange.value)
+ .then((newmember: ProjectMember) => {
+ this.toast.showInfo('Member changed');
+ }).catch(error => {
+ this.toast.showError(error);
+ });
+ } else if (this.projectType === ProjectType.PROJECTTYPE_GRANTED) {
+ this.projectService.ChangeProjectGrantMember(this.project.projectId,
+ this.grantId, member.userId, selectionChange.value)
+ .then((newmember: ProjectMember) => {
+ this.toast.showInfo('Member changed');
+ }).catch(error => {
+ this.toast.showError(error);
+ });
+ }
}
}
diff --git a/console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.html b/console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.html
index dcbe2f8065..a0476286b1 100644
--- a/console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.html
+++ b/console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.html
@@ -33,9 +33,9 @@
-
+ [projectType]="ProjectType.PROJECTTYPE_GRANTED" [project]="project" [grantId]="grantId">
diff --git a/console/src/app/pages/granted-projects/granted-projects-routing.module.ts b/console/src/app/pages/granted-projects/granted-projects-routing.module.ts
index be129a9ec8..7811f1b675 100644
--- a/console/src/app/pages/granted-projects/granted-projects-routing.module.ts
+++ b/console/src/app/pages/granted-projects/granted-projects-routing.module.ts
@@ -22,7 +22,7 @@ const routes: Routes = [
},
},
{
- path: ':projectid/members',
+ path: ':projectid/grant/:grantid/members',
data: {
type: ProjectType.PROJECTTYPE_GRANTED,
},
diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts b/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts
index bddced9849..e857cf11cc 100644
--- a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts
+++ b/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts
@@ -126,19 +126,19 @@ export class ProjectGrantMembersComponent implements AfterViewInit, OnInit {
dialogRef.afterClosed().subscribe((dataToAdd: ProjectGrantMembersCreateDialogExportType) => {
if (dataToAdd) {
- dataToAdd.userIds.forEach((userid: string) => {
- this.projectService.AddProjectGrantMember(
+ Promise.all(dataToAdd.userIds.map((userid: string) => {
+ return this.projectService.AddProjectGrantMember(
this.projectId,
this.grantId,
userid,
dataToAdd.rolesKeyList,
- ).then(() => {
- this.toast.showInfo('Project Grant Member successfully added!');
- }).catch(error => {
- this.toast.showError(error);
- });
+ );
+ })).then(() => {
+ console.log('this');
+ this.toast.showInfo('Project Grant Member successfully added!');
+ }).catch(error => {
+ this.toast.showError(error);
});
-
}
});
}
diff --git a/console/src/assets/environment.json b/console/src/assets/environment.json
index 6c6684a289..4f1978c3e9 100644
--- a/console/src/assets/environment.json
+++ b/console/src/assets/environment.json
@@ -3,5 +3,5 @@
"mgmtServiceUrl": "https://api.zitadel.dev",
"adminServiceUrl":"https://api.zitadel.dev",
"issuer": "https://issuer.zitadel.dev",
- "clientid": "63146698922323188@zitadel"
+ "clientid": "63426288794266821@zitadel"
}