diff --git a/console/src/app/app.component.ts b/console/src/app/app.component.ts index baa9aa5e48..596aa786bf 100644 --- a/console/src/app/app.component.ts +++ b/console/src/app/app.component.ts @@ -1,5 +1,5 @@ import { animate, group, query, style, transition, trigger } from '@angular/animations'; -import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout'; +import { BreakpointObserver } from '@angular/cdk/layout'; import { OverlayContainer } from '@angular/cdk/overlay'; import { Component, HostBinding, OnDestroy, ViewChild } from '@angular/core'; import { MatIconRegistry } from '@angular/material/icon'; @@ -119,7 +119,7 @@ export class AppComponent implements OnDestroy { @ViewChild('drawer') public drawer!: MatDrawer; public isHandset$: Observable = this.breakpointObserver - .observe(Breakpoints.Handset) + .observe('(max-width: 599px)') .pipe(map(result => { return result.matches; })); @@ -190,11 +190,6 @@ export class AppComponent implements OnDestroy { this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/radar.svg'), ); - this.matIconRegistry.addSvgIcon( - 'mdi_account_circle_outline', - this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/account-circle-outline.svg'), - ); - this.matIconRegistry.addSvgIcon( 'mdi_lock_question', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/lock-question.svg'), diff --git a/console/src/app/modules/accounts-card/accounts-card.component.html b/console/src/app/modules/accounts-card/accounts-card.component.html index b9ac8d0b41..3ce3cf4da4 100644 --- a/console/src/app/modules/accounts-card/accounts-card.component.html +++ b/console/src/app/modules/accounts-card/accounts-card.component.html @@ -8,7 +8,8 @@
- + +
{{user.userName}} diff --git a/console/src/app/modules/add-member-dialog/project-member-create-dialog.component.html b/console/src/app/modules/add-member-dialog/member-create-dialog.component.html similarity index 100% rename from console/src/app/modules/add-member-dialog/project-member-create-dialog.component.html rename to console/src/app/modules/add-member-dialog/member-create-dialog.component.html diff --git a/console/src/app/modules/add-member-dialog/project-member-create-dialog.component.scss b/console/src/app/modules/add-member-dialog/member-create-dialog.component.scss similarity index 100% rename from console/src/app/modules/add-member-dialog/project-member-create-dialog.component.scss rename to console/src/app/modules/add-member-dialog/member-create-dialog.component.scss diff --git a/console/src/app/modules/add-member-dialog/project-member-create-dialog.component.spec.ts b/console/src/app/modules/add-member-dialog/member-create-dialog.component.spec.ts similarity index 54% rename from console/src/app/modules/add-member-dialog/project-member-create-dialog.component.spec.ts rename to console/src/app/modules/add-member-dialog/member-create-dialog.component.spec.ts index 80cc88067a..218b060604 100644 --- a/console/src/app/modules/add-member-dialog/project-member-create-dialog.component.spec.ts +++ b/console/src/app/modules/add-member-dialog/member-create-dialog.component.spec.ts @@ -1,21 +1,21 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ProjectMemberCreateDialogComponent } from './project-member-create-dialog.component'; +import { MemberCreateDialogComponent } from './member-create-dialog.component'; describe('AddMemberDialogComponent', () => { - let component: ProjectMemberCreateDialogComponent; - let fixture: ComponentFixture; + let component: MemberCreateDialogComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ProjectMemberCreateDialogComponent], + declarations: [MemberCreateDialogComponent], }) .compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(ProjectMemberCreateDialogComponent); + fixture = TestBed.createComponent(MemberCreateDialogComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/console/src/app/modules/add-member-dialog/project-member-create-dialog.component.ts b/console/src/app/modules/add-member-dialog/member-create-dialog.component.ts similarity index 86% rename from console/src/app/modules/add-member-dialog/project-member-create-dialog.component.ts rename to console/src/app/modules/add-member-dialog/member-create-dialog.component.ts index 2fb7c18dfb..6be43e916f 100644 --- a/console/src/app/modules/add-member-dialog/project-member-create-dialog.component.ts +++ b/console/src/app/modules/add-member-dialog/member-create-dialog.component.ts @@ -10,11 +10,11 @@ export enum CreationType { ORG = 2, } @Component({ - selector: 'app-project-member-create-dialog', - templateUrl: './project-member-create-dialog.component.html', - styleUrls: ['./project-member-create-dialog.component.scss'], + selector: 'app-member-create-dialog', + templateUrl: './member-create-dialog.component.html', + styleUrls: ['./member-create-dialog.component.scss'], }) -export class ProjectMemberCreateDialogComponent { +export class MemberCreateDialogComponent { public projectId: string = ''; public creationType!: CreationType; public users: Array = []; @@ -23,7 +23,7 @@ export class ProjectMemberCreateDialogComponent { public memberRoleOptions: string[] = []; constructor( private projectService: ProjectService, - public dialogRef: MatDialogRef, + public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, toastService: ToastService, ) { diff --git a/console/src/app/modules/add-member-dialog/project-member-create-dialog.module.ts b/console/src/app/modules/add-member-dialog/member-create-dialog.module.ts similarity index 82% rename from console/src/app/modules/add-member-dialog/project-member-create-dialog.module.ts rename to console/src/app/modules/add-member-dialog/member-create-dialog.module.ts index c99a82c388..40234f6a99 100644 --- a/console/src/app/modules/add-member-dialog/project-member-create-dialog.module.ts +++ b/console/src/app/modules/add-member-dialog/member-create-dialog.module.ts @@ -12,10 +12,10 @@ import { OrgMemberRolesAutocompleteModule, } from '../../pages/orgs/org-member-roles-autocomplete/org-member-roles-autocomplete.module'; import { SearchRolesAutocompleteModule } from '../search-roles-autocomplete/search-roles-autocomplete.module'; -import { ProjectMemberCreateDialogComponent } from './project-member-create-dialog.component'; +import { MemberCreateDialogComponent } from './member-create-dialog.component'; @NgModule({ - declarations: [ProjectMemberCreateDialogComponent], + declarations: [MemberCreateDialogComponent], imports: [ CommonModule, MatDialogModule, @@ -29,7 +29,7 @@ import { ProjectMemberCreateDialogComponent } from './project-member-create-dial OrgMemberRolesAutocompleteModule, ], entryComponents: [ - ProjectMemberCreateDialogComponent, + MemberCreateDialogComponent, ], }) -export class ProjectMemberCreateDialogModule { } +export class MemberCreateDialogModule { } diff --git a/console/src/app/modules/changes/changes.component.scss b/console/src/app/modules/changes/changes.component.scss index c7dcb8a36b..9e0ec7d052 100644 --- a/console/src/app/modules/changes/changes.component.scss +++ b/console/src/app/modules/changes/changes.component.scss @@ -11,7 +11,7 @@ .item { box-sizing: border-box; - height: 60px; + height: 50px; padding: .5rem; margin: .25rem 0; border-radius: .5rem; @@ -26,8 +26,7 @@ .desc { overflow-x: auto; - font-size: .9rem; - margin: 4px 0; + font-size: 14px; } } diff --git a/console/src/app/modules/meta-layout/meta-layout.component.html b/console/src/app/modules/meta-layout/meta-layout.component.html index fd23b969d0..c950d9f645 100644 --- a/console/src/app/modules/meta-layout/meta-layout.component.html +++ b/console/src/app/modules/meta-layout/meta-layout.component.html @@ -1,8 +1,10 @@
-
+
-
+
+
\ No newline at end of file diff --git a/console/src/app/modules/meta-layout/meta-layout.component.scss b/console/src/app/modules/meta-layout/meta-layout.component.scss index 2fce146c3a..b7adc6c39c 100644 --- a/console/src/app/modules/meta-layout/meta-layout.component.scss +++ b/console/src/app/modules/meta-layout/meta-layout.component.scss @@ -1,19 +1,27 @@ .meta-wrapper { display: flex; - height: 100%; + height: 100%; + overflow-x: hidden; + transition: all .2s ease-in-out; .main-content { display: relative; width: 100%; overflow-y: auto; + + &.hidden { + flex-basis: 100%; + } } .meta { + position: relative; flex: 1 0 300px; + background: linear-gradient(to bottom right, #4072b410 20%,transparent 50%); + @media only screen and (min-width: 1500px) { flex-basis: 400px; } - // overflow-y: auto; padding: 1rem; .meta-content { @@ -21,13 +29,58 @@ display: flex; flex-direction: column; } + + &.hidden { + flex: 0 0 0 !important; + width: 0; + background: linear-gradient(to bottom right, #4072b450,transparent 50%); + + .hide { + transform: rotate(180deg); + visibility: visible; + opacity: 1; + } + } + + &:after { + content: ''; + position: absolute; + top: 0; + left: 0; + height: 50%; + border-left: 2px solid #4072b4; + -webkit-border-image: -webkit-gradient(linear, left top, left bottom, from(#4072b4), to(#212224), color-stop(01, #212224)) 50 21; + border-image: -webkit-gradient(linear, left top, left bottom, from(#4072b4), to(#212224), color-stop(01, #212224)) 50 21; + } + + .hide { + position: absolute; + left: -40px; + top: .5rem; + opacity: 0; + transition: all .3s ease-in-out; + + i { + font-size: 1.5rem; + } + + &:hover { + visibility: visible; + } + } + + &:hover { + .hide { + opacity: 1; + } + } } - @media only screen and (max-width: 700px) { - flex-direction: column; - .main-content, .meta { - overflow-y: visible; - } - } + // @media only screen and (max-width: 700px) { + // flex-direction: column; + // .main-content, .meta { + // overflow-y: visible; + // } + // } } \ No newline at end of file diff --git a/console/src/app/modules/meta-layout/meta-layout.component.ts b/console/src/app/modules/meta-layout/meta-layout.component.ts index de3b30168a..f6a6bf710f 100644 --- a/console/src/app/modules/meta-layout/meta-layout.component.ts +++ b/console/src/app/modules/meta-layout/meta-layout.component.ts @@ -1,4 +1,7 @@ +import { BreakpointObserver } from '@angular/cdk/layout'; import { Component } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; @Component({ selector: 'app-meta-layout', @@ -6,4 +9,16 @@ import { Component } from '@angular/core'; styleUrls: ['./meta-layout.component.scss'], }) export class MetaLayoutComponent { + + constructor(private breakpointObserver: BreakpointObserver) { + this.isSmallScreen$.subscribe(small => this.hidden = small); + } + public hidden: boolean = false; + public isSmallScreen$: Observable = this.breakpointObserver + .observe('(max-width: 899px)') + .pipe(map(result => { + return result.matches; + })); + + } diff --git a/console/src/app/modules/meta-layout/meta-layout.module.ts b/console/src/app/modules/meta-layout/meta-layout.module.ts index 619cc13555..d627ccf0de 100644 --- a/console/src/app/modules/meta-layout/meta-layout.module.ts +++ b/console/src/app/modules/meta-layout/meta-layout.module.ts @@ -1,5 +1,7 @@ +import { LayoutModule } from '@angular/cdk/layout'; import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; import { MetaLayoutComponent } from './meta-layout.component'; @@ -9,6 +11,8 @@ import { MetaLayoutComponent } from './meta-layout.component'; declarations: [MetaLayoutComponent], imports: [ CommonModule, + MatButtonModule, + LayoutModule, ], exports: [MetaLayoutComponent], }) diff --git a/console/src/app/modules/project-roles/project-roles.component.html b/console/src/app/modules/project-roles/project-roles.component.html index 14b67926c2..7b730c44a7 100644 --- a/console/src/app/modules/project-roles/project-roles.component.html +++ b/console/src/app/modules/project-roles/project-roles.component.html @@ -70,8 +70,6 @@ - - diff --git a/console/src/app/modules/search-project-autocomplete/search-project-autocomplete.component.ts b/console/src/app/modules/search-project-autocomplete/search-project-autocomplete.component.ts index 9205b21fbd..28db3d83cc 100644 --- a/console/src/app/modules/search-project-autocomplete/search-project-autocomplete.component.ts +++ b/console/src/app/modules/search-project-autocomplete/search-project-autocomplete.component.ts @@ -6,9 +6,10 @@ import { MatChipInputEvent } from '@angular/material/chips'; import { from } from 'rxjs'; import { debounceTime, switchMap, tap } from 'rxjs/operators'; import { - GrantedProjectSearchKey, - GrantedProjectSearchQuery, Project, + ProjectGrantView, + ProjectSearchKey, + ProjectSearchQuery, SearchMethod, } from 'src/app/proto/generated/management_pb'; import { ProjectService } from 'src/app/services/project.service'; @@ -25,21 +26,22 @@ export class SearchProjectAutocompleteComponent { public separatorKeysCodes: number[] = [ENTER, COMMA]; public myControl: FormControl = new FormControl(); public names: string[] = []; - public projects: Array = []; - public filteredProjects: Array = []; + public projects: Array = []; + public filteredProjects: Array = []; public isLoading: boolean = false; @ViewChild('nameInput') public nameInput!: ElementRef; @ViewChild('auto') public matAutocomplete!: MatAutocomplete; @Input() public singleOutput: boolean = false; - @Output() public selectionChanged: EventEmitter = new EventEmitter(); + @Output() public selectionChanged: EventEmitter + = new EventEmitter(); constructor(private projectService: ProjectService) { this.myControl.valueChanges .pipe( debounceTime(200), tap(() => this.isLoading = true), switchMap(value => { - const query = new GrantedProjectSearchQuery(); - query.setKey(GrantedProjectSearchKey.PROJECTSEARCHKEY_PROJECT_NAME); + const query = new ProjectSearchQuery(); + query.setKey(ProjectSearchKey.PROJECTSEARCHKEY_PROJECT_NAME); query.setValue(value); query.setMethod(SearchMethod.SEARCHMETHOD_CONTAINS); return from(this.projectService.SearchGrantedProjects(10, 0, [query])); @@ -63,8 +65,8 @@ export class SearchProjectAutocompleteComponent { if ((value || '').trim()) { const index = this.filteredProjects.findIndex((project) => { - if (project.name) { - return project.name === value; + if (project.projectName) { + return project.projectName === value; } }); if (index > -1) { @@ -82,7 +84,7 @@ export class SearchProjectAutocompleteComponent { } } - public remove(project: Project.AsObject): void { + public remove(project: ProjectGrantView.AsObject): void { const index = this.projects.indexOf(project); if (index >= 0) { diff --git a/console/src/app/pages/apps/app-detail/app-detail.component.html b/console/src/app/pages/apps/app-detail/app-detail.component.html index 626f80eb12..84b640b8b4 100644 --- a/console/src/app/pages/apps/app-detail/app-detail.component.html +++ b/console/src/app/pages/apps/app-detail/app-detail.component.html @@ -86,7 +86,7 @@ {{ 'APP.OIDC.REDIRECT' | translate }} - + {{redirect}} @@ -100,7 +100,7 @@ {{ 'APP.OIDC.POSTLOGOUTREDIRECT' | translate }} - + {{redirect}} diff --git a/console/src/app/pages/apps/app-detail/app-detail.component.ts b/console/src/app/pages/apps/app-detail/app-detail.component.ts index f9e454be04..649112b9eb 100644 --- a/console/src/app/pages/apps/app-detail/app-detail.component.ts +++ b/console/src/app/pages/apps/app-detail/app-detail.component.ts @@ -17,6 +17,7 @@ import { OIDCGrantType, OIDCResponseType, } from 'src/app/proto/generated/management_pb'; +import { GrpcService } from 'src/app/services/grpc.service'; import { ProjectService } from 'src/app/services/project.service'; import { ToastService } from 'src/app/services/toast.service'; @@ -72,6 +73,8 @@ export class AppDetailComponent implements OnInit, OnDestroy { public RedirectType: any = RedirectType; + public isZitadel: boolean = false; + constructor( public translate: TranslateService, private route: ActivatedRoute, @@ -80,6 +83,7 @@ export class AppDetailComponent implements OnInit, OnDestroy { private fb: FormBuilder, private _location: Location, private dialog: MatDialog, + private grpcService: GrpcService, ) { this.appNameForm = this.fb.group({ state: ['', []], @@ -104,16 +108,27 @@ export class AppDetailComponent implements OnInit, OnDestroy { private async getData({ projectid, id }: Params): Promise { this.projectId = projectid; + this.projectService.GetProjectById(this.projectId).then(project => { + this.isZitadel = project.toObject().name === 'Zitadel'; + if (this.isZitadel) { + this.appNameForm.disable(); + this.appForm.disable(); + } + }); + + this.projectService.GetApplicationById(projectid, id).then(app => { this.app = app.toObject(); this.appNameForm.patchValue(this.app); - if (this.app.state !== AppState.APPSTATE_ACTIVE) { + console.log(this.grpcService.clientid, this.app.oidcConfig?.clientId); + + console.log(this.isZitadel); + if (this.app.state !== AppState.APPSTATE_ACTIVE || this.isZitadel) { this.appNameForm.controls['name'].disable(); this.appForm.disable(); } else { this.appNameForm.controls['name'].enable(); this.appForm.enable(); - this.clientId?.disable(); } if (this.app.oidcConfig?.redirectUrisList) { this.redirectUrisList = this.app.oidcConfig.redirectUrisList; diff --git a/console/src/app/pages/orgs/org-contributors/org-contributors.component.html b/console/src/app/pages/orgs/org-contributors/org-contributors.component.html new file mode 100644 index 0000000000..3a91696de9 --- /dev/null +++ b/console/src/app/pages/orgs/org-contributors/org-contributors.component.html @@ -0,0 +1,25 @@ +
+ {{ 'PROJECT.MEMBER.TITLE' | translate }} + {{ 'PROJECT.MEMBER.TITLEDESC' | translate }} +
+
+ + +
+ +
+
+
+ +
+ {{totalResult}} +
+
+ +
+
+
\ No newline at end of file diff --git a/console/src/app/pages/projects/project-contributors/project-contributors.component.scss b/console/src/app/pages/orgs/org-contributors/org-contributors.component.scss similarity index 100% rename from console/src/app/pages/projects/project-contributors/project-contributors.component.scss rename to console/src/app/pages/orgs/org-contributors/org-contributors.component.scss diff --git a/console/src/app/pages/orgs/org-contributors/org-contributors.component.spec.ts b/console/src/app/pages/orgs/org-contributors/org-contributors.component.spec.ts new file mode 100644 index 0000000000..3e50d3d358 --- /dev/null +++ b/console/src/app/pages/orgs/org-contributors/org-contributors.component.spec.ts @@ -0,0 +1,34 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { MatPaginatorModule } from '@angular/material/paginator'; +import { MatSortModule } from '@angular/material/sort'; +import { MatTableModule } from '@angular/material/table'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; + +import { OrgContributorsComponent } from './org-contributors.component'; + +describe('OrgContributorsComponent', () => { + let component: OrgContributorsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [OrgContributorsComponent], + imports: [ + NoopAnimationsModule, + MatPaginatorModule, + MatSortModule, + MatTableModule, + ], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OrgContributorsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should compile', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/console/src/app/pages/orgs/org-contributors/org-contributors.component.ts b/console/src/app/pages/orgs/org-contributors/org-contributors.component.ts new file mode 100644 index 0000000000..154535b951 --- /dev/null +++ b/console/src/app/pages/orgs/org-contributors/org-contributors.component.ts @@ -0,0 +1,93 @@ +import { Component, Input, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatTable } from '@angular/material/table'; +import { Router } from '@angular/router'; +import { BehaviorSubject, from, Observable, of } from 'rxjs'; +import { catchError, finalize, map } from 'rxjs/operators'; +import { Org, OrgMember, OrgMemberView, OrgState, User } from 'src/app/proto/generated/management_pb'; +import { OrgService } from 'src/app/services/org.service'; +import { ToastService } from 'src/app/services/toast.service'; + +import { + CreationType, + MemberCreateDialogComponent, +} from '../../../modules/add-member-dialog/member-create-dialog.component'; + +@Component({ + selector: 'app-org-contributors', + templateUrl: './org-contributors.component.html', + styleUrls: ['./org-contributors.component.scss'], +}) +export class OrgContributorsComponent implements OnInit { + @Input() public org!: Org.AsObject; + @Input() public disabled: boolean = false; + @ViewChild(MatPaginator) public paginator!: MatPaginator; + @ViewChild(MatTable) public table!: MatTable; + /** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */ + public displayedColumns: string[] = ['select', 'firstname', 'lastname', 'username', 'email', 'roles']; + + private loadingSubject: BehaviorSubject = new BehaviorSubject(false); + public loading$: Observable = this.loadingSubject.asObservable(); + public totalResult: number = 0; + public membersSubject: BehaviorSubject + = new BehaviorSubject([]); + + public OrgState: any = OrgState; + constructor(private orgService: OrgService, private dialog: MatDialog, + private toast: ToastService, + private router: Router) { } + + public ngOnInit(): void { + this.loadMembers(0, 25, 'asc'); + } + + public loadMembers(pageIndex: number, pageSize: number, sortDirection?: string): void { + const offset = pageIndex * pageSize; + + this.loadingSubject.next(true); + from(this.orgService.SearchMyOrgMembers(pageSize, offset)).pipe( + map(resp => { + this.totalResult = resp.toObject().totalResult; + return resp.toObject().resultList; + }), + catchError(() => of([])), + finalize(() => this.loadingSubject.next(false)), + ).subscribe(members => { + console.log(members); + this.membersSubject.next(members); + }); + } + + public openAddMember(): void { + const dialogRef = this.dialog.open(MemberCreateDialogComponent, { + data: { + creationType: CreationType.ORG, + }, + width: '400px', + }); + + dialogRef.afterClosed().subscribe(resp => { + if (resp) { + const users: User.AsObject[] = resp.users; + const roles: string[] = resp.roles; + + if (users && users.length && roles && roles.length) { + Promise.all(users.map(user => { + return this.orgService.AddMyOrgMember(user.id, roles); + })).then(() => { + this.toast.showError('members added'); + }).catch(error => { + this.toast.showError(error.message); + }); + } + } + }); + } + + public showDetail(): void { + if (this.org?.state === OrgState.ORGSTATE_ACTIVE) { + this.router.navigate(['orgs', this.org.id, 'members']); + } + } +} diff --git a/console/src/app/pages/orgs/org-contributors/org-contributors.module.ts b/console/src/app/pages/orgs/org-contributors/org-contributors.module.ts new file mode 100644 index 0000000000..02bd6a2a05 --- /dev/null +++ b/console/src/app/pages/orgs/org-contributors/org-contributors.module.ts @@ -0,0 +1,42 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatIconModule } from '@angular/material/icon'; +import { MatPaginatorModule } from '@angular/material/paginator'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatTableModule } from '@angular/material/table'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { RouterModule } from '@angular/router'; +import { TranslateModule } from '@ngx-translate/core'; +import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; + +import { MemberCreateDialogModule } from '../../../modules/add-member-dialog/member-create-dialog.module'; +import { OrgContributorsComponent } from './org-contributors.component'; + + +@NgModule({ + declarations: [OrgContributorsComponent], + imports: [ + CommonModule, + FormsModule, + MemberCreateDialogModule, + HasRoleModule, + MatButtonModule, + MatDialogModule, + MatTableModule, + MatPaginatorModule, + MatIconModule, + RouterModule, + MatProgressSpinnerModule, + MatCheckboxModule, + MatTooltipModule, + TranslateModule, + ], + exports: [ + OrgContributorsComponent, + ], +}) +export class OrgContributorsModule { } diff --git a/console/src/app/pages/orgs/org-detail/org-detail.component.html b/console/src/app/pages/orgs/org-detail/org-detail.component.html index fac73b81dc..5267b13bc7 100644 --- a/console/src/app/pages/orgs/org-detail/org-detail.component.html +++ b/console/src/app/pages/orgs/org-detail/org-detail.component.html @@ -1,23 +1,13 @@ -
- +

{{org?.name}}

{{'ORG_DETAIL.DESCRIPTION' | translate}}

- - -

{{ 'ORG_DETAIL.MEMBER.TITLE' | translate }}

- - + +
- -
- -
-
-
@@ -31,7 +21,14 @@
-

{{ 'CHANGES.ORG.TITLE' | translate }}

- + + + + + + + + +
\ No newline at end of file diff --git a/console/src/app/pages/orgs/org-grid/org-grid.component.html b/console/src/app/pages/orgs/org-grid/org-grid.component.html index 0c1d4c2a6f..9e6ebce2d6 100644 --- a/console/src/app/pages/orgs/org-grid/org-grid.component.html +++ b/console/src/app/pages/orgs/org-grid/org-grid.component.html @@ -44,5 +44,12 @@
+ + +
+ add + Add new organization +
+
\ No newline at end of file diff --git a/console/src/app/pages/orgs/org-grid/org-grid.component.scss b/console/src/app/pages/orgs/org-grid/org-grid.component.scss index 3894af4032..90c2976b27 100644 --- a/console/src/app/pages/orgs/org-grid/org-grid.component.scss +++ b/console/src/app/pages/orgs/org-grid/org-grid.component.scss @@ -53,7 +53,7 @@ h1 { } &.active { - border-color: #db4c69; + border: 2px solid #db4c69; } .selection-icon { @@ -186,4 +186,40 @@ h1 { } } } + + .add-org-button { + z-index: 100; + flex-basis: 250px; + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + min-height: 166px; + border-radius: 0.5rem; + margin: 1rem; + box-sizing: border-box; + font-family: 'Rubik', sans-serif; + + .icon { + display: flex; + justify-content: center; + align-self: center; + margin-bottom: 1rem; + height: 2.5rem; + line-height: 2.5rem; + font-size: 2.5rem; + } + + &:hover { + background-color: #ffffff25; + + .icon, + span { + &.disabled { + color: gray; + } + } + } + } } \ No newline at end of file diff --git a/console/src/app/pages/orgs/org-members/org-members-datasource.ts b/console/src/app/pages/orgs/org-members/org-members-datasource.ts index 5233ae1543..d533aad3f4 100644 --- a/console/src/app/pages/orgs/org-members/org-members-datasource.ts +++ b/console/src/app/pages/orgs/org-members/org-members-datasource.ts @@ -1,17 +1,17 @@ import { DataSource } from '@angular/cdk/collections'; import { BehaviorSubject, from, Observable, of } from 'rxjs'; import { catchError, finalize, map } from 'rxjs/operators'; -import { OrgMember } from 'src/app/proto/generated/management_pb'; +import { ProjectMember, ProjectMemberSearchResponse } from 'src/app/proto/generated/management_pb'; import { OrgService } from 'src/app/services/org.service'; /** - * Data source for the OrgMembers view. This class should + * Data source for the ProjectMembers view. This class should * encapsulate all logic for fetching and manipulating the displayed data * (including sorting, pagination, and filtering). */ -export class OrgMembersDataSource extends DataSource { +export class ProjectMembersDataSource extends DataSource { public totalResult: number = 0; - public membersSubject: BehaviorSubject = new BehaviorSubject([]); + public membersSubject: BehaviorSubject = new BehaviorSubject([]); private loadingSubject: BehaviorSubject = new BehaviorSubject(false); public loading$: Observable = this.loadingSubject.asObservable(); @@ -19,21 +19,27 @@ export class OrgMembersDataSource extends DataSource { super(); } - public loadMembers(pageIndex: number, pageSize: number, sortDirection?: string): void { + public loadMembers( + pageIndex: number, pageSize: number, grantId?: string, sortDirection?: string): void { const offset = pageIndex * pageSize; this.loadingSubject.next(true); - from(this.orgService.SearchMyOrgMembers(pageSize, offset)).pipe( - map(resp => { - this.totalResult = resp.toObject().totalResult; - return resp.toObject().resultList; - }), - catchError(() => of([])), - finalize(() => this.loadingSubject.next(false)), - ).subscribe(members => { - console.log(members); - this.membersSubject.next(members); - }); + // TODO + const promise: Promise = + this.orgService.SearchMyOrgMembers(pageSize, offset); + if (promise) { + from(promise).pipe( + map(resp => { + this.totalResult = resp.toObject().totalResult; + console.log(this.totalResult); + return resp.toObject().resultList; + }), + catchError(() => of([])), + finalize(() => this.loadingSubject.next(false)), + ).subscribe(members => { + this.membersSubject.next(members); + }); + } } @@ -42,7 +48,7 @@ export class OrgMembersDataSource extends DataSource { * the returned stream emits new items. * @returns A stream of the items to be rendered. */ - public connect(): Observable { + public connect(): Observable { return this.membersSubject.asObservable(); } diff --git a/console/src/app/pages/orgs/org-members/org-members-routing.module.ts b/console/src/app/pages/orgs/org-members/org-members-routing.module.ts new file mode 100644 index 0000000000..270d62a588 --- /dev/null +++ b/console/src/app/pages/orgs/org-members/org-members-routing.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { OrgMembersComponent } from './org-members.component'; + +const routes: Routes = [ + { + path: '', + component: OrgMembersComponent, + data: { animation: 'AddPage' }, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class OrgMembersRoutingModule { } diff --git a/console/src/app/pages/orgs/org-members/org-members.component.html b/console/src/app/pages/orgs/org-members/org-members.component.html index 413e3fe043..2278aeb429 100644 --- a/console/src/app/pages/orgs/org-members/org-members.component.html +++ b/console/src/app/pages/orgs/org-members/org-members.component.html @@ -1,87 +1,105 @@ -
-
- - {{'ORG_DETAIL.TABLE.TOTAL' | translate}} - {{dataSource.membersSubject.value.length}} - - - {{'ORG_DETAIL.TABLE.SELECTION' | translate}} - {{selection?.selected?.length}} - +
+
+ +
+
+

{{org?.name}} {{ 'ORG.MEMBER.TITLE' | translate }}

+

{{ 'ORG.MEMBER.DESCRIPTION' | translate }}

+
+ +
+
+ + {{'ORG_DETAIL.TABLE.TOTAL' | translate}} + {{dataSource?.membersSubject.value.length}} + + + {{'ORG_DETAIL.TABLE.SELECTION' | translate}} + {{selection?.selected?.length}} + +
+ + + + + + + add{{ 'ACTIONS.NEW' | translate }} + + +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + {{ 'PROJECT.MEMBER.FIRSTNAME' | translate }} + {{member.firstName}} {{ 'PROJECT.MEMBER.LASTNAME' | translate }} + {{member.lastName}} {{ 'PROJECT.MEMBER.USERNAME' | translate }} + {{member.userName}} {{ 'PROJECT.MEMBER.EMAIL' | translate }} + {{member.email}} + {{ 'PROJECT.MEMBER.ROLES' | translate }} + + {{ 'ROLES.'+role | translate }} +
+ + + +
+
- - - - - - - -
- -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - {{ 'ORG_DETAIL.MEMBER.FIRSTNAME' | translate }} - {{member.firstName}} {{ 'ORG_DETAIL.MEMBER.LASTNAME' | translate }} - {{member.lastName}} {{ 'ORG_DETAIL.MEMBER.USERNAME' | translate }} - {{member.userName}} {{ 'ORG_DETAIL.MEMBER.EMAIL' | translate }} - {{member.email}} - {{ 'ORG_DETAIL.MEMBER.ROLES' | translate }} - {{'ROLES.'+role | translate }} - -
- - -
\ No newline at end of file diff --git a/console/src/app/pages/orgs/org-members/org-members.component.scss b/console/src/app/pages/orgs/org-members/org-members.component.scss index fe123a8cdd..1bd190f184 100644 --- a/console/src/app/pages/orgs/org-members/org-members.component.scss +++ b/console/src/app/pages/orgs/org-members/org-members.component.scss @@ -1,36 +1,74 @@ +.container { + display: flex; + padding-bottom: 3rem; - -h1 { - font-family: ailerons; + .left { + width: 100px; + display: flex; + padding: 1rem; + justify-content: center; + + a { + margin-top: .2rem; + } + } + + .right { + flex: 1; + padding-top: 1rem; + + .head { + display: flex; + align-items: center; + border-bottom: 1px solid #ffffff20; + margin-bottom: 2rem; + flex-wrap: wrap; + + a { + display: block; + } + + h1 { + font-size: 1.2rem; + } + + .desc { + width: 100%; + display: block; + font-size: .9rem; + color: #81868a; + } + } + } } .table-header-row { - display: flex; - align-items: center; + display: flex; + align-items: center; - .col { - display: flex; - flex-direction: column; - .desc { - font-size: .8rem; - color: #81868a; - } - .count { - font-size: 2rem; - } - } + .col { + display: flex; + flex-direction: column; + .desc { + font-size: .8rem; + color: #81868a; + } + .count { + font-size: 2rem; + } + } - .fill-space { - flex: 1; - } + .fill-space { + flex: 1; + } - .icon-button { - margin-right: .5rem; - } + .icon-button { + margin-right: .5rem; + } - .add-button { - border-radius: .5rem; - } + .add-button { + border-radius: .5rem; + } } .table-wrapper { @@ -41,12 +79,12 @@ h1 { align-items: center; justify-content: center; } + table, mat-paginator { width: 100%; td, th { - padding: 0 1rem; - + padding: .5rem; &:first-child { padding-left: 0; padding-right: 1rem; @@ -57,8 +95,11 @@ h1 { } } + .action { + width: 40px; + } + .data-row { - cursor: pointer; &:hover { background-color: #ffffff05; } @@ -79,4 +120,4 @@ h1 { .pointer { outline: none; cursor: pointer; -} +} \ No newline at end of file diff --git a/console/src/app/pages/orgs/org-members/org-members.component.spec.ts b/console/src/app/pages/orgs/org-members/org-members.component.spec.ts index fdfd32172f..887bb43015 100644 --- a/console/src/app/pages/orgs/org-members/org-members.component.spec.ts +++ b/console/src/app/pages/orgs/org-members/org-members.component.spec.ts @@ -4,15 +4,15 @@ import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { OrgMembersComponent } from './org-members.component'; +import { ProjectMembersComponent } from './project-members.component'; -describe('OrgMembersComponent', () => { - let component: OrgMembersComponent; - let fixture: ComponentFixture; +describe('ProjectMembersComponent', () => { + let component: ProjectMembersComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [OrgMembersComponent], + declarations: [ProjectMembersComponent], imports: [ NoopAnimationsModule, MatPaginatorModule, @@ -23,7 +23,7 @@ describe('OrgMembersComponent', () => { })); beforeEach(() => { - fixture = TestBed.createComponent(OrgMembersComponent); + fixture = TestBed.createComponent(ProjectMembersComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/console/src/app/pages/orgs/org-members/org-members.component.ts b/console/src/app/pages/orgs/org-members/org-members.component.ts index a9e3c9ea64..35c1270c2c 100644 --- a/console/src/app/pages/orgs/org-members/org-members.component.ts +++ b/console/src/app/pages/orgs/org-members/org-members.component.ts @@ -1,44 +1,46 @@ import { SelectionModel } from '@angular/cdk/collections'; -import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; +import { AfterViewInit, Component, ViewChild } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { MatPaginator } from '@angular/material/paginator'; import { MatTable } from '@angular/material/table'; +import { ActivatedRoute } from '@angular/router'; import { tap } from 'rxjs/operators'; -import { OrgMember, User } from 'src/app/proto/generated/management_pb'; +import { CreationType, MemberCreateDialogComponent } from 'src/app/modules/add-member-dialog/member-create-dialog.component'; +import { User } from 'src/app/proto/generated/auth_pb'; +import { Org, ProjectMember, ProjectType } from 'src/app/proto/generated/management_pb'; import { OrgService } from 'src/app/services/org.service'; import { ToastService } from 'src/app/services/toast.service'; -import { - CreationType, - ProjectMemberCreateDialogComponent, -} from '../../../modules/add-member-dialog/project-member-create-dialog.component'; -import { OrgMembersDataSource } from './org-members-datasource'; +import { ProjectMembersDataSource } from './org-members-datasource'; @Component({ selector: 'app-org-members', templateUrl: './org-members.component.html', styleUrls: ['./org-members.component.scss'], }) -export class OrgMembersComponent implements AfterViewInit, OnInit { - @Input() public orgId: string = ''; - @Input() public disabled: boolean = false; +export class OrgMembersComponent implements AfterViewInit { + public org!: Org.AsObject; + public projectType: ProjectType = ProjectType.PROJECTTYPE_OWNED; + public disabled: boolean = false; @ViewChild(MatPaginator) public paginator!: MatPaginator; - @ViewChild(MatTable) public table!: MatTable; - @Output() public changedSelection: EventEmitter> = new EventEmitter(); - public dataSource!: OrgMembersDataSource; - public selection: SelectionModel = new SelectionModel(true, []); + @ViewChild(MatTable) public table!: MatTable; + public dataSource!: ProjectMembersDataSource; + public selection: SelectionModel = new SelectionModel(true, []); + /** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */ public displayedColumns: string[] = ['select', 'firstname', 'lastname', 'username', 'email', 'roles']; - constructor(private orgService: OrgService, private dialog: MatDialog, private toast: ToastService) { } - - public ngOnInit(): void { - this.dataSource = new OrgMembersDataSource(this.orgService); - this.dataSource.loadMembers(0, 25, 'asc'); - - this.selection.changed.subscribe(change => { - console.log(change); - // this.changedSelection.emit(change) + constructor(private orgService: OrgService, + private dialog: MatDialog, + private toast: ToastService, + private route: ActivatedRoute) { + this.route.params.subscribe(params => { + this.orgService.GetOrgById(params.orgid).then(org => { + this.org = org.toObject(); + console.log(this.org); + this.dataSource = new ProjectMembersDataSource(this.orgService); + this.dataSource.loadMembers(0, 25, 'asc'); + }); }); } @@ -48,6 +50,7 @@ export class OrgMembersComponent implements AfterViewInit, OnInit { tap(() => this.loadMembersPage()), ) .subscribe(); + } private loadMembersPage(): void { @@ -57,6 +60,24 @@ export class OrgMembersComponent implements AfterViewInit, OnInit { ); } + public removeProjectMemberSelection(): void { + Promise.all(this.selection.selected.map(member => { + return this.orgService.RemoveMyOrgMember(member.userId).then(() => { + this.toast.showInfo('Removed successfully'); + }).catch(error => { + this.toast.showError(error.message); + }); + })); + } + + public removeMember(member: ProjectMember.AsObject): void { + this.orgService.RemoveMyOrgMember(member.userId).then(() => { + this.toast.showInfo('Member removed successfully'); + }).catch(error => { + this.toast.showError(error.message); + }); + } + public isAllSelected(): boolean { const numSelected = this.selection.selected.length; const numRows = this.dataSource.membersSubject.value.length; @@ -66,11 +87,11 @@ export class OrgMembersComponent implements AfterViewInit, OnInit { public masterToggle(): void { this.isAllSelected() ? this.selection.clear() : - this.dataSource.membersSubject.value.forEach((row: OrgMember.AsObject) => this.selection.select(row)); + this.dataSource.membersSubject.value.forEach(row => this.selection.select(row)); } public openAddMember(): void { - const dialogRef = this.dialog.open(ProjectMemberCreateDialogComponent, { + const dialogRef = this.dialog.open(MemberCreateDialogComponent, { data: { creationType: CreationType.ORG, }, @@ -94,14 +115,4 @@ export class OrgMembersComponent implements AfterViewInit, OnInit { } }); } - - public removeSelectedOrgMembers(): void { - Promise.all(this.selection.selected.map(member => { - return this.orgService.RemoveMyOrgMember(member.userId).then(() => { - this.toast.showInfo('Removed successfully'); - }).catch(error => { - this.toast.showError(error.message); - }); - })); - } } diff --git a/console/src/app/pages/orgs/org-members/org-members.module.ts b/console/src/app/pages/orgs/org-members/org-members.module.ts index 249aa547b6..cf26527fc7 100644 --- a/console/src/app/pages/orgs/org-members/org-members.module.ts +++ b/console/src/app/pages/orgs/org-members/org-members.module.ts @@ -1,42 +1,42 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatButtonModule } from '@angular/material/button'; import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatDialogModule } from '@angular/material/dialog'; +import { MatChipsModule } from '@angular/material/chips'; import { MatIconModule } from '@angular/material/icon'; import { MatPaginatorModule } from '@angular/material/paginator'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { RouterModule } from '@angular/router'; import { TranslateModule } from '@ngx-translate/core'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; -import { ProjectMemberCreateDialogModule } from '../../../modules/add-member-dialog/project-member-create-dialog.module'; +import { OrgMembersRoutingModule } from './org-members-routing.module'; import { OrgMembersComponent } from './org-members.component'; @NgModule({ declarations: [OrgMembersComponent], imports: [ + OrgMembersRoutingModule, CommonModule, - FormsModule, - ProjectMemberCreateDialogModule, - HasRoleModule, + MatAutocompleteModule, + MatChipsModule, MatButtonModule, - MatDialogModule, + HasRoleModule, + MatCheckboxModule, + MatIconModule, MatTableModule, MatPaginatorModule, - MatIconModule, - RouterModule, - MatProgressSpinnerModule, - MatCheckboxModule, + MatSortModule, MatTooltipModule, + ReactiveFormsModule, + MatProgressSpinnerModule, + FormsModule, TranslateModule, ], - exports: [ - OrgMembersComponent, - ], }) export class OrgMembersModule { } diff --git a/console/src/app/pages/orgs/orgs-routing.module.ts b/console/src/app/pages/orgs/orgs-routing.module.ts index 02440dd1fb..6210b1d6be 100644 --- a/console/src/app/pages/orgs/orgs-routing.module.ts +++ b/console/src/app/pages/orgs/orgs-routing.module.ts @@ -32,6 +32,10 @@ const routes: Routes = [ }, loadChildren: () => import('./password-policy/password-policy.module').then(m => m.PasswordPolicyModule), }, + { + path: ':orgid/members', + loadChildren: () => import('./org-members/org-members.module').then(m => m.OrgMembersModule), + }, { path: ':id', component: OrgDetailComponent, diff --git a/console/src/app/pages/orgs/orgs.module.ts b/console/src/app/pages/orgs/orgs.module.ts index e7f0fb21ae..bedf02ab85 100644 --- a/console/src/app/pages/orgs/orgs.module.ts +++ b/console/src/app/pages/orgs/orgs.module.ts @@ -17,9 +17,9 @@ import { CardModule } from 'src/app/modules/card/card.module'; import { MetaLayoutModule } from 'src/app/modules/meta-layout/meta-layout.module'; import { ChangesModule } from '../../modules/changes/changes.module'; +import { OrgContributorsModule } from './org-contributors/org-contributors.module'; import { OrgDetailComponent } from './org-detail/org-detail.component'; import { OrgGridComponent } from './org-grid/org-grid.component'; -import { OrgMembersModule } from './org-members/org-members.module'; import { OrgsRoutingModule } from './orgs-routing.module'; import { PolicyGridComponent } from './policy-grid/policy-grid.component'; @@ -28,7 +28,7 @@ import { PolicyGridComponent } from './policy-grid/policy-grid.component'; imports: [ CommonModule, OrgsRoutingModule, - OrgMembersModule, + OrgContributorsModule, FormsModule, HasRoleModule, MatFormFieldModule, diff --git a/console/src/app/pages/project-role-create/project-role-create.component.html b/console/src/app/pages/project-role-create/project-role-create.component.html index f5d68b32c5..db04b6bf3e 100644 --- a/console/src/app/pages/project-role-create/project-role-create.component.html +++ b/console/src/app/pages/project-role-create/project-role-create.component.html @@ -18,12 +18,8 @@ {{ 'PROJECT.ROLE.KEY' | translate }} - - - - {{ 'PROJECT.ROLE.NAME' | translate }} - - + {{'ERRORS.REQUIRED' | translate}} + {{ 'PROJECT.ROLE.DISPLAY_NAME' | translate }} diff --git a/console/src/app/pages/project-role-create/project-role-create.component.ts b/console/src/app/pages/project-role-create/project-role-create.component.ts index 78240a83f2..27ac9e13d2 100644 --- a/console/src/app/pages/project-role-create/project-role-create.component.ts +++ b/console/src/app/pages/project-role-create/project-role-create.component.ts @@ -50,14 +50,13 @@ export class ProjectRoleCreateComponent implements OnInit, OnDestroy { private fb: FormBuilder, ) { this.formGroup = new FormGroup({ - key: new FormControl(''), - name: new FormControl(''), + key: new FormControl('', [Validators.required]), + // name: new FormControl(''), displayName: new FormControl(''), group: new FormControl('', [Validators.required]), }); this.formArray = new FormArray([this.formGroup]); - } public addEntry(): void { diff --git a/console/src/app/pages/projects/granted-project-detail/granted-project-detail.component.html b/console/src/app/pages/projects/granted-project-detail/granted-project-detail.component.html index fb8acbcc4c..12a6ca3035 100644 --- a/console/src/app/pages/projects/granted-project-detail/granted-project-detail.component.html +++ b/console/src/app/pages/projects/granted-project-detail/granted-project-detail.component.html @@ -4,30 +4,17 @@ arrow_back -

{{ 'PROJECT.PAGES.TITLE' | translate }} {{project?.name}}

+

{{ 'PROJECT.PAGES.TITLE' | translate }} {{project?.projectName}}

{{ 'PROJECT.PAGES.DESCRIPTION' | translate }}

- - - +
diff --git a/console/src/app/pages/projects/granted-project-detail/granted-project-detail.component.ts b/console/src/app/pages/projects/granted-project-detail/granted-project-detail.component.ts index c8e405ee3b..233babbe85 100644 --- a/console/src/app/pages/projects/granted-project-detail/granted-project-detail.component.ts +++ b/console/src/app/pages/projects/granted-project-detail/granted-project-detail.component.ts @@ -9,7 +9,7 @@ import { ChangeType } from 'src/app/modules/changes/changes.component'; import { Application, ApplicationSearchResponse, - GrantedProject, + ProjectGrantView, ProjectMember, ProjectMemberSearchResponse, ProjectRole, @@ -29,7 +29,7 @@ import { ToastService } from 'src/app/services/toast.service'; export class GrantedProjectDetailComponent implements OnInit, OnDestroy { public projectId: string = ''; public grantId: string = ''; - public project!: GrantedProject.AsObject; + public project!: ProjectGrantView.AsObject; public pageSizeRoles: number = 10; public roleDataSource: MatTableDataSource = new MatTableDataSource(); @@ -82,7 +82,7 @@ export class GrantedProjectDetailComponent implements OnInit, OnDestroy { this.grantId = grantId; if (this.projectId && this.grantId) { - this.projectService.GetGrantedProjectGrantByID(this.projectId, this.grantId).then(proj => { + this.projectService.GetGrantedProjectByID(this.projectId, this.grantId).then(proj => { this.project = proj.toObject(); console.log(this.project); this.isZitadel$ = from(this.projectService.SearchApplications(this.project.id, 100, 0).then(appsResp => { diff --git a/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.html b/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.html new file mode 100644 index 0000000000..45f3c375ad --- /dev/null +++ b/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.html @@ -0,0 +1,58 @@ +
+
+ +
+ +
+
+ +
+ + check_circle +
+ last modified on + {{ + dateFromTimestamp(item.changeDate) | date: 'EEE dd. MMM, HH:mm' + }} + {{ item.projectName }} + {{'PROJECT.STATE.'+item.state | translate}} + {{'PROJECT.TYPE.TITLE' | translate}}: + {{'PROJECT.TYPE.'+ProjectType.PROJECTTYPE_GRANTED | translate}} + created on + {{ + dateFromTimestamp(item.creationDate) | date: 'EEE dd. MMM, HH:mm' + }} + +
+ apps +
+
+ + + + + + + + +
+

{{'PROJECT.PAGES.NOITEMS' | translate}}

+
\ No newline at end of file diff --git a/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.scss b/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.scss new file mode 100644 index 0000000000..fe0ce491b5 --- /dev/null +++ b/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.scss @@ -0,0 +1,219 @@ +.view-toggle { + width: 100%; + display: flex; + justify-content: flex-end; + padding-bottom: .5rem; + border-bottom: 1px solid #2d2e30; + + .anim-list { + display: flex; + justify-content: flex-end; + align-items: center; + } + button { + &.left-button { + margin-right: 1rem; + } + } +} + +.spinner { + margin: 1rem; +} + +.container { + display: flex; + flex-wrap: wrap; + margin: 0 -1rem; + box-sizing: border-box; + + h2 { + padding: 0 1rem; + flex-basis: 100%; + } + + .item { + position: relative; + z-index: 100; + margin: 1rem; + flex-basis: 250px; + display: flex; + text-decoration: none; + cursor: pointer; + padding-top: 0; + padding-right: 0; + padding-bottom: 0; + padding-left: 1rem; + border-radius: 0.5rem; + box-sizing: border-box; + min-height: 166px; + + &.inactive { + color: #81868a; + } + + .selection-icon { + opacity: 0; + position: absolute; + top: -12px; + left: -12px; + user-select: none; + + &:hover { + color: white; + } + } + + img { + height: 50px; + width: 50px; + margin: 1rem; + } + + .text-part { + flex: 1; + display: flex; + flex-direction: column; + min-height: 70px; + padding: 0.5rem 0; + + .top { + font-size: 0.8rem; + margin-bottom: 0; + margin-top: .5rem; + color: #81868a; + } + + .name { + margin-top: 1rem; + font-size: 1.2rem; + margin-bottom: 0.5rem; + font-family: 'Rubik', sans-serif; + } + + .description { + font-size: 0.8rem; + } + + .created { + font-size: 0.8rem; + color: #81868a; + } + + .organization { + display: flex; + align-items: center; + margin-top: 1rem; + + .org_avatar { + height: 25px; + width: 25px; + border-radius: 50%; + margin: 0; + margin-right: 1rem; + } + } + + .fill-space { + flex: 1; + } + + .icons { + margin-top: 1rem; + transition: all 0.3s; + opacity: 0; + + .icon { + margin-right: 3px; + font-size: 1.3rem; + height: 1.4rem; + color: #81868a; + } + } + + span { + margin: 2px 0; + } + } + + .edit-button { + position: absolute; + bottom: 0; + right: 0; + margin: 0; + margin-bottom: 0.25rem; + } + + + &:hover { + .selection-icon { + opacity: 1; + } + + .text-part { + .icons { + opacity: 1; + } + } + } + + &.selected { + .text-part { + .icons { + opacity: 1; + } + } + + .selection-icon { + opacity: 1; + } + + .icon { + opacity: 1; + } + } + } + + .add-project-button { + z-index: 100; + flex-basis: 250px; + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + min-height: 166px; + border-radius: 0.5rem; + margin: 1rem; + box-sizing: border-box; + font-family: 'Rubik', sans-serif; + + .icon { + display: flex; + justify-content: center; + align-self: center; + margin-bottom: 1rem; + height: 2.5rem; + line-height: 2.5rem; + font-size: 2.5rem; + } + + &:hover { + background-color: #ffffff25; + + .icon, + span { + &.disabled { + color: gray; + } + } + } + } +} + +.n-items { + flex-basis: 100%; + padding: 0 1rem; + font-size: .8rem; + color: #81868a; +} diff --git a/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.spec.ts b/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.spec.ts new file mode 100644 index 0000000000..0fb88bdf68 --- /dev/null +++ b/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GrantedProjectGridComponent } from './granted-project-grid.component'; + +describe('GridComponent', () => { + let component: GrantedProjectGridComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [GrantedProjectGridComponent], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GrantedProjectGridComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.ts b/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.ts new file mode 100644 index 0000000000..be616377dd --- /dev/null +++ b/console/src/app/pages/projects/granted-project-grid/granted-project-grid.component.ts @@ -0,0 +1,65 @@ +import { animate, animateChild, query, stagger, style, transition, trigger } from '@angular/animations'; +import { SelectionModel } from '@angular/cdk/collections'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Router } from '@angular/router'; +import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb'; +import { ProjectGrantView, ProjectState, ProjectType, ProjectView } from 'src/app/proto/generated/management_pb'; +import { ProjectService } from 'src/app/services/project.service'; +import { ToastService } from 'src/app/services/toast.service'; + +@Component({ + selector: 'app-granted-project-grid', + templateUrl: './granted-project-grid.component.html', + styleUrls: ['./granted-project-grid.component.scss'], + animations: [ + trigger('list', [ + transition(':enter', [ + query('@animate', + stagger(100, animateChild()), + ), + ]), + ]), + trigger('animate', [ + transition(':enter', [ + style({ opacity: 0, transform: 'translateY(-100%)' }), + animate('100ms', style({ opacity: 1, transform: 'translateY(0)' })), + ]), + transition(':leave', [ + style({ opacity: 1, transform: 'translateY(0)' }), + animate('100ms', style({ opacity: 0, transform: 'translateY(100%)' })), + ]), + ]), + ], +}) +export class GrantedProjectGridComponent { + @Input() items: Array = []; + @Output() newClicked: EventEmitter = new EventEmitter(); + @Output() changedView: EventEmitter = new EventEmitter(); + @Input() loading: boolean = false; + + public selection: SelectionModel = new SelectionModel(true, []); + public selectedIndex: number = -1; + + public showNewProject: boolean = false; + public ProjectState: any = ProjectState; + public ProjectType: any = ProjectType; + + constructor(private router: Router, private projectService: ProjectService, private toast: ToastService) { } + + public selectItem(item: ProjectGrantView.AsObject, event?: any): void { + if (event && !event.target.classList.contains('mat-icon')) { + this.router.navigate(['projects', item.projectId, 'grant', `${item.id}`]); + } else if (!event) { + this.router.navigate(['projects', item.projectId, 'grant', `${item.id}`]); + } + } + + public addItem(): void { + this.newClicked.emit(true); + } + + public dateFromTimestamp(date: Timestamp.AsObject): any { + const ts: Date = new Date(date.seconds * 1000 + date.nanos / 1000); + return ts; + } +} diff --git a/console/src/app/pages/projects/granted-project-list/granted-project-list.component.html b/console/src/app/pages/projects/granted-project-list/granted-project-list.component.html new file mode 100644 index 0000000000..1656f77525 --- /dev/null +++ b/console/src/app/pages/projects/granted-project-list/granted-project-list.component.html @@ -0,0 +1,112 @@ + + + +
+ +
+ +
+
+
+ + {{'ORG_DETAIL.TABLE.TOTAL' | translate}} + {{dataSource?.data?.length}} + + + {{'ORG_DETAIL.TABLE.SELECTION' | translate}} + {{selection?.selected?.length}} + +
+ +
+ + +
+ + add{{ 'ACTIONS.NEW' | translate }} + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + {{ 'PROJECT.NAME' | translate }} {{project.name}} {{ 'PROJECT.TABLE.ORGNAME' | translate }} + {{project.orgName}} {{ 'PROJECT.TABLE.ORGDOMAIN' | translate }} + {{project?.orgDomain}} {{ 'PROJECT.TABLE.STATE' | translate }} {{'PROJECT.STATE.'+project.state | translate}} {{ 'PROJECT.TABLE.TYPE' | translate }} + {{'PROJECT.TYPE.'+project.type | translate}} + {{ 'PROJECT.TABLE.CREATIONDATE' | translate }} + {{dateFromTimestamp(project.creationDate) | date: 'EEE dd. MMM, HH:mm'}} + {{ 'PROJECT.TABLE.CHANGEDATE' | translate }} + {{dateFromTimestamp(project.changeDate) | date: 'EEE dd. MMM, HH:mm'}} +
+ +
+
\ No newline at end of file diff --git a/console/src/app/pages/projects/granted-project-list/granted-project-list.component.scss b/console/src/app/pages/projects/granted-project-list/granted-project-list.component.scss new file mode 100644 index 0000000000..3d6bb21263 --- /dev/null +++ b/console/src/app/pages/projects/granted-project-list/granted-project-list.component.scss @@ -0,0 +1,98 @@ + +.content { + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 0 -.5rem; + + mat-form-field { + flex: 1 1 33%; + margin: 0 .5rem; + } +} + +.view-toggle { + width: 100%; + display: flex; + justify-content: flex-end; + + button { + display: block; + border-radius: .5rem; + } +} + +.table-header-row { + display: flex; + align-items: center; + + .col { + display: flex; + flex-direction: column; + .desc { + font-size: .8rem; + color: #81868a; + } + .count { + font-size: 2rem; + } + } + + .fill-space { + flex: 1; + } + + .action-btns { + display: flex; + align-items: center; + } + + .icon-button { + margin-right: .5rem; + } + + .add-button { + border-radius: .5rem; + } +} + +.table-wrapper { + overflow: auto; + + .spinner-container { + display: flex; + align-items: center; + justify-content: center; + } + + table, mat-paginator { + width: 100%; + background-color: #2d2e30; + td, th { + &:first-child { + padding-left: 0; + padding-right: 1rem; + } + + &:last-child { + padding-right: 0; + } + } + + .data-row { + cursor: pointer; + &:hover { + background-color: #ffffff05; + } + } + + .selection { + width: 50px; + max-width: 50px; + } + } +} + +tr { + outline: none; +} \ No newline at end of file diff --git a/console/src/app/pages/projects/granted-project-list/granted-project-list.component.spec.ts b/console/src/app/pages/projects/granted-project-list/granted-project-list.component.spec.ts new file mode 100644 index 0000000000..80b8905b79 --- /dev/null +++ b/console/src/app/pages/projects/granted-project-list/granted-project-list.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GrantedProjectListComponent } from './granted-project-list.component'; + +describe('ProjectListComponent', () => { + let component: GrantedProjectListComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [GrantedProjectListComponent], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GrantedProjectListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/console/src/app/pages/projects/project-list/project-list.component.ts b/console/src/app/pages/projects/granted-project-list/granted-project-list.component.ts similarity index 81% rename from console/src/app/pages/projects/project-list/project-list.component.ts rename to console/src/app/pages/projects/granted-project-list/granted-project-list.component.ts index 01a584277f..d06d2ef35c 100644 --- a/console/src/app/pages/projects/project-list/project-list.component.ts +++ b/console/src/app/pages/projects/granted-project-list/granted-project-list.component.ts @@ -3,18 +3,18 @@ import { SelectionModel } from '@angular/cdk/collections'; import { Component, OnDestroy, OnInit } from '@angular/core'; import { PageEvent } from '@angular/material/paginator'; import { MatTableDataSource } from '@angular/material/table'; -import { ActivatedRoute, Router } from '@angular/router'; +import { Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb'; import { BehaviorSubject, Observable, Subscription } from 'rxjs'; -import { GrantedProject, Project } from 'src/app/proto/generated/management_pb'; +import { ProjectGrantView } from 'src/app/proto/generated/management_pb'; import { ProjectService } from 'src/app/services/project.service'; import { ToastService } from 'src/app/services/toast.service'; @Component({ - selector: 'app-project-list', - templateUrl: './project-list.component.html', - styleUrls: ['./project-list.component.scss'], + selector: 'app-granted-project-list', + templateUrl: './granted-project-list.component.html', + styleUrls: ['./granted-project-list.component.scss'], animations: [ trigger('list', [ transition(':enter', [ @@ -35,12 +35,15 @@ import { ToastService } from 'src/app/services/toast.service'; ]), ], }) -export class ProjectListComponent implements OnInit, OnDestroy { +export class GrantedProjectListComponent implements OnInit, OnDestroy { public totalResult: number = 0; - public dataSource: MatTableDataSource = new MatTableDataSource(); - public projectList: GrantedProject.AsObject[] = []; + public dataSource: MatTableDataSource = + new MatTableDataSource(); + + public grantedProjectList: ProjectGrantView.AsObject[] = []; public displayedColumns: string[] = ['select', 'name', 'orgName', 'orgDomain', 'type', 'state', 'creationDate', 'changeDate']; - public selection: SelectionModel = new SelectionModel(true, []); + public selection: SelectionModel = new SelectionModel(true, []); + private loadingSubject: BehaviorSubject = new BehaviorSubject(false); public loading$: Observable = this.loadingSubject.asObservable(); @@ -49,13 +52,12 @@ export class ProjectListComponent implements OnInit, OnDestroy { constructor(private router: Router, public translate: TranslateService, - private route: ActivatedRoute, private projectService: ProjectService, private toast: ToastService, ) { } public ngOnInit(): void { - this.subscription = this.route.params.subscribe(() => this.getData(10, 0)); + this.getData(10, 0); } public ngOnDestroy(): void { @@ -83,14 +85,13 @@ export class ProjectListComponent implements OnInit, OnDestroy { } private async getData(limit: number, offset: number): Promise { - console.log('getprojects'); this.loadingSubject.next(true); this.projectService.SearchGrantedProjects(limit, offset).then(res => { - this.projectList = res.toObject().resultList; + this.grantedProjectList = res.toObject().resultList; this.totalResult = res.toObject().totalResult; - this.dataSource.data = this.projectList; + this.dataSource.data = this.grantedProjectList; this.loadingSubject.next(false); - console.log(this.projectList); + console.log(this.grantedProjectList); }).catch(error => { console.error(error); this.toast.showError(error.message); diff --git a/console/src/app/pages/projects/project-contributors/project-contributors.component.html b/console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.html similarity index 73% rename from console/src/app/pages/projects/project-contributors/project-contributors.component.html rename to console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.html index 8ba3043576..2e7f72d995 100644 --- a/console/src/app/pages/projects/project-contributors/project-contributors.component.html +++ b/console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.html @@ -5,15 +5,10 @@
-
- face +
-
diff --git a/console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.scss b/console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.scss new file mode 100644 index 0000000000..9585a8cd40 --- /dev/null +++ b/console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.scss @@ -0,0 +1,72 @@ +.groups { + padding-top: 1rem; + + .header { + display: block; + margin-bottom: 1rem; + font-weight: 400; + } + + .sub-header { + font-size: .8rem; + color: #81868a; + } + + .people { + display: flex; + align-items: center; + flex-wrap: wrap; + margin-bottom: 1rem; + + .owner { + margin-right: 1rem; + } + + .img-list { + width: 100%; + margin-top: 0.5rem; + margin-left: 1rem; + display: flex; + align-items: center; + + .avatar-img, .avatar-circle { + float: left; + margin: 0 8px 0 -15px; + height: 32px; + width: 32px; + border-radius: 50%; + box-shadow: 0 5px 5px rgba(0, 0, 0, 0.5), 0 3px 6px rgba(0, 0, 0, 0.5); + } + + .add-img { + float: left; + margin: 0 8px 0 -15px; + } + + .avatar-img { + &:before { + content: ''; + display: block; + position: absolute; + top: 0; + bottom: 0; + height: 32px; + width: 32px; + } + } + + .avatar-circle { + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + background-color: indianred; + } + + .margin-neg { + margin-left: -1rem; + } + } + } + } + \ No newline at end of file diff --git a/console/src/app/pages/projects/project-contributors/project-contributors.component.spec.ts b/console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.spec.ts similarity index 55% rename from console/src/app/pages/projects/project-contributors/project-contributors.component.spec.ts rename to console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.spec.ts index 27702fb8f4..943cc7a23e 100644 --- a/console/src/app/pages/projects/project-contributors/project-contributors.component.spec.ts +++ b/console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.spec.ts @@ -1,20 +1,20 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ProjectContributorsComponent } from './project-contributors.component'; +import { OwnedProjectContributorsComponent } from './owned-project-contributors.component'; describe('ProjectContributorsComponent', () => { - let component: ProjectContributorsComponent; - let fixture: ComponentFixture; + let component: OwnedProjectContributorsComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ProjectContributorsComponent], + declarations: [OwnedProjectContributorsComponent], }) .compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(ProjectContributorsComponent); + fixture = TestBed.createComponent(OwnedProjectContributorsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/console/src/app/pages/projects/project-contributors/project-contributors.component.ts b/console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.ts similarity index 75% rename from console/src/app/pages/projects/project-contributors/project-contributors.component.ts rename to console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.ts index 53c2a03e95..e6378fca2d 100644 --- a/console/src/app/pages/projects/project-contributors/project-contributors.component.ts +++ b/console/src/app/pages/projects/owned-project-contributors/owned-project-contributors.component.ts @@ -5,27 +5,27 @@ import { BehaviorSubject, from, of } from 'rxjs'; import { catchError, finalize, map } from 'rxjs/operators'; import { User } from 'src/app/proto/generated/auth_pb'; import { - GrantedProject, ProjectMemberSearchResponse, ProjectMemberView, ProjectState, ProjectType, + ProjectView, } from 'src/app/proto/generated/management_pb'; import { ProjectService } from 'src/app/services/project.service'; import { ToastService } from 'src/app/services/toast.service'; import { CreationType, - ProjectMemberCreateDialogComponent, -} from '../../../modules/add-member-dialog/project-member-create-dialog.component'; + MemberCreateDialogComponent, +} from '../../../modules/add-member-dialog/member-create-dialog.component'; @Component({ - selector: 'app-project-contributors', - templateUrl: './project-contributors.component.html', - styleUrls: ['./project-contributors.component.scss'], + selector: 'app-owned-project-contributors', + templateUrl: './owned-project-contributors.component.html', + styleUrls: ['./owned-project-contributors.component.scss'], }) -export class ProjectContributorsComponent implements OnInit { - @Input() public project!: GrantedProject.AsObject; +export class OwnedProjectContributorsComponent implements OnInit { + @Input() public project!: ProjectView.AsObject; @Input() public projectType!: ProjectType; @Input() public disabled: boolean = false; @@ -45,9 +45,10 @@ export class ProjectContributorsComponent implements OnInit { console.log('project grant members'); const promise: Promise | undefined = this.projectType === ProjectType.PROJECTTYPE_OWNED ? - this.projectService.SearchProjectMembers(this.project.id, 100, 0) : + this.projectService.SearchProjectMembers(this.project.projectId, 100, 0) : this.projectType === ProjectType.PROJECTTYPE_GRANTED ? - this.projectService.SearchProjectGrantMembers(this.project.id, this.project.grantId, 100, 0) : undefined; + this.projectService.SearchProjectGrantMembers(this.project.projectId, + this.project.projectId, 100, 0) : undefined; if (promise) { from(promise).pipe( map(resp => { @@ -64,12 +65,10 @@ export class ProjectContributorsComponent implements OnInit { } public openAddMember(): void { - const dialogRef = this.dialog.open(ProjectMemberCreateDialogComponent, { + const dialogRef = this.dialog.open(MemberCreateDialogComponent, { data: { - creationType: this.project.type === - ProjectType.PROJECTTYPE_GRANTED ? CreationType.PROJECT_GRANTED : - ProjectType.PROJECTTYPE_OWNED ? CreationType.PROJECT_OWNED : undefined, - projectId: this.project.id, + creationType: CreationType.PROJECT_OWNED, + projectId: this.project.projectId, }, width: '400px', }); @@ -81,7 +80,7 @@ export class ProjectContributorsComponent implements OnInit { if (users && users.length && roles && roles.length) { Promise.all(users.map(user => { - return this.projectService.AddProjectMember(this.project.id, user.id, roles); + return this.projectService.AddProjectMember(this.project.projectId, user.id, roles); })).then(() => { this.toast.showError('members added'); }).catch(error => { @@ -94,7 +93,7 @@ export class ProjectContributorsComponent implements OnInit { public showDetail(): void { if (this.project?.state === ProjectState.PROJECTSTATE_ACTIVE) { - this.router.navigate(['projects', this.project.id, 'members']); + this.router.navigate(['projects', this.project.projectId, 'members']); } } } diff --git a/console/src/app/pages/projects/project-detail/project-detail.component.html b/console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.html similarity index 86% rename from console/src/app/pages/projects/project-detail/project-detail.component.html rename to console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.html index 76db82f4f8..7d2ead03bc 100644 --- a/console/src/app/pages/projects/project-detail/project-detail.component.html +++ b/console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.html @@ -6,11 +6,11 @@

{{ 'PROJECT.PAGES.TITLE' | translate }} {{project?.name}}

- +
@@ -23,10 +23,10 @@ - - @@ -38,15 +38,16 @@ + [disabled]="project?.state !== ProjectState.PROJECTSTATE_ACTIVE || (isZitadel$ | async)" + (changeView)="grid = false" [projectId]="projectId"> - @@ -87,10 +88,10 @@ - - + diff --git a/console/src/app/pages/projects/project-detail/project-detail.component.scss b/console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.scss similarity index 100% rename from console/src/app/pages/projects/project-detail/project-detail.component.scss rename to console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.scss diff --git a/console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.spec.ts b/console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.spec.ts new file mode 100644 index 0000000000..56158825ae --- /dev/null +++ b/console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OwnedProjectDetailComponent } from './owned-project-detail.component'; + + +describe('ProjectDetailComponent', () => { + let component: OwnedProjectDetailComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [OwnedProjectDetailComponent], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OwnedProjectDetailComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/console/src/app/pages/projects/project-detail/project-detail.component.ts b/console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.ts similarity index 93% rename from console/src/app/pages/projects/project-detail/project-detail.component.ts rename to console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.ts index ecb7a9dbff..2a389a8123 100644 --- a/console/src/app/pages/projects/project-detail/project-detail.component.ts +++ b/console/src/app/pages/projects/owned-project-detail/owned-project-detail.component.ts @@ -9,7 +9,6 @@ import { ChangeType } from 'src/app/modules/changes/changes.component'; import { Application, ApplicationSearchResponse, - GrantedProject, Project, ProjectMember, ProjectMemberSearchResponse, @@ -23,14 +22,14 @@ import { ProjectService } from 'src/app/services/project.service'; import { ToastService } from 'src/app/services/toast.service'; @Component({ - selector: 'app-project-detail', - templateUrl: './project-detail.component.html', - styleUrls: ['./project-detail.component.scss'], + selector: 'app-owned-project-detail', + templateUrl: './owned-project-detail.component.html', + styleUrls: ['./owned-project-detail.component.scss'], }) -export class ProjectDetailComponent implements OnInit, OnDestroy { +export class OwnedProjectDetailComponent implements OnInit, OnDestroy { public projectId: string = ''; - public project!: Project.AsObject | GrantedProject.AsObject; + public project!: Project.AsObject; public pageSizeRoles: number = 10; public roleDataSource: MatTableDataSource = new MatTableDataSource(); @@ -84,6 +83,7 @@ export class ProjectDetailComponent implements OnInit, OnDestroy { if (this.projectId) { this.projectService.GetProjectById(id).then(proj => { this.project = proj.toObject(); + console.log(this.project); this.isZitadel$ = from(this.projectService.SearchApplications(this.project.id, 100, 0).then(appsResp => { const ret = appsResp.toObject().resultList .filter(app => app.oidcConfig?.clientId === this.grpcService.clientid).length > 0; diff --git a/console/src/app/pages/projects/project-grid/project-grid.component.html b/console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.html similarity index 91% rename from console/src/app/pages/projects/project-grid/project-grid.component.html rename to console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.html index 3017ea6864..ea654cc1dc 100644 --- a/console/src/app/pages/projects/project-grid/project-grid.component.html +++ b/console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.html @@ -29,8 +29,8 @@ }} {{ item.name }} {{'PROJECT.STATE.'+item.state | translate}} - {{'PROJECT.TYPE.TITLE' | translate}}: - {{'PROJECT.TYPE.'+item.type | translate}} + {{'PROJECT.TYPE.TITLE' | translate}}: + {{'PROJECT.TYPE.'+ProjectType.PROJECTTYPE_OWNED | translate}} created on {{ dateFromTimestamp(item.creationDate) | date: 'EEE dd. MMM, HH:mm' @@ -55,6 +55,9 @@
+ +

{{'PROJECT.PAGES.NOITEMS' | translate}}

+
add Add new project diff --git a/console/src/app/pages/projects/project-grid/project-grid.component.scss b/console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.scss similarity index 96% rename from console/src/app/pages/projects/project-grid/project-grid.component.scss rename to console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.scss index b8c650cd85..1f0d023f12 100644 --- a/console/src/app/pages/projects/project-grid/project-grid.component.scss +++ b/console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.scss @@ -27,6 +27,11 @@ margin: 0 -1rem; box-sizing: border-box; + h2 { + padding: 0 1rem; + flex-basis: 100%; + } + .item { position: relative; z-index: 100; @@ -204,4 +209,11 @@ } } } +} + +.n-items { + padding: 0 1rem; + font-size: .8rem; + color: #81868a; + flex-basis: 100%; } \ No newline at end of file diff --git a/console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.spec.ts b/console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.spec.ts new file mode 100644 index 0000000000..94af24d0ca --- /dev/null +++ b/console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OwnedProjectGridComponent } from './owned-project-grid.component'; + +describe('GridComponent', () => { + let component: OwnedProjectGridComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [OwnedProjectGridComponent], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OwnedProjectGridComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/console/src/app/pages/projects/project-grid/project-grid.component.ts b/console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.ts similarity index 66% rename from console/src/app/pages/projects/project-grid/project-grid.component.ts rename to console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.ts index 17716a048b..63ca7d5ed2 100644 --- a/console/src/app/pages/projects/project-grid/project-grid.component.ts +++ b/console/src/app/pages/projects/owned-project-grid/owned-project-grid.component.ts @@ -3,14 +3,14 @@ import { SelectionModel } from '@angular/cdk/collections'; import { Component, EventEmitter, Input, Output } from '@angular/core'; import { Router } from '@angular/router'; import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb'; -import { GrantedProject, Project, ProjectState } from 'src/app/proto/generated/management_pb'; +import { ProjectState, ProjectType, ProjectView } from 'src/app/proto/generated/management_pb'; import { ProjectService } from 'src/app/services/project.service'; import { ToastService } from 'src/app/services/toast.service'; @Component({ - selector: 'app-project-grid', - templateUrl: './project-grid.component.html', - styleUrls: ['./project-grid.component.scss'], + selector: 'app-owned-project-grid', + templateUrl: './owned-project-grid.component.html', + styleUrls: ['./owned-project-grid.component.scss'], animations: [ trigger('list', [ transition(':enter', [ @@ -31,33 +31,26 @@ import { ToastService } from 'src/app/services/toast.service'; ]), ], }) -export class ProjectGridComponent { - @Input() items: Array = []; +export class OwnedProjectGridComponent { + @Input() items: Array = []; @Output() newClicked: EventEmitter = new EventEmitter(); @Output() changedView: EventEmitter = new EventEmitter(); @Input() loading: boolean = false; - public selection: SelectionModel = new SelectionModel(true, []); + public selection: SelectionModel = new SelectionModel(true, []); public selectedIndex: number = -1; public showNewProject: boolean = false; public ProjectState: any = ProjectState; + public ProjectType: any = ProjectType; constructor(private router: Router, private projectService: ProjectService, private toast: ToastService) { } - public selectItem(item: GrantedProject.AsObject, event?: any): void { + public selectItem(item: ProjectView.AsObject, event?: any): void { if (event && !event.target.classList.contains('mat-icon')) { - if (item.grantId) { - this.router.navigate(['projects', item.id, 'grant', `${item.grantId}`]); - } else { - this.router.navigate(['/projects', item.id]); - } + this.router.navigate(['/projects', item.projectId]); } else if (!event) { - if (item.grantId) { - this.router.navigate(['projects', item.id, 'grant', `${item.grantId}`]); - } else { - this.router.navigate(['/projects', item.id]); - } + this.router.navigate(['/projects', item.projectId]); } } @@ -70,9 +63,9 @@ export class ProjectGridComponent { return ts; } - public reactivateProjects(selected: Project.AsObject[]): void { + public reactivateProjects(selected: ProjectView.AsObject[]): void { Promise.all([selected.map(proj => { - return this.projectService.ReactivateProject(proj.id); + return this.projectService.ReactivateProject(proj.projectId); })]).then(() => { this.toast.showInfo('Successful reactivated all projects'); }).catch(error => { @@ -80,9 +73,9 @@ export class ProjectGridComponent { }); } - public deactivateProjects(selected: Project.AsObject[]): void { + public deactivateProjects(selected: ProjectView.AsObject[]): void { Promise.all([selected.map(proj => { - return this.projectService.DeactivateProject(proj.id); + return this.projectService.DeactivateProject(proj.projectId); })]).then(() => { this.toast.showInfo('Successful deactivated all projects'); }).catch(error => { diff --git a/console/src/app/pages/projects/owned-project-list/owned-project-list.component.html b/console/src/app/pages/projects/owned-project-list/owned-project-list.component.html new file mode 100644 index 0000000000..2ae0c7f2e7 --- /dev/null +++ b/console/src/app/pages/projects/owned-project-list/owned-project-list.component.html @@ -0,0 +1,111 @@ + + + +
+ +
+
+
+
+ + {{'ORG_DETAIL.TABLE.TOTAL' | translate}} + {{dataSource?.data?.length}} + + + {{'ORG_DETAIL.TABLE.SELECTION' | translate}} + {{selection?.selected?.length}} + +
+ +
+ + +
+ + add{{ 'ACTIONS.NEW' | translate }} + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + {{ 'PROJECT.NAME' | translate }} {{project.name}} {{ 'PROJECT.TABLE.ORGNAME' | translate }} + {{project.orgName}} {{ 'PROJECT.TABLE.ORGDOMAIN' | translate }} + {{project?.orgDomain}} {{ 'PROJECT.TABLE.STATE' | translate }} {{'PROJECT.STATE.'+project.state | translate}} {{ 'PROJECT.TABLE.TYPE' | translate }} + {{'PROJECT.TYPE.'+project.type | translate}} + {{ 'PROJECT.TABLE.CREATIONDATE' | translate }} + {{dateFromTimestamp(project.creationDate) | date: 'EEE dd. MMM, HH:mm'}} + {{ 'PROJECT.TABLE.CHANGEDATE' | translate }} + {{dateFromTimestamp(project.changeDate) | date: 'EEE dd. MMM, HH:mm'}} +
+ +
+
\ No newline at end of file diff --git a/console/src/app/pages/projects/project-list/project-list.component.scss b/console/src/app/pages/projects/owned-project-list/owned-project-list.component.scss similarity index 100% rename from console/src/app/pages/projects/project-list/project-list.component.scss rename to console/src/app/pages/projects/owned-project-list/owned-project-list.component.scss diff --git a/console/src/app/pages/projects/owned-project-list/owned-project-list.component.spec.ts b/console/src/app/pages/projects/owned-project-list/owned-project-list.component.spec.ts new file mode 100644 index 0000000000..80b8905b79 --- /dev/null +++ b/console/src/app/pages/projects/owned-project-list/owned-project-list.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GrantedProjectListComponent } from './granted-project-list.component'; + +describe('ProjectListComponent', () => { + let component: GrantedProjectListComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [GrantedProjectListComponent], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GrantedProjectListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/console/src/app/pages/projects/owned-project-list/owned-project-list.component.ts b/console/src/app/pages/projects/owned-project-list/owned-project-list.component.ts new file mode 100644 index 0000000000..e9687a8d17 --- /dev/null +++ b/console/src/app/pages/projects/owned-project-list/owned-project-list.component.ts @@ -0,0 +1,135 @@ +import { animate, animateChild, query, stagger, style, transition, trigger } from '@angular/animations'; +import { SelectionModel } from '@angular/cdk/collections'; +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { PageEvent } from '@angular/material/paginator'; +import { MatTableDataSource } from '@angular/material/table'; +import { Router } from '@angular/router'; +import { TranslateService } from '@ngx-translate/core'; +import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb'; +import { BehaviorSubject, Observable, Subscription } from 'rxjs'; +import { ProjectView } from 'src/app/proto/generated/management_pb'; +import { ProjectService } from 'src/app/services/project.service'; +import { ToastService } from 'src/app/services/toast.service'; + +@Component({ + selector: 'app-owned-project-list', + templateUrl: './owned-project-list.component.html', + styleUrls: ['./owned-project-list.component.scss'], + animations: [ + trigger('list', [ + transition(':enter', [ + query('@animate', + stagger(80, animateChild()), + ), + ]), + ]), + trigger('animate', [ + transition(':enter', [ + style({ opacity: 0, transform: 'translateY(-100%)' }), + animate('100ms', style({ opacity: 1, transform: 'translateY(0)' })), + ]), + transition(':leave', [ + style({ opacity: 1, transform: 'translateY(0)' }), + animate('100ms', style({ opacity: 0, transform: 'translateY(100%)' })), + ]), + ]), + ], +}) +export class OwnedProjectListComponent implements OnInit, OnDestroy { + public totalResult: number = 0; + public dataSource: MatTableDataSource = + new MatTableDataSource(); + + public ownedProjectList: ProjectView.AsObject[] = []; + public displayedColumns: string[] = ['select', 'name', 'orgName', 'orgDomain', 'type', 'state', 'creationDate', 'changeDate']; + public selection: SelectionModel = new SelectionModel(true, []); + + private loadingSubject: BehaviorSubject = new BehaviorSubject(false); + public loading$: Observable = this.loadingSubject.asObservable(); + + public grid: boolean = true; + private subscription?: Subscription; + + constructor(private router: Router, + public translate: TranslateService, + private projectService: ProjectService, + private toast: ToastService, + ) { } + + public ngOnInit(): void { + console.log('asdf'); + this.getData(10, 0); + } + + public ngOnDestroy(): void { + this.subscription?.unsubscribe(); + } + + public isAllSelected(): boolean { + const numSelected = this.selection.selected.length; + const numRows = this.dataSource.data.length; + return numSelected === numRows; + } + + public masterToggle(): void { + this.isAllSelected() ? + this.selection.clear() : + this.dataSource.data.forEach(row => this.selection.select(row)); + } + + public changePage(event: PageEvent): void { + this.getData(event.pageSize, event.pageIndex); + } + + public addProject(): void { + this.router.navigate(['/projects', 'create']); + } + + private async getData(limit: number, offset: number): Promise { + console.log('getprojects'); + this.loadingSubject.next(true); + this.projectService.SearchProjects(limit, offset).then(res => { + this.ownedProjectList = res.toObject().resultList; + this.totalResult = res.toObject().totalResult; + this.dataSource.data = this.ownedProjectList; + this.loadingSubject.next(false); + console.log(this.ownedProjectList); + }).catch(error => { + console.error(error); + this.toast.showError(error.message); + this.loadingSubject.next(false); + }); + + this.ownedProjectList = []; + } + + public dateFromTimestamp(date: Timestamp.AsObject): any { + const ts: Date = new Date(date.seconds * 1000 + date.nanos / 1000); + return ts; + } + + public reactivateSelectedProjects(): void { + const promises = this.selection.selected.map(project => { + this.projectService.ReactivateProject(project.projectId); + }); + + Promise.all(promises).then(() => { + this.toast.showInfo('Reactivated selected projects successfully'); + }).catch(error => { + this.toast.showInfo(error.message); + }); + } + + + public deactivateSelectedProjects(): void { + const promises = this.selection.selected.map(project => { + this.projectService.DeactivateProject(project.projectId); + }); + + Promise.all(promises).then(() => { + this.toast.showInfo('Deactivated selected projects Successfully'); + }).catch(error => { + this.toast.showInfo(error.message); + }); + } +} diff --git a/console/src/app/pages/projects/project-detail/project-detail.component.spec.ts b/console/src/app/pages/projects/project-detail/project-detail.component.spec.ts deleted file mode 100644 index df5c45920b..0000000000 --- a/console/src/app/pages/projects/project-detail/project-detail.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ProjectDetailComponent } from './project-detail.component'; - -describe('ProjectDetailComponent', () => { - let component: ProjectDetailComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ProjectDetailComponent], - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(ProjectDetailComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/console/src/app/pages/projects/project-grant-members/project-grant-members.component.ts b/console/src/app/pages/projects/project-grant-members/project-grant-members.component.ts index 3ab187ae32..bebd026eaf 100644 --- a/console/src/app/pages/projects/project-grant-members/project-grant-members.component.ts +++ b/console/src/app/pages/projects/project-grant-members/project-grant-members.component.ts @@ -10,8 +10,8 @@ import { ToastService } from 'src/app/services/toast.service'; import { CreationType, - ProjectMemberCreateDialogComponent, -} from '../../../modules/add-member-dialog/project-member-create-dialog.component'; + MemberCreateDialogComponent, +} from '../../../modules/add-member-dialog/member-create-dialog.component'; import { ProjectGrantMembersDataSource } from './project-grant-members-datasource'; @Component({ @@ -23,7 +23,7 @@ export class ProjectGrantMembersComponent implements AfterViewInit, OnInit { @Input() public projectId!: string; @Input() public grantId!: string; - public disabled: boolean = false; + @Input() public disabled: boolean = false; @ViewChild(MatPaginator) public paginator!: MatPaginator; @ViewChild(MatTable) public table!: MatTable; public dataSource!: ProjectGrantMembersDataSource; @@ -91,7 +91,7 @@ export class ProjectGrantMembersComponent implements AfterViewInit, OnInit { } public openAddMember(): void { - const dialogRef = this.dialog.open(ProjectMemberCreateDialogComponent, { + const dialogRef = this.dialog.open(MemberCreateDialogComponent, { data: { creationType: CreationType.PROJECT_GRANTED, projectId: this.projectId, diff --git a/console/src/app/pages/projects/project-grid/project-grid.component.spec.ts b/console/src/app/pages/projects/project-grid/project-grid.component.spec.ts deleted file mode 100644 index 2e36e722ff..0000000000 --- a/console/src/app/pages/projects/project-grid/project-grid.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ProjectGridComponent } from './project-grid.component'; - -describe('GridComponent', () => { - let component: ProjectGridComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ProjectGridComponent], - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(ProjectGridComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/console/src/app/pages/projects/project-list/project-list.component.html b/console/src/app/pages/projects/project-list/project-list.component.html deleted file mode 100644 index 589ae06b99..0000000000 --- a/console/src/app/pages/projects/project-list/project-list.component.html +++ /dev/null @@ -1,116 +0,0 @@ -
-

{{ 'PROJECT.PAGES.LIST' | translate }}

-

{{ 'PROJECT.PAGES.LISTDESCRIPTION' | translate }}

- - - - -
- -
-
-
-
- - {{'ORG_DETAIL.TABLE.TOTAL' | translate}} - {{dataSource?.data?.length}} - - - {{'ORG_DETAIL.TABLE.SELECTION' | translate}} - {{selection?.selected?.length}} - -
- -
- - -
- - add{{ 'ACTIONS.NEW' | translate }} - -
-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - {{ 'PROJECT.NAME' | translate }} {{project.name}} {{ 'PROJECT.TABLE.ORGNAME' | translate }} - {{project.orgName}} {{ 'PROJECT.TABLE.ORGDOMAIN' | translate }} - {{project?.orgDomain}} {{ 'PROJECT.TABLE.STATE' | translate }} {{'PROJECT.STATE.'+project.state | translate}} {{ 'PROJECT.TABLE.TYPE' | translate }} - {{'PROJECT.TYPE.'+project.type | translate}} - {{ 'PROJECT.TABLE.CREATIONDATE' | translate }} - {{dateFromTimestamp(project.creationDate) | date: 'EEE dd. MMM, HH:mm'}} - {{ 'PROJECT.TABLE.CHANGEDATE' | translate }} - {{dateFromTimestamp(project.changeDate) | date: 'EEE dd. MMM, HH:mm'}} -
- -
-
-
\ No newline at end of file diff --git a/console/src/app/pages/projects/project-list/project-list.component.spec.ts b/console/src/app/pages/projects/project-list/project-list.component.spec.ts deleted file mode 100644 index 278ab7ba35..0000000000 --- a/console/src/app/pages/projects/project-list/project-list.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ProjectListComponent } from './project-list.component'; - -describe('ProjectListComponent', () => { - let component: ProjectListComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ProjectListComponent], - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(ProjectListComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/console/src/app/pages/projects/projects-routing.module.ts b/console/src/app/pages/projects/projects-routing.module.ts index e99d653dd7..898b90cc4d 100644 --- a/console/src/app/pages/projects/projects-routing.module.ts +++ b/console/src/app/pages/projects/projects-routing.module.ts @@ -2,13 +2,13 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { GrantedProjectDetailComponent } from './granted-project-detail/granted-project-detail.component'; -import { ProjectDetailComponent } from './project-detail/project-detail.component'; -import { ProjectListComponent } from './project-list/project-list.component'; +import { OwnedProjectDetailComponent } from './owned-project-detail/owned-project-detail.component'; +import { ProjectsComponent } from './projects.component'; const routes: Routes = [ { path: '', - component: ProjectListComponent, + component: ProjectsComponent, data: { animation: 'HomePage' }, }, { @@ -22,7 +22,7 @@ const routes: Routes = [ }, { path: ':id', - component: ProjectDetailComponent, + component: OwnedProjectDetailComponent, data: { animation: 'HomePage' }, }, { diff --git a/console/src/app/pages/projects/projects.component.html b/console/src/app/pages/projects/projects.component.html new file mode 100644 index 0000000000..67e4a06fb0 --- /dev/null +++ b/console/src/app/pages/projects/projects.component.html @@ -0,0 +1,11 @@ +
+

{{ 'PROJECT.PAGES.LIST' | translate }}

+

{{ 'PROJECT.PAGES.LISTDESCRIPTION' | translate }}

+ +

Owned Projects

+ + +

Granted Projects

+ + +
\ No newline at end of file diff --git a/console/src/app/pages/projects/projects.component.scss b/console/src/app/pages/projects/projects.component.scss new file mode 100644 index 0000000000..cd0c0ac065 --- /dev/null +++ b/console/src/app/pages/projects/projects.component.scss @@ -0,0 +1,13 @@ +h1 { + font-family: ailerons; + margin-top: 0; +} + +.sub { + color: #81868a; + margin-bottom: 2rem; +} + +.max-width-container { + padding-bottom: 3rem; +} \ No newline at end of file diff --git a/console/src/app/pages/projects/projects.component.spec.ts b/console/src/app/pages/projects/projects.component.spec.ts new file mode 100644 index 0000000000..a33e1cc85a --- /dev/null +++ b/console/src/app/pages/projects/projects.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProjectsComponent } from './projects.component'; + +describe('ProjectsComponent', () => { + let component: ProjectsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ProjectsComponent], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ProjectsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/console/src/app/pages/projects/projects.component.ts b/console/src/app/pages/projects/projects.component.ts new file mode 100644 index 0000000000..c2f2363031 --- /dev/null +++ b/console/src/app/pages/projects/projects.component.ts @@ -0,0 +1,29 @@ +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; +import { Subscription } from 'rxjs'; + +@Component({ + selector: 'app-projects', + templateUrl: './projects.component.html', + styleUrls: ['./projects.component.scss'], +}) +export class ProjectsComponent implements OnInit, OnDestroy { + // public projectId: string = ''; + // public grantId: string = ''; + private sub: Subscription = new Subscription(); + constructor(private route: ActivatedRoute, + ) { + // this.route.params.subscribe((params) => { + // this.projectId = params.projectId; + // this.grantId = params.grantId; + // }); + } + + ngOnInit(): void { + } + + + public ngOnDestroy(): void { + // this.sub.unsubscribe(); + } +} diff --git a/console/src/app/pages/projects/projects.module.ts b/console/src/app/pages/projects/projects.module.ts index 3d4f465932..59b6998cd6 100644 --- a/console/src/app/pages/projects/projects.module.ts +++ b/console/src/app/pages/projects/projects.module.ts @@ -28,34 +28,42 @@ import { SearchUserAutocompleteModule } from 'src/app/modules/search-user-autoco import { ChangesModule } from '../../modules/changes/changes.module'; import { ProjectRolesModule } from '../../modules/project-roles/project-roles.module'; -import { OrgMembersModule } from '../orgs/org-members/org-members.module'; +import { OrgContributorsModule } from '../orgs/org-contributors/org-contributors.module'; import { UserListModule } from '../user-list/user-list.module'; +import { GrantedProjectDetailComponent } from './granted-project-detail/granted-project-detail.component'; +import { GrantedProjectGridComponent } from './granted-project-grid/granted-project-grid.component'; +import { GrantedProjectListComponent } from './granted-project-list/granted-project-list.component'; +import { OwnedProjectContributorsComponent } from './owned-project-contributors/owned-project-contributors.component'; +import { OwnedProjectDetailComponent } from './owned-project-detail/owned-project-detail.component'; +import { OwnedProjectGridComponent } from './owned-project-grid/owned-project-grid.component'; +import { OwnedProjectListComponent } from './owned-project-list/owned-project-list.component'; import { ProjectApplicationGridComponent } from './project-application-grid/project-application-grid.component'; import { ProjectApplicationsComponent } from './project-applications/project-applications.component'; -import { ProjectContributorsComponent } from './project-contributors/project-contributors.component'; -import { ProjectDetailComponent } from './project-detail/project-detail.component'; import { ProjectGrantMembersCreateDialogComponent, } from './project-grant-members-create-dialog/project-grant-members-create-dialog.component'; import { ProjectGrantMembersComponent } from './project-grant-members/project-grant-members.component'; import { ProjectGrantsComponent } from './project-grants/project-grants.component'; -import { ProjectGridComponent } from './project-grid/project-grid.component'; -import { ProjectListComponent } from './project-list/project-list.component'; import { ProjectsRoutingModule } from './projects-routing.module'; -import { GrantedProjectDetailComponent } from './granted-project-detail/granted-project-detail.component'; +import { ProjectsComponent } from './projects.component'; @NgModule({ declarations: [ - ProjectListComponent, - ProjectDetailComponent, + GrantedProjectListComponent, + GrantedProjectGridComponent, + GrantedProjectDetailComponent, + + OwnedProjectListComponent, + OwnedProjectGridComponent, + OwnedProjectDetailComponent, + ProjectApplicationsComponent, - ProjectGridComponent, ProjectApplicationGridComponent, ProjectGrantsComponent, ProjectGrantMembersComponent, ProjectGrantMembersCreateDialogComponent, - ProjectContributorsComponent, - GrantedProjectDetailComponent, + OwnedProjectContributorsComponent, + ProjectsComponent, ], imports: [ ProjectsRoutingModule, @@ -87,7 +95,7 @@ import { GrantedProjectDetailComponent } from './granted-project-detail/granted- CardModule, MatTooltipModule, MatSortModule, - OrgMembersModule, + OrgContributorsModule, TranslateModule.forChild({ loader: { provide: TranslateLoader, @@ -99,7 +107,7 @@ import { GrantedProjectDetailComponent } from './granted-project-detail/granted- entryComponents: [ ProjectGrantMembersCreateDialogComponent, ], - exports: [ProjectListComponent], + exports: [], schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], }) export class ProjectsModule { } diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.html b/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.html index 00e3333dc9..4365ba999e 100644 --- a/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.html +++ b/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.html @@ -148,7 +148,7 @@
- +
diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.scss b/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.scss index 66d96e648a..9569f42b16 100644 --- a/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.scss +++ b/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.scss @@ -68,6 +68,7 @@ h1 { justify-content: space-evenly; padding: .5rem; border-bottom: 1px solid #ffffff20; + flex-wrap: wrap; .label, .name { margin-right: 1rem; diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.ts b/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.ts index 6cae22da97..94cbd8b903 100644 --- a/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.ts +++ b/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.ts @@ -11,7 +11,6 @@ import { ToastService } from 'src/app/services/toast.service'; import { CodeDialogComponent } from '../code-dialog/code-dialog.component'; - function passwordConfirmValidator(c: AbstractControl): any { if (!c.parent || !c) { return; @@ -68,13 +67,25 @@ export class AuthUserDetailComponent implements OnDestroy { if (policy.minLength) { validators.push(Validators.minLength(policy.minLength)); } + if (policy.hasLowercase) { + validators.push(Validators.pattern(/[a-z]/g)); + } + if (policy.hasUppercase) { + validators.push(Validators.pattern(/[A-Z]/g)); + } + if (policy.hasNumber) { + validators.push(Validators.pattern(/[0-9]/g)); + } + if (policy.hasSymbol) { + // All characters that are not a digit or an English letter \W or a whitespace \S + validators.push(Validators.pattern(/[\W\S]/)); + } this.passwordForm = this.fb.group({ currentPassword: ['', []], newPassword: ['', validators], confirmPassword: ['', [...validators, passwordConfirmValidator]], }); - // TODO custom validator for pattern }).catch(error => { console.log('no password complexity policy defined!'); this.passwordForm = this.fb.group({ @@ -160,6 +171,7 @@ export class AuthUserDetailComponent implements OnDestroy { data: { number: this.phone.phone, }, + width: '400px', }); dialogRef.afterClosed().subscribe(code => { diff --git a/console/src/app/pages/user-detail/auth-user-mfa/auth-user-mfa.component.ts b/console/src/app/pages/user-detail/auth-user-mfa/auth-user-mfa.component.ts index a8d7bce581..25400cc7a4 100644 --- a/console/src/app/pages/user-detail/auth-user-mfa/auth-user-mfa.component.ts +++ b/console/src/app/pages/user-detail/auth-user-mfa/auth-user-mfa.component.ts @@ -1,8 +1,10 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { BehaviorSubject, Observable } from 'rxjs'; import { MfaOtpResponse, MFAState, MfaType, MultiFactor } from 'src/app/proto/generated/auth_pb'; +import { UserProfile } from 'src/app/proto/generated/management_pb'; import { AuthUserService } from 'src/app/services/auth-user.service'; +import { MgmtUserService } from 'src/app/services/mgmt-user.service'; import { ToastService } from 'src/app/services/toast.service'; import { DialogOtpComponent } from '../dialog-otp/dialog-otp.component'; @@ -13,15 +15,18 @@ import { DialogOtpComponent } from '../dialog-otp/dialog-otp.component'; styleUrls: ['./auth-user-mfa.component.scss'], }) export class AuthUserMfaComponent implements OnInit, OnDestroy { + @Input() private profile!: UserProfile.AsObject; public mfaSubject: BehaviorSubject = new BehaviorSubject([]); private loadingSubject: BehaviorSubject = new BehaviorSubject(false); public loading$: Observable = this.loadingSubject.asObservable(); public MfaType: any = MfaType; public MFAState: any = MFAState; - constructor(private userService: AuthUserService, private toast: ToastService, private dialog: MatDialog) { } + constructor(private userService: AuthUserService, private mgmtUserService: MgmtUserService, + private toast: ToastService, private dialog: MatDialog) { } public ngOnInit(): void { + console.log(this.profile); this.getOTP(); } @@ -33,6 +38,7 @@ export class AuthUserMfaComponent implements OnInit, OnDestroy { public addOTP(): void { this.userService.AddMfaOTP().then((otpresp) => { const otp: MfaOtpResponse.AsObject = otpresp.toObject(); + console.log(otp); const dialogRef = this.dialog.open(DialogOtpComponent, { data: otp.url, width: '400px', @@ -52,9 +58,12 @@ export class AuthUserMfaComponent implements OnInit, OnDestroy { } public getOTP(): void { - this.userService.GetMyMfas().then(mfas => { + console.log('otp'); + this.mgmtUserService.getUserMfas(this.profile.id).then(mfas => { this.mfaSubject.next(mfas.toObject().mfasList); + console.log(mfas.toObject()); }).catch(error => { + console.error(error); this.toast.showError(error.message); }); } diff --git a/console/src/app/pages/user-detail/code-dialog/code-dialog.component.scss b/console/src/app/pages/user-detail/code-dialog/code-dialog.component.scss index 74bf3b5e64..008a6b44d6 100644 --- a/console/src/app/pages/user-detail/code-dialog/code-dialog.component.scss +++ b/console/src/app/pages/user-detail/code-dialog/code-dialog.component.scss @@ -1,5 +1,5 @@ .formfield { - width: 200px; + width: 100%; } .action { diff --git a/console/src/app/pages/user-detail/dialog-otp/dialog-otp.component.html b/console/src/app/pages/user-detail/dialog-otp/dialog-otp.component.html index a8941fdb30..bdc3be42ef 100644 --- a/console/src/app/pages/user-detail/dialog-otp/dialog-otp.component.html +++ b/console/src/app/pages/user-detail/dialog-otp/dialog-otp.component.html @@ -2,7 +2,7 @@

{{'USER.MFA.OTP_DIALOG_DESCRIPTION' | translate}}

- +
diff --git a/console/src/app/pages/user-detail/user-detail.module.ts b/console/src/app/pages/user-detail/user-detail.module.ts index 501c5e71f2..5ef038fd90 100644 --- a/console/src/app/pages/user-detail/user-detail.module.ts +++ b/console/src/app/pages/user-detail/user-detail.module.ts @@ -10,6 +10,7 @@ import { MatInputModule } from '@angular/material/input'; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatTooltipModule } from '@angular/material/tooltip'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; +import { QRCodeModule } from 'angularx-qrcode'; import { HttpLoaderFactory } from 'src/app/app.module'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { CardModule } from 'src/app/modules/card/card.module'; @@ -44,6 +45,7 @@ import { UserMfaComponent } from './user-mfa/user-mfa.component'; ReactiveFormsModule, DetailFormModule, MatDialogModule, + QRCodeModule, MetaLayoutModule, MatFormFieldModule, UserGrantsModule, diff --git a/console/src/app/pages/user-detail/user-detail/user-detail.component.html b/console/src/app/pages/user-detail/user-detail/user-detail.component.html index bc0cac2d41..3a5b24a931 100644 --- a/console/src/app/pages/user-detail/user-detail/user-detail.component.html +++ b/console/src/app/pages/user-detail/user-detail/user-detail.component.html @@ -146,6 +146,8 @@
+ +
diff --git a/console/src/app/pages/user-detail/user-detail/user-detail.component.scss b/console/src/app/pages/user-detail/user-detail/user-detail.component.scss index 40a92ee2a1..447e67fe1a 100644 --- a/console/src/app/pages/user-detail/user-detail/user-detail.component.scss +++ b/console/src/app/pages/user-detail/user-detail/user-detail.component.scss @@ -71,6 +71,7 @@ justify-content: space-evenly; padding: .5rem; border-bottom: 1px solid #ffffff20; + flex-wrap: wrap; .label, .name { margin-right: 1rem; diff --git a/console/src/app/pages/user-detail/user-detail/user-detail.component.ts b/console/src/app/pages/user-detail/user-detail/user-detail.component.ts index 53268d9365..54ee764a50 100644 --- a/console/src/app/pages/user-detail/user-detail/user-detail.component.ts +++ b/console/src/app/pages/user-detail/user-detail/user-detail.component.ts @@ -83,6 +83,19 @@ export class UserDetailComponent implements OnInit, OnDestroy { if (policy.minLength) { validators.push(Validators.minLength(policy.minLength)); } + if (policy.hasLowercase) { + validators.push(Validators.pattern(/[a-z]/g)); + } + if (policy.hasUppercase) { + validators.push(Validators.pattern(/[A-Z]/g)); + } + if (policy.hasNumber) { + validators.push(Validators.pattern(/[0-9]/g)); + } + if (policy.hasSymbol) { + // All characters that are not a digit or an English letter \W or a whitespace \S + validators.push(Validators.pattern(/[\W\S]/)); + } this.passwordForm = this.fb.group({ password: ['', validators], @@ -160,18 +173,16 @@ export class UserDetailComponent implements OnInit, OnDestroy { public resendVerification(): void { console.log('resendverification'); - this.mgmtUserService.ResendEmailVerification(this.profile.id).then((data: any) => { + this.mgmtUserService.ResendEmailVerification(this.profile.id).then(() => { this.toast.showInfo('Email was successfully sent!'); - this.email = data.toObject(); }).catch(data => { this.toast.showError(data.message); }); } public resendPhoneVerification(): void { - this.mgmtUserService.ResendPhoneVerification(this.profile.id).then((data: any) => { + this.mgmtUserService.ResendPhoneVerification(this.profile.id).then(() => { this.toast.showInfo('Phoneverification was successfully sent!'); - this.email = data.toObject(); }).catch(data => { this.toast.showError(data.message); }); diff --git a/console/src/app/proto/generated/management_grpc_web_pb.d.ts b/console/src/app/proto/generated/management_grpc_web_pb.d.ts index 2cf0e7fddc..1ea73935c8 100644 --- a/console/src/app/proto/generated/management_grpc_web_pb.d.ts +++ b/console/src/app/proto/generated/management_grpc_web_pb.d.ts @@ -1,1418 +1,1437 @@ -import * as google_protobuf_empty_pb from 'google-protobuf/google/protobuf/empty_pb'; -import * as google_protobuf_struct_pb from 'google-protobuf/google/protobuf/struct_pb'; import * as grpcWeb from 'grpc-web'; +import * as google_api_annotations_pb from './google/api/annotations_pb'; +import * as google_protobuf_empty_pb from 'google-protobuf/google/protobuf/empty_pb'; +import * as google_protobuf_struct_pb from 'google-protobuf/google/protobuf/struct_pb'; +import * as google_protobuf_timestamp_pb from 'google-protobuf/google/protobuf/timestamp_pb'; +import * as protoc$gen$swagger_options_annotations_pb from './protoc-gen-swagger/options/annotations_pb'; +import * as validate_validate_pb from './validate/validate_pb'; +import * as google_protobuf_descriptor_pb from 'google-protobuf/google/protobuf/descriptor_pb'; +import * as authoption_options_pb from './authoption/options_pb'; + import { - AddOrgMemberRequest, - Application, - ApplicationID, - ApplicationSearchRequest, - ApplicationSearchResponse, - ApplicationUpdate, - AuthGrantSearchRequest, - AuthGrantSearchResponse, - ChangeOrgMemberRequest, - ChangeRequest, - Changes, - ClientSecret, - CreateUserRequest, - GrantedProject, - GrantedProjectSearchRequest, - GrantedProjectSearchResponse, - MultiFactors, - OIDCApplicationCreate, - OIDCConfig, - OIDCConfigUpdate, - Org, - OrgDomain, - OrgID, - OrgMember, - OrgMemberRoles, - OrgMemberSearchRequest, - OrgMemberSearchResponse, - PasswordAgePolicy, - PasswordAgePolicyCreate, - PasswordAgePolicyID, - PasswordAgePolicyUpdate, - PasswordComplexityPolicy, - PasswordComplexityPolicyCreate, - PasswordComplexityPolicyID, - PasswordComplexityPolicyUpdate, - PasswordLockoutPolicy, - PasswordLockoutPolicyCreate, - PasswordLockoutPolicyID, - PasswordLockoutPolicyUpdate, - PasswordRequest, - Project, - ProjectCreateRequest, - ProjectGrant, - ProjectGrantCreate, - ProjectGrantID, - ProjectGrantMember, - ProjectGrantMemberAdd, - ProjectGrantMemberChange, - ProjectGrantMemberRemove, - ProjectGrantMemberRoles, - ProjectGrantMemberSearchRequest, - ProjectGrantMemberSearchResponse, - ProjectGrantSearchRequest, - ProjectGrantSearchResponse, - ProjectGrantUpdate, - ProjectGrantUserGrantCreate, - ProjectGrantUserGrantID, - ProjectGrantUserGrantSearchRequest, - ProjectGrantUserGrantUpdate, - ProjectID, - ProjectMember, - ProjectMemberAdd, - ProjectMemberChange, - ProjectMemberRemove, - ProjectMemberRoles, - ProjectMemberSearchRequest, - ProjectMemberSearchResponse, - ProjectRole, - ProjectRoleAdd, - ProjectRoleChange, - ProjectRoleRemove, - ProjectRoleSearchRequest, - ProjectRoleSearchResponse, - ProjectUpdateRequest, - ProjectUserGrantID, - ProjectUserGrantSearchRequest, - ProjectUserGrantUpdate, - RemoveOrgMemberRequest, - SetPasswordNotificationRequest, - UniqueUserRequest, - UniqueUserResponse, - UpdateUserAddressRequest, - UpdateUserEmailRequest, - UpdateUserPhoneRequest, - UpdateUserProfileRequest, - User, - UserAddress, - UserEmail, - UserEmailID, - UserGrant, - UserGrantCreate, - UserGrantID, - UserGrantSearchRequest, - UserGrantSearchResponse, - UserGrantUpdate, - UserID, - UserPhone, - UserProfile, - UserSearchRequest, - UserSearchResponse, - UserView, -} from './management_pb'; + AddOrgMemberRequest, + Application, + ApplicationID, + ApplicationSearchRequest, + ApplicationSearchResponse, + ApplicationUpdate, + AuthGrantSearchRequest, + AuthGrantSearchResponse, + ChangeOrgMemberRequest, + ChangeRequest, + Changes, + ClientSecret, + CreateUserRequest, + GrantedProjectSearchRequest, + MultiFactors, + OIDCApplicationCreate, + OIDCConfig, + OIDCConfigUpdate, + Org, + OrgDomain, + OrgID, + OrgMember, + OrgMemberRoles, + OrgMemberSearchRequest, + OrgMemberSearchResponse, + PasswordAgePolicy, + PasswordAgePolicyCreate, + PasswordAgePolicyID, + PasswordAgePolicyUpdate, + PasswordComplexityPolicy, + PasswordComplexityPolicyCreate, + PasswordComplexityPolicyID, + PasswordComplexityPolicyUpdate, + PasswordLockoutPolicy, + PasswordLockoutPolicyCreate, + PasswordLockoutPolicyID, + PasswordLockoutPolicyUpdate, + PasswordRequest, + Project, + ProjectCreateRequest, + ProjectGrant, + ProjectGrantCreate, + ProjectGrantID, + ProjectGrantMember, + ProjectGrantMemberAdd, + ProjectGrantMemberChange, + ProjectGrantMemberRemove, + ProjectGrantMemberRoles, + ProjectGrantMemberSearchRequest, + ProjectGrantMemberSearchResponse, + ProjectGrantSearchRequest, + ProjectGrantSearchResponse, + ProjectGrantUpdate, + ProjectGrantUserGrantCreate, + ProjectGrantUserGrantID, + ProjectGrantUserGrantSearchRequest, + ProjectGrantUserGrantUpdate, + ProjectGrantView, + ProjectID, + ProjectMember, + ProjectMemberAdd, + ProjectMemberChange, + ProjectMemberRemove, + ProjectMemberRoles, + ProjectMemberSearchRequest, + ProjectMemberSearchResponse, + ProjectRole, + ProjectRoleAdd, + ProjectRoleChange, + ProjectRoleRemove, + ProjectRoleSearchRequest, + ProjectRoleSearchResponse, + ProjectSearchRequest, + ProjectSearchResponse, + ProjectUpdateRequest, + ProjectUserGrantID, + ProjectUserGrantSearchRequest, + ProjectUserGrantUpdate, + RemoveOrgMemberRequest, + SetPasswordNotificationRequest, + UniqueUserRequest, + UniqueUserResponse, + UpdateUserAddressRequest, + UpdateUserEmailRequest, + UpdateUserPhoneRequest, + UpdateUserProfileRequest, + User, + UserAddress, + UserEmail, + UserEmailID, + UserGrant, + UserGrantCreate, + UserGrantID, + UserGrantSearchRequest, + UserGrantSearchResponse, + UserGrantUpdate, + UserID, + UserPhone, + UserProfile, + UserSearchRequest, + UserSearchResponse, + UserView} from './management_pb'; export class ManagementServiceClient { - constructor(hostname: string, - credentials?: null | { [index: string]: string; }, - options?: null | { [index: string]: string; }); - - healthz( - request: google_protobuf_empty_pb.Empty, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - ready( - request: google_protobuf_empty_pb.Empty, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - validate( - request: google_protobuf_empty_pb.Empty, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_struct_pb.Struct) => void - ): grpcWeb.ClientReadableStream; - - getUserByID( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: User) => void - ): grpcWeb.ClientReadableStream; - - getUserByEmailGlobal( - request: UserEmailID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserView) => void - ): grpcWeb.ClientReadableStream; - - searchUsers( - request: UserSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - isUserUnique( - request: UniqueUserRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UniqueUserResponse) => void - ): grpcWeb.ClientReadableStream; - - createUser( - request: CreateUserRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: User) => void - ): grpcWeb.ClientReadableStream; - - deactivateUser( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: User) => void - ): grpcWeb.ClientReadableStream; - - reactivateUser( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: User) => void - ): grpcWeb.ClientReadableStream; - - lockUser( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: User) => void - ): grpcWeb.ClientReadableStream; - - unlockUser( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: User) => void - ): grpcWeb.ClientReadableStream; - - deleteUser( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - userChanges( - request: ChangeRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Changes) => void - ): grpcWeb.ClientReadableStream; - - applicationChanges( - request: ChangeRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Changes) => void - ): grpcWeb.ClientReadableStream; - - orgChanges( - request: ChangeRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Changes) => void - ): grpcWeb.ClientReadableStream; - - projectChanges( - request: ChangeRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Changes) => void - ): grpcWeb.ClientReadableStream; - - getUserProfile( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserProfile) => void - ): grpcWeb.ClientReadableStream; - - updateUserProfile( - request: UpdateUserProfileRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserProfile) => void - ): grpcWeb.ClientReadableStream; - - getUserEmail( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserEmail) => void - ): grpcWeb.ClientReadableStream; - - changeUserEmail( - request: UpdateUserEmailRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserEmail) => void - ): grpcWeb.ClientReadableStream; - - resendEmailVerificationMail( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - getUserPhone( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserPhone) => void - ): grpcWeb.ClientReadableStream; - - changeUserPhone( - request: UpdateUserPhoneRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserPhone) => void - ): grpcWeb.ClientReadableStream; - - resendPhoneVerificationCode( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - getUserAddress( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserAddress) => void - ): grpcWeb.ClientReadableStream; - - updateUserAddress( - request: UpdateUserAddressRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserAddress) => void - ): grpcWeb.ClientReadableStream; - - getUserMfas( - request: UserID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: MultiFactors) => void - ): grpcWeb.ClientReadableStream; - - sendSetPasswordNotification( - request: SetPasswordNotificationRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - setInitialPassword( - request: PasswordRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - getPasswordComplexityPolicy( - request: google_protobuf_empty_pb.Empty, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: PasswordComplexityPolicy) => void - ): grpcWeb.ClientReadableStream; - - createPasswordComplexityPolicy( - request: PasswordComplexityPolicyCreate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: PasswordComplexityPolicy) => void - ): grpcWeb.ClientReadableStream; - - updatePasswordComplexityPolicy( - request: PasswordComplexityPolicyUpdate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: PasswordComplexityPolicy) => void - ): grpcWeb.ClientReadableStream; - - deletePasswordComplexityPolicy( - request: PasswordComplexityPolicyID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - getPasswordAgePolicy( - request: google_protobuf_empty_pb.Empty, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: PasswordAgePolicy) => void - ): grpcWeb.ClientReadableStream; - - createPasswordAgePolicy( - request: PasswordAgePolicyCreate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: PasswordAgePolicy) => void - ): grpcWeb.ClientReadableStream; - - updatePasswordAgePolicy( - request: PasswordAgePolicyUpdate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: PasswordAgePolicy) => void - ): grpcWeb.ClientReadableStream; - - deletePasswordAgePolicy( - request: PasswordAgePolicyID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - getPasswordLockoutPolicy( - request: google_protobuf_empty_pb.Empty, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: PasswordLockoutPolicy) => void - ): grpcWeb.ClientReadableStream; - - createPasswordLockoutPolicy( - request: PasswordLockoutPolicyCreate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: PasswordLockoutPolicy) => void - ): grpcWeb.ClientReadableStream; - - updatePasswordLockoutPolicy( - request: PasswordLockoutPolicyUpdate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: PasswordLockoutPolicy) => void - ): grpcWeb.ClientReadableStream; - - deletePasswordLockoutPolicy( - request: PasswordLockoutPolicyID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - getOrgByID( - request: OrgID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Org) => void - ): grpcWeb.ClientReadableStream; - - getOrgByDomainGlobal( - request: OrgDomain, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Org) => void - ): grpcWeb.ClientReadableStream; - - deactivateOrg( - request: OrgID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Org) => void - ): grpcWeb.ClientReadableStream; - - reactivateOrg( - request: OrgID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Org) => void - ): grpcWeb.ClientReadableStream; - - getOrgMemberRoles( - request: google_protobuf_empty_pb.Empty, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: OrgMemberRoles) => void - ): grpcWeb.ClientReadableStream; - - addMyOrgMember( - request: AddOrgMemberRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: OrgMember) => void - ): grpcWeb.ClientReadableStream; - - changeMyOrgMember( - request: ChangeOrgMemberRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: OrgMember) => void - ): grpcWeb.ClientReadableStream; - - removeMyOrgMember( - request: RemoveOrgMemberRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - searchMyOrgMembers( - request: OrgMemberSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: OrgMemberSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - searchGrantedProjects( - request: GrantedProjectSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: GrantedProjectSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - projectByID( - request: ProjectID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Project) => void - ): grpcWeb.ClientReadableStream; - - createProject( - request: ProjectCreateRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Project) => void - ): grpcWeb.ClientReadableStream; - - updateProject( - request: ProjectUpdateRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Project) => void - ): grpcWeb.ClientReadableStream; - - deactivateProject( - request: ProjectID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Project) => void - ): grpcWeb.ClientReadableStream; - - reactivateProject( - request: ProjectID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Project) => void - ): grpcWeb.ClientReadableStream; - - getGrantedProjectGrantByID( - request: ProjectGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: GrantedProject) => void - ): grpcWeb.ClientReadableStream; - - getProjectMemberRoles( - request: google_protobuf_empty_pb.Empty, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectMemberRoles) => void - ): grpcWeb.ClientReadableStream; - - searchProjectMembers( - request: ProjectMemberSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectMemberSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - addProjectMember( - request: ProjectMemberAdd, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectMember) => void - ): grpcWeb.ClientReadableStream; - - changeProjectMember( - request: ProjectMemberChange, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectMember) => void - ): grpcWeb.ClientReadableStream; - - removeProjectMember( - request: ProjectMemberRemove, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - searchProjectRoles( - request: ProjectRoleSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectRoleSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - addProjectRole( - request: ProjectRoleAdd, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectRole) => void - ): grpcWeb.ClientReadableStream; - - changeProjectRole( - request: ProjectRoleChange, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectRole) => void - ): grpcWeb.ClientReadableStream; - - removeProjectRole( - request: ProjectRoleRemove, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - searchApplications( - request: ApplicationSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ApplicationSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - applicationByID( - request: ApplicationID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Application) => void - ): grpcWeb.ClientReadableStream; - - createOIDCApplication( - request: OIDCApplicationCreate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Application) => void - ): grpcWeb.ClientReadableStream; - - updateApplication( - request: ApplicationUpdate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Application) => void - ): grpcWeb.ClientReadableStream; - - deactivateApplication( - request: ApplicationID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Application) => void - ): grpcWeb.ClientReadableStream; - - reactivateApplication( - request: ApplicationID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: Application) => void - ): grpcWeb.ClientReadableStream; - - removeApplication( - request: ApplicationID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - updateApplicationOIDCConfig( - request: OIDCConfigUpdate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: OIDCConfig) => void - ): grpcWeb.ClientReadableStream; - - regenerateOIDCClientSecret( - request: ApplicationID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ClientSecret) => void - ): grpcWeb.ClientReadableStream; - - searchProjectGrants( - request: ProjectGrantSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectGrantSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - projectGrantByID( - request: ProjectGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectGrant) => void - ): grpcWeb.ClientReadableStream; - - createProjectGrant( - request: ProjectGrantCreate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectGrant) => void - ): grpcWeb.ClientReadableStream; - - updateProjectGrant( - request: ProjectGrantUpdate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectGrant) => void - ): grpcWeb.ClientReadableStream; - - deactivateProjectGrant( - request: ProjectGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectGrant) => void - ): grpcWeb.ClientReadableStream; - - reactivateProjectGrant( - request: ProjectGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectGrant) => void - ): grpcWeb.ClientReadableStream; - - removeProjectGrant( - request: ProjectGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - getProjectGrantMemberRoles( - request: google_protobuf_empty_pb.Empty, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectGrantMemberRoles) => void - ): grpcWeb.ClientReadableStream; - - searchProjectGrantMembers( - request: ProjectGrantMemberSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectGrantMemberSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - addProjectGrantMember( - request: ProjectGrantMemberAdd, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectGrantMember) => void - ): grpcWeb.ClientReadableStream; - - changeProjectGrantMember( - request: ProjectGrantMemberChange, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: ProjectGrantMember) => void - ): grpcWeb.ClientReadableStream; - - removeProjectGrantMember( - request: ProjectGrantMemberRemove, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - searchUserGrants( - request: UserGrantSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrantSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - userGrantByID( - request: UserGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - createUserGrant( - request: UserGrantCreate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - updateUserGrant( - request: UserGrantUpdate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - deactivateUserGrant( - request: UserGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - reactivateUserGrant( - request: UserGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - removeUserGrant( - request: UserGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: google_protobuf_empty_pb.Empty) => void - ): grpcWeb.ClientReadableStream; - - searchProjectUserGrants( - request: ProjectUserGrantSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrantSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - projectUserGrantByID( - request: ProjectUserGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - createProjectUserGrant( - request: UserGrantCreate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - updateProjectUserGrant( - request: ProjectUserGrantUpdate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - deactivateProjectUserGrant( - request: ProjectUserGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - reactivateProjectUserGrant( - request: ProjectUserGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - searchProjectGrantUserGrants( - request: ProjectGrantUserGrantSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrantSearchResponse) => void - ): grpcWeb.ClientReadableStream; - - projectGrantUserGrantByID( - request: ProjectGrantUserGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - createProjectGrantUserGrant( - request: ProjectGrantUserGrantCreate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - updateProjectGrantUserGrant( - request: ProjectGrantUserGrantUpdate, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - deactivateProjectGrantUserGrant( - request: ProjectGrantUserGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - reactivateProjectGrantUserGrant( - request: ProjectGrantUserGrantID, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: UserGrant) => void - ): grpcWeb.ClientReadableStream; - - searchAuthGrant( - request: AuthGrantSearchRequest, - metadata: grpcWeb.Metadata | undefined, - callback: (err: grpcWeb.Error, - response: AuthGrantSearchResponse) => void - ): grpcWeb.ClientReadableStream; + constructor (hostname: string, + credentials?: null | { [index: string]: string; }, + options?: null | { [index: string]: string; }); + + healthz( + request: google_protobuf_empty_pb.Empty, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + ready( + request: google_protobuf_empty_pb.Empty, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + validate( + request: google_protobuf_empty_pb.Empty, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_struct_pb.Struct) => void + ): grpcWeb.ClientReadableStream; + + getUserByID( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: User) => void + ): grpcWeb.ClientReadableStream; + + getUserByEmailGlobal( + request: UserEmailID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserView) => void + ): grpcWeb.ClientReadableStream; + + searchUsers( + request: UserSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + isUserUnique( + request: UniqueUserRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UniqueUserResponse) => void + ): grpcWeb.ClientReadableStream; + + createUser( + request: CreateUserRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: User) => void + ): grpcWeb.ClientReadableStream; + + deactivateUser( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: User) => void + ): grpcWeb.ClientReadableStream; + + reactivateUser( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: User) => void + ): grpcWeb.ClientReadableStream; + + lockUser( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: User) => void + ): grpcWeb.ClientReadableStream; + + unlockUser( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: User) => void + ): grpcWeb.ClientReadableStream; + + deleteUser( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + userChanges( + request: ChangeRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Changes) => void + ): grpcWeb.ClientReadableStream; + + applicationChanges( + request: ChangeRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Changes) => void + ): grpcWeb.ClientReadableStream; + + orgChanges( + request: ChangeRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Changes) => void + ): grpcWeb.ClientReadableStream; + + projectChanges( + request: ChangeRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Changes) => void + ): grpcWeb.ClientReadableStream; + + getUserProfile( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserProfile) => void + ): grpcWeb.ClientReadableStream; + + updateUserProfile( + request: UpdateUserProfileRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserProfile) => void + ): grpcWeb.ClientReadableStream; + + getUserEmail( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserEmail) => void + ): grpcWeb.ClientReadableStream; + + changeUserEmail( + request: UpdateUserEmailRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserEmail) => void + ): grpcWeb.ClientReadableStream; + + resendEmailVerificationMail( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + getUserPhone( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserPhone) => void + ): grpcWeb.ClientReadableStream; + + changeUserPhone( + request: UpdateUserPhoneRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserPhone) => void + ): grpcWeb.ClientReadableStream; + + resendPhoneVerificationCode( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + getUserAddress( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserAddress) => void + ): grpcWeb.ClientReadableStream; + + updateUserAddress( + request: UpdateUserAddressRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserAddress) => void + ): grpcWeb.ClientReadableStream; + + getUserMfas( + request: UserID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: MultiFactors) => void + ): grpcWeb.ClientReadableStream; + + sendSetPasswordNotification( + request: SetPasswordNotificationRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + setInitialPassword( + request: PasswordRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + getPasswordComplexityPolicy( + request: google_protobuf_empty_pb.Empty, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: PasswordComplexityPolicy) => void + ): grpcWeb.ClientReadableStream; + + createPasswordComplexityPolicy( + request: PasswordComplexityPolicyCreate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: PasswordComplexityPolicy) => void + ): grpcWeb.ClientReadableStream; + + updatePasswordComplexityPolicy( + request: PasswordComplexityPolicyUpdate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: PasswordComplexityPolicy) => void + ): grpcWeb.ClientReadableStream; + + deletePasswordComplexityPolicy( + request: PasswordComplexityPolicyID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + getPasswordAgePolicy( + request: google_protobuf_empty_pb.Empty, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: PasswordAgePolicy) => void + ): grpcWeb.ClientReadableStream; + + createPasswordAgePolicy( + request: PasswordAgePolicyCreate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: PasswordAgePolicy) => void + ): grpcWeb.ClientReadableStream; + + updatePasswordAgePolicy( + request: PasswordAgePolicyUpdate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: PasswordAgePolicy) => void + ): grpcWeb.ClientReadableStream; + + deletePasswordAgePolicy( + request: PasswordAgePolicyID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + getPasswordLockoutPolicy( + request: google_protobuf_empty_pb.Empty, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: PasswordLockoutPolicy) => void + ): grpcWeb.ClientReadableStream; + + createPasswordLockoutPolicy( + request: PasswordLockoutPolicyCreate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: PasswordLockoutPolicy) => void + ): grpcWeb.ClientReadableStream; + + updatePasswordLockoutPolicy( + request: PasswordLockoutPolicyUpdate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: PasswordLockoutPolicy) => void + ): grpcWeb.ClientReadableStream; + + deletePasswordLockoutPolicy( + request: PasswordLockoutPolicyID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + getOrgByID( + request: OrgID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Org) => void + ): grpcWeb.ClientReadableStream; + + getOrgByDomainGlobal( + request: OrgDomain, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Org) => void + ): grpcWeb.ClientReadableStream; + + deactivateOrg( + request: OrgID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Org) => void + ): grpcWeb.ClientReadableStream; + + reactivateOrg( + request: OrgID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Org) => void + ): grpcWeb.ClientReadableStream; + + getOrgMemberRoles( + request: google_protobuf_empty_pb.Empty, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: OrgMemberRoles) => void + ): grpcWeb.ClientReadableStream; + + addMyOrgMember( + request: AddOrgMemberRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: OrgMember) => void + ): grpcWeb.ClientReadableStream; + + changeMyOrgMember( + request: ChangeOrgMemberRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: OrgMember) => void + ): grpcWeb.ClientReadableStream; + + removeMyOrgMember( + request: RemoveOrgMemberRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + searchMyOrgMembers( + request: OrgMemberSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: OrgMemberSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + searchProjects( + request: ProjectSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + projectByID( + request: ProjectID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Project) => void + ): grpcWeb.ClientReadableStream; + + createProject( + request: ProjectCreateRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Project) => void + ): grpcWeb.ClientReadableStream; + + updateProject( + request: ProjectUpdateRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Project) => void + ): grpcWeb.ClientReadableStream; + + deactivateProject( + request: ProjectID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Project) => void + ): grpcWeb.ClientReadableStream; + + reactivateProject( + request: ProjectID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Project) => void + ): grpcWeb.ClientReadableStream; + + searchGrantedProjects( + request: GrantedProjectSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrantSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + getGrantedProjectByID( + request: ProjectGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrantView) => void + ): grpcWeb.ClientReadableStream; + + getProjectMemberRoles( + request: google_protobuf_empty_pb.Empty, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectMemberRoles) => void + ): grpcWeb.ClientReadableStream; + + searchProjectMembers( + request: ProjectMemberSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectMemberSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + addProjectMember( + request: ProjectMemberAdd, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectMember) => void + ): grpcWeb.ClientReadableStream; + + changeProjectMember( + request: ProjectMemberChange, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectMember) => void + ): grpcWeb.ClientReadableStream; + + removeProjectMember( + request: ProjectMemberRemove, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + searchProjectRoles( + request: ProjectRoleSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectRoleSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + addProjectRole( + request: ProjectRoleAdd, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectRole) => void + ): grpcWeb.ClientReadableStream; + + changeProjectRole( + request: ProjectRoleChange, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectRole) => void + ): grpcWeb.ClientReadableStream; + + removeProjectRole( + request: ProjectRoleRemove, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + searchApplications( + request: ApplicationSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ApplicationSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + applicationByID( + request: ApplicationID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Application) => void + ): grpcWeb.ClientReadableStream; + + createOIDCApplication( + request: OIDCApplicationCreate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Application) => void + ): grpcWeb.ClientReadableStream; + + updateApplication( + request: ApplicationUpdate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Application) => void + ): grpcWeb.ClientReadableStream; + + deactivateApplication( + request: ApplicationID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Application) => void + ): grpcWeb.ClientReadableStream; + + reactivateApplication( + request: ApplicationID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: Application) => void + ): grpcWeb.ClientReadableStream; + + removeApplication( + request: ApplicationID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + updateApplicationOIDCConfig( + request: OIDCConfigUpdate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: OIDCConfig) => void + ): grpcWeb.ClientReadableStream; + + regenerateOIDCClientSecret( + request: ApplicationID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ClientSecret) => void + ): grpcWeb.ClientReadableStream; + + searchProjectGrants( + request: ProjectGrantSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrantSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + projectGrantByID( + request: ProjectGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrant) => void + ): grpcWeb.ClientReadableStream; + + createProjectGrant( + request: ProjectGrantCreate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrant) => void + ): grpcWeb.ClientReadableStream; + + updateProjectGrant( + request: ProjectGrantUpdate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrant) => void + ): grpcWeb.ClientReadableStream; + + deactivateProjectGrant( + request: ProjectGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrant) => void + ): grpcWeb.ClientReadableStream; + + reactivateProjectGrant( + request: ProjectGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrant) => void + ): grpcWeb.ClientReadableStream; + + removeProjectGrant( + request: ProjectGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + getProjectGrantMemberRoles( + request: google_protobuf_empty_pb.Empty, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrantMemberRoles) => void + ): grpcWeb.ClientReadableStream; + + searchProjectGrantMembers( + request: ProjectGrantMemberSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrantMemberSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + addProjectGrantMember( + request: ProjectGrantMemberAdd, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrantMember) => void + ): grpcWeb.ClientReadableStream; + + changeProjectGrantMember( + request: ProjectGrantMemberChange, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: ProjectGrantMember) => void + ): grpcWeb.ClientReadableStream; + + removeProjectGrantMember( + request: ProjectGrantMemberRemove, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + searchUserGrants( + request: UserGrantSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrantSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + userGrantByID( + request: UserGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + createUserGrant( + request: UserGrantCreate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + updateUserGrant( + request: UserGrantUpdate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + deactivateUserGrant( + request: UserGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + reactivateUserGrant( + request: UserGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + removeUserGrant( + request: UserGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: google_protobuf_empty_pb.Empty) => void + ): grpcWeb.ClientReadableStream; + + searchProjectUserGrants( + request: ProjectUserGrantSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrantSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + projectUserGrantByID( + request: ProjectUserGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + createProjectUserGrant( + request: UserGrantCreate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + updateProjectUserGrant( + request: ProjectUserGrantUpdate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + deactivateProjectUserGrant( + request: ProjectUserGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + reactivateProjectUserGrant( + request: ProjectUserGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + searchProjectGrantUserGrants( + request: ProjectGrantUserGrantSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrantSearchResponse) => void + ): grpcWeb.ClientReadableStream; + + projectGrantUserGrantByID( + request: ProjectGrantUserGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + createProjectGrantUserGrant( + request: ProjectGrantUserGrantCreate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + updateProjectGrantUserGrant( + request: ProjectGrantUserGrantUpdate, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + deactivateProjectGrantUserGrant( + request: ProjectGrantUserGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + reactivateProjectGrantUserGrant( + request: ProjectGrantUserGrantID, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: UserGrant) => void + ): grpcWeb.ClientReadableStream; + + searchAuthGrant( + request: AuthGrantSearchRequest, + metadata: grpcWeb.Metadata | undefined, + callback: (err: grpcWeb.Error, + response: AuthGrantSearchResponse) => void + ): grpcWeb.ClientReadableStream; } export class ManagementServicePromiseClient { - constructor(hostname: string, - credentials?: null | { [index: string]: string; }, - options?: null | { [index: string]: string; }); - - healthz( - request: google_protobuf_empty_pb.Empty, - metadata?: grpcWeb.Metadata - ): Promise; - - ready( - request: google_protobuf_empty_pb.Empty, - metadata?: grpcWeb.Metadata - ): Promise; - - validate( - request: google_protobuf_empty_pb.Empty, - metadata?: grpcWeb.Metadata - ): Promise; - - getUserByID( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - getUserByEmailGlobal( - request: UserEmailID, - metadata?: grpcWeb.Metadata - ): Promise; - - searchUsers( - request: UserSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - isUserUnique( - request: UniqueUserRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - createUser( - request: CreateUserRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - deactivateUser( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - reactivateUser( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - lockUser( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - unlockUser( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - deleteUser( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - userChanges( - request: ChangeRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - applicationChanges( - request: ChangeRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - orgChanges( - request: ChangeRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - projectChanges( - request: ChangeRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - getUserProfile( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - updateUserProfile( - request: UpdateUserProfileRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - getUserEmail( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - changeUserEmail( - request: UpdateUserEmailRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - resendEmailVerificationMail( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - getUserPhone( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - changeUserPhone( - request: UpdateUserPhoneRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - resendPhoneVerificationCode( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - getUserAddress( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - updateUserAddress( - request: UpdateUserAddressRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - getUserMfas( - request: UserID, - metadata?: grpcWeb.Metadata - ): Promise; - - sendSetPasswordNotification( - request: SetPasswordNotificationRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - setInitialPassword( - request: PasswordRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - getPasswordComplexityPolicy( - request: google_protobuf_empty_pb.Empty, - metadata?: grpcWeb.Metadata - ): Promise; - - createPasswordComplexityPolicy( - request: PasswordComplexityPolicyCreate, - metadata?: grpcWeb.Metadata - ): Promise; - - updatePasswordComplexityPolicy( - request: PasswordComplexityPolicyUpdate, - metadata?: grpcWeb.Metadata - ): Promise; - - deletePasswordComplexityPolicy( - request: PasswordComplexityPolicyID, - metadata?: grpcWeb.Metadata - ): Promise; - - getPasswordAgePolicy( - request: google_protobuf_empty_pb.Empty, - metadata?: grpcWeb.Metadata - ): Promise; - - createPasswordAgePolicy( - request: PasswordAgePolicyCreate, - metadata?: grpcWeb.Metadata - ): Promise; - - updatePasswordAgePolicy( - request: PasswordAgePolicyUpdate, - metadata?: grpcWeb.Metadata - ): Promise; - - deletePasswordAgePolicy( - request: PasswordAgePolicyID, - metadata?: grpcWeb.Metadata - ): Promise; - - getPasswordLockoutPolicy( - request: google_protobuf_empty_pb.Empty, - metadata?: grpcWeb.Metadata - ): Promise; - - createPasswordLockoutPolicy( - request: PasswordLockoutPolicyCreate, - metadata?: grpcWeb.Metadata - ): Promise; - - updatePasswordLockoutPolicy( - request: PasswordLockoutPolicyUpdate, - metadata?: grpcWeb.Metadata - ): Promise; - - deletePasswordLockoutPolicy( - request: PasswordLockoutPolicyID, - metadata?: grpcWeb.Metadata - ): Promise; - - getOrgByID( - request: OrgID, - metadata?: grpcWeb.Metadata - ): Promise; - - getOrgByDomainGlobal( - request: OrgDomain, - metadata?: grpcWeb.Metadata - ): Promise; - - deactivateOrg( - request: OrgID, - metadata?: grpcWeb.Metadata - ): Promise; - - reactivateOrg( - request: OrgID, - metadata?: grpcWeb.Metadata - ): Promise; - - getOrgMemberRoles( - request: google_protobuf_empty_pb.Empty, - metadata?: grpcWeb.Metadata - ): Promise; - - addMyOrgMember( - request: AddOrgMemberRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - changeMyOrgMember( - request: ChangeOrgMemberRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - removeMyOrgMember( - request: RemoveOrgMemberRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - searchMyOrgMembers( - request: OrgMemberSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - searchGrantedProjects( - request: GrantedProjectSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - projectByID( - request: ProjectID, - metadata?: grpcWeb.Metadata - ): Promise; - - createProject( - request: ProjectCreateRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - updateProject( - request: ProjectUpdateRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - deactivateProject( - request: ProjectID, - metadata?: grpcWeb.Metadata - ): Promise; - - reactivateProject( - request: ProjectID, - metadata?: grpcWeb.Metadata - ): Promise; - - getGrantedProjectGrantByID( - request: ProjectGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - getProjectMemberRoles( - request: google_protobuf_empty_pb.Empty, - metadata?: grpcWeb.Metadata - ): Promise; - - searchProjectMembers( - request: ProjectMemberSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - addProjectMember( - request: ProjectMemberAdd, - metadata?: grpcWeb.Metadata - ): Promise; - - changeProjectMember( - request: ProjectMemberChange, - metadata?: grpcWeb.Metadata - ): Promise; - - removeProjectMember( - request: ProjectMemberRemove, - metadata?: grpcWeb.Metadata - ): Promise; - - searchProjectRoles( - request: ProjectRoleSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - addProjectRole( - request: ProjectRoleAdd, - metadata?: grpcWeb.Metadata - ): Promise; - - changeProjectRole( - request: ProjectRoleChange, - metadata?: grpcWeb.Metadata - ): Promise; - - removeProjectRole( - request: ProjectRoleRemove, - metadata?: grpcWeb.Metadata - ): Promise; - - searchApplications( - request: ApplicationSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - applicationByID( - request: ApplicationID, - metadata?: grpcWeb.Metadata - ): Promise; - - createOIDCApplication( - request: OIDCApplicationCreate, - metadata?: grpcWeb.Metadata - ): Promise; - - updateApplication( - request: ApplicationUpdate, - metadata?: grpcWeb.Metadata - ): Promise; - - deactivateApplication( - request: ApplicationID, - metadata?: grpcWeb.Metadata - ): Promise; - - reactivateApplication( - request: ApplicationID, - metadata?: grpcWeb.Metadata - ): Promise; - - removeApplication( - request: ApplicationID, - metadata?: grpcWeb.Metadata - ): Promise; - - updateApplicationOIDCConfig( - request: OIDCConfigUpdate, - metadata?: grpcWeb.Metadata - ): Promise; - - regenerateOIDCClientSecret( - request: ApplicationID, - metadata?: grpcWeb.Metadata - ): Promise; - - searchProjectGrants( - request: ProjectGrantSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - projectGrantByID( - request: ProjectGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - createProjectGrant( - request: ProjectGrantCreate, - metadata?: grpcWeb.Metadata - ): Promise; - - updateProjectGrant( - request: ProjectGrantUpdate, - metadata?: grpcWeb.Metadata - ): Promise; - - deactivateProjectGrant( - request: ProjectGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - reactivateProjectGrant( - request: ProjectGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - removeProjectGrant( - request: ProjectGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - getProjectGrantMemberRoles( - request: google_protobuf_empty_pb.Empty, - metadata?: grpcWeb.Metadata - ): Promise; - - searchProjectGrantMembers( - request: ProjectGrantMemberSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - addProjectGrantMember( - request: ProjectGrantMemberAdd, - metadata?: grpcWeb.Metadata - ): Promise; - - changeProjectGrantMember( - request: ProjectGrantMemberChange, - metadata?: grpcWeb.Metadata - ): Promise; - - removeProjectGrantMember( - request: ProjectGrantMemberRemove, - metadata?: grpcWeb.Metadata - ): Promise; - - searchUserGrants( - request: UserGrantSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - userGrantByID( - request: UserGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - createUserGrant( - request: UserGrantCreate, - metadata?: grpcWeb.Metadata - ): Promise; - - updateUserGrant( - request: UserGrantUpdate, - metadata?: grpcWeb.Metadata - ): Promise; - - deactivateUserGrant( - request: UserGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - reactivateUserGrant( - request: UserGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - removeUserGrant( - request: UserGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - searchProjectUserGrants( - request: ProjectUserGrantSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - projectUserGrantByID( - request: ProjectUserGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - createProjectUserGrant( - request: UserGrantCreate, - metadata?: grpcWeb.Metadata - ): Promise; - - updateProjectUserGrant( - request: ProjectUserGrantUpdate, - metadata?: grpcWeb.Metadata - ): Promise; - - deactivateProjectUserGrant( - request: ProjectUserGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - reactivateProjectUserGrant( - request: ProjectUserGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - searchProjectGrantUserGrants( - request: ProjectGrantUserGrantSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; - - projectGrantUserGrantByID( - request: ProjectGrantUserGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - createProjectGrantUserGrant( - request: ProjectGrantUserGrantCreate, - metadata?: grpcWeb.Metadata - ): Promise; - - updateProjectGrantUserGrant( - request: ProjectGrantUserGrantUpdate, - metadata?: grpcWeb.Metadata - ): Promise; - - deactivateProjectGrantUserGrant( - request: ProjectGrantUserGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - reactivateProjectGrantUserGrant( - request: ProjectGrantUserGrantID, - metadata?: grpcWeb.Metadata - ): Promise; - - searchAuthGrant( - request: AuthGrantSearchRequest, - metadata?: grpcWeb.Metadata - ): Promise; + constructor (hostname: string, + credentials?: null | { [index: string]: string; }, + options?: null | { [index: string]: string; }); + + healthz( + request: google_protobuf_empty_pb.Empty, + metadata?: grpcWeb.Metadata + ): Promise; + + ready( + request: google_protobuf_empty_pb.Empty, + metadata?: grpcWeb.Metadata + ): Promise; + + validate( + request: google_protobuf_empty_pb.Empty, + metadata?: grpcWeb.Metadata + ): Promise; + + getUserByID( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + getUserByEmailGlobal( + request: UserEmailID, + metadata?: grpcWeb.Metadata + ): Promise; + + searchUsers( + request: UserSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + isUserUnique( + request: UniqueUserRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + createUser( + request: CreateUserRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + deactivateUser( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + reactivateUser( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + lockUser( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + unlockUser( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + deleteUser( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + userChanges( + request: ChangeRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + applicationChanges( + request: ChangeRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + orgChanges( + request: ChangeRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + projectChanges( + request: ChangeRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + getUserProfile( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + updateUserProfile( + request: UpdateUserProfileRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + getUserEmail( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + changeUserEmail( + request: UpdateUserEmailRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + resendEmailVerificationMail( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + getUserPhone( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + changeUserPhone( + request: UpdateUserPhoneRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + resendPhoneVerificationCode( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + getUserAddress( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + updateUserAddress( + request: UpdateUserAddressRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + getUserMfas( + request: UserID, + metadata?: grpcWeb.Metadata + ): Promise; + + sendSetPasswordNotification( + request: SetPasswordNotificationRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + setInitialPassword( + request: PasswordRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + getPasswordComplexityPolicy( + request: google_protobuf_empty_pb.Empty, + metadata?: grpcWeb.Metadata + ): Promise; + + createPasswordComplexityPolicy( + request: PasswordComplexityPolicyCreate, + metadata?: grpcWeb.Metadata + ): Promise; + + updatePasswordComplexityPolicy( + request: PasswordComplexityPolicyUpdate, + metadata?: grpcWeb.Metadata + ): Promise; + + deletePasswordComplexityPolicy( + request: PasswordComplexityPolicyID, + metadata?: grpcWeb.Metadata + ): Promise; + + getPasswordAgePolicy( + request: google_protobuf_empty_pb.Empty, + metadata?: grpcWeb.Metadata + ): Promise; + + createPasswordAgePolicy( + request: PasswordAgePolicyCreate, + metadata?: grpcWeb.Metadata + ): Promise; + + updatePasswordAgePolicy( + request: PasswordAgePolicyUpdate, + metadata?: grpcWeb.Metadata + ): Promise; + + deletePasswordAgePolicy( + request: PasswordAgePolicyID, + metadata?: grpcWeb.Metadata + ): Promise; + + getPasswordLockoutPolicy( + request: google_protobuf_empty_pb.Empty, + metadata?: grpcWeb.Metadata + ): Promise; + + createPasswordLockoutPolicy( + request: PasswordLockoutPolicyCreate, + metadata?: grpcWeb.Metadata + ): Promise; + + updatePasswordLockoutPolicy( + request: PasswordLockoutPolicyUpdate, + metadata?: grpcWeb.Metadata + ): Promise; + + deletePasswordLockoutPolicy( + request: PasswordLockoutPolicyID, + metadata?: grpcWeb.Metadata + ): Promise; + + getOrgByID( + request: OrgID, + metadata?: grpcWeb.Metadata + ): Promise; + + getOrgByDomainGlobal( + request: OrgDomain, + metadata?: grpcWeb.Metadata + ): Promise; + + deactivateOrg( + request: OrgID, + metadata?: grpcWeb.Metadata + ): Promise; + + reactivateOrg( + request: OrgID, + metadata?: grpcWeb.Metadata + ): Promise; + + getOrgMemberRoles( + request: google_protobuf_empty_pb.Empty, + metadata?: grpcWeb.Metadata + ): Promise; + + addMyOrgMember( + request: AddOrgMemberRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + changeMyOrgMember( + request: ChangeOrgMemberRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + removeMyOrgMember( + request: RemoveOrgMemberRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + searchMyOrgMembers( + request: OrgMemberSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + searchProjects( + request: ProjectSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + projectByID( + request: ProjectID, + metadata?: grpcWeb.Metadata + ): Promise; + + createProject( + request: ProjectCreateRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + updateProject( + request: ProjectUpdateRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + deactivateProject( + request: ProjectID, + metadata?: grpcWeb.Metadata + ): Promise; + + reactivateProject( + request: ProjectID, + metadata?: grpcWeb.Metadata + ): Promise; + + searchGrantedProjects( + request: GrantedProjectSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + getGrantedProjectByID( + request: ProjectGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + getProjectMemberRoles( + request: google_protobuf_empty_pb.Empty, + metadata?: grpcWeb.Metadata + ): Promise; + + searchProjectMembers( + request: ProjectMemberSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + addProjectMember( + request: ProjectMemberAdd, + metadata?: grpcWeb.Metadata + ): Promise; + + changeProjectMember( + request: ProjectMemberChange, + metadata?: grpcWeb.Metadata + ): Promise; + + removeProjectMember( + request: ProjectMemberRemove, + metadata?: grpcWeb.Metadata + ): Promise; + + searchProjectRoles( + request: ProjectRoleSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + addProjectRole( + request: ProjectRoleAdd, + metadata?: grpcWeb.Metadata + ): Promise; + + changeProjectRole( + request: ProjectRoleChange, + metadata?: grpcWeb.Metadata + ): Promise; + + removeProjectRole( + request: ProjectRoleRemove, + metadata?: grpcWeb.Metadata + ): Promise; + + searchApplications( + request: ApplicationSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + applicationByID( + request: ApplicationID, + metadata?: grpcWeb.Metadata + ): Promise; + + createOIDCApplication( + request: OIDCApplicationCreate, + metadata?: grpcWeb.Metadata + ): Promise; + + updateApplication( + request: ApplicationUpdate, + metadata?: grpcWeb.Metadata + ): Promise; + + deactivateApplication( + request: ApplicationID, + metadata?: grpcWeb.Metadata + ): Promise; + + reactivateApplication( + request: ApplicationID, + metadata?: grpcWeb.Metadata + ): Promise; + + removeApplication( + request: ApplicationID, + metadata?: grpcWeb.Metadata + ): Promise; + + updateApplicationOIDCConfig( + request: OIDCConfigUpdate, + metadata?: grpcWeb.Metadata + ): Promise; + + regenerateOIDCClientSecret( + request: ApplicationID, + metadata?: grpcWeb.Metadata + ): Promise; + + searchProjectGrants( + request: ProjectGrantSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + projectGrantByID( + request: ProjectGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + createProjectGrant( + request: ProjectGrantCreate, + metadata?: grpcWeb.Metadata + ): Promise; + + updateProjectGrant( + request: ProjectGrantUpdate, + metadata?: grpcWeb.Metadata + ): Promise; + + deactivateProjectGrant( + request: ProjectGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + reactivateProjectGrant( + request: ProjectGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + removeProjectGrant( + request: ProjectGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + getProjectGrantMemberRoles( + request: google_protobuf_empty_pb.Empty, + metadata?: grpcWeb.Metadata + ): Promise; + + searchProjectGrantMembers( + request: ProjectGrantMemberSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + addProjectGrantMember( + request: ProjectGrantMemberAdd, + metadata?: grpcWeb.Metadata + ): Promise; + + changeProjectGrantMember( + request: ProjectGrantMemberChange, + metadata?: grpcWeb.Metadata + ): Promise; + + removeProjectGrantMember( + request: ProjectGrantMemberRemove, + metadata?: grpcWeb.Metadata + ): Promise; + + searchUserGrants( + request: UserGrantSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + userGrantByID( + request: UserGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + createUserGrant( + request: UserGrantCreate, + metadata?: grpcWeb.Metadata + ): Promise; + + updateUserGrant( + request: UserGrantUpdate, + metadata?: grpcWeb.Metadata + ): Promise; + + deactivateUserGrant( + request: UserGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + reactivateUserGrant( + request: UserGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + removeUserGrant( + request: UserGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + searchProjectUserGrants( + request: ProjectUserGrantSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + projectUserGrantByID( + request: ProjectUserGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + createProjectUserGrant( + request: UserGrantCreate, + metadata?: grpcWeb.Metadata + ): Promise; + + updateProjectUserGrant( + request: ProjectUserGrantUpdate, + metadata?: grpcWeb.Metadata + ): Promise; + + deactivateProjectUserGrant( + request: ProjectUserGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + reactivateProjectUserGrant( + request: ProjectUserGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + searchProjectGrantUserGrants( + request: ProjectGrantUserGrantSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; + + projectGrantUserGrantByID( + request: ProjectGrantUserGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + createProjectGrantUserGrant( + request: ProjectGrantUserGrantCreate, + metadata?: grpcWeb.Metadata + ): Promise; + + updateProjectGrantUserGrant( + request: ProjectGrantUserGrantUpdate, + metadata?: grpcWeb.Metadata + ): Promise; + + deactivateProjectGrantUserGrant( + request: ProjectGrantUserGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + reactivateProjectGrantUserGrant( + request: ProjectGrantUserGrantID, + metadata?: grpcWeb.Metadata + ): Promise; + + searchAuthGrant( + request: AuthGrantSearchRequest, + metadata?: grpcWeb.Metadata + ): Promise; } diff --git a/console/src/app/proto/generated/management_grpc_web_pb.js b/console/src/app/proto/generated/management_grpc_web_pb.js index a8fd51839e..327b53cc6f 100644 --- a/console/src/app/proto/generated/management_grpc_web_pb.js +++ b/console/src/app/proto/generated/management_grpc_web_pb.js @@ -4169,80 +4169,80 @@ proto.caos.zitadel.management.api.v1.ManagementServicePromiseClient.prototype.se /** * @const * @type {!grpc.web.MethodDescriptor< - * !proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest, - * !proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse>} + * !proto.caos.zitadel.management.api.v1.ProjectSearchRequest, + * !proto.caos.zitadel.management.api.v1.ProjectSearchResponse>} */ -const methodDescriptor_ManagementService_SearchGrantedProjects = new grpc.web.MethodDescriptor( - '/caos.zitadel.management.api.v1.ManagementService/SearchGrantedProjects', +const methodDescriptor_ManagementService_SearchProjects = new grpc.web.MethodDescriptor( + '/caos.zitadel.management.api.v1.ManagementService/SearchProjects', grpc.web.MethodType.UNARY, - proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest, - proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse, + proto.caos.zitadel.management.api.v1.ProjectSearchRequest, + proto.caos.zitadel.management.api.v1.ProjectSearchResponse, /** - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} request + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchRequest} request * @return {!Uint8Array} */ function(request) { return request.serializeBinary(); }, - proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.deserializeBinary + proto.caos.zitadel.management.api.v1.ProjectSearchResponse.deserializeBinary ); /** * @const * @type {!grpc.web.AbstractClientBase.MethodInfo< - * !proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest, - * !proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse>} + * !proto.caos.zitadel.management.api.v1.ProjectSearchRequest, + * !proto.caos.zitadel.management.api.v1.ProjectSearchResponse>} */ -const methodInfo_ManagementService_SearchGrantedProjects = new grpc.web.AbstractClientBase.MethodInfo( - proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse, +const methodInfo_ManagementService_SearchProjects = new grpc.web.AbstractClientBase.MethodInfo( + proto.caos.zitadel.management.api.v1.ProjectSearchResponse, /** - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} request + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchRequest} request * @return {!Uint8Array} */ function(request) { return request.serializeBinary(); }, - proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.deserializeBinary + proto.caos.zitadel.management.api.v1.ProjectSearchResponse.deserializeBinary ); /** - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} request The + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchRequest} request The * request proto * @param {?Object} metadata User defined * call metadata - * @param {function(?grpc.web.Error, ?proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse)} + * @param {function(?grpc.web.Error, ?proto.caos.zitadel.management.api.v1.ProjectSearchResponse)} * callback The callback function(error, response) - * @return {!grpc.web.ClientReadableStream|undefined} + * @return {!grpc.web.ClientReadableStream|undefined} * The XHR Node Readable Stream */ -proto.caos.zitadel.management.api.v1.ManagementServiceClient.prototype.searchGrantedProjects = +proto.caos.zitadel.management.api.v1.ManagementServiceClient.prototype.searchProjects = function(request, metadata, callback) { return this.client_.rpcCall(this.hostname_ + - '/caos.zitadel.management.api.v1.ManagementService/SearchGrantedProjects', + '/caos.zitadel.management.api.v1.ManagementService/SearchProjects', request, metadata || {}, - methodDescriptor_ManagementService_SearchGrantedProjects, + methodDescriptor_ManagementService_SearchProjects, callback); }; /** - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} request The + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchRequest} request The * request proto * @param {?Object} metadata User defined * call metadata - * @return {!Promise} + * @return {!Promise} * A native promise that resolves to the response */ -proto.caos.zitadel.management.api.v1.ManagementServicePromiseClient.prototype.searchGrantedProjects = +proto.caos.zitadel.management.api.v1.ManagementServicePromiseClient.prototype.searchProjects = function(request, metadata) { return this.client_.unaryCall(this.hostname_ + - '/caos.zitadel.management.api.v1.ManagementService/SearchGrantedProjects', + '/caos.zitadel.management.api.v1.ManagementService/SearchProjects', request, metadata || {}, - methodDescriptor_ManagementService_SearchGrantedProjects); + methodDescriptor_ManagementService_SearchProjects); }; @@ -4649,14 +4649,94 @@ proto.caos.zitadel.management.api.v1.ManagementServicePromiseClient.prototype.re /** * @const * @type {!grpc.web.MethodDescriptor< - * !proto.caos.zitadel.management.api.v1.ProjectGrantID, - * !proto.caos.zitadel.management.api.v1.GrantedProject>} + * !proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest, + * !proto.caos.zitadel.management.api.v1.ProjectGrantSearchResponse>} */ -const methodDescriptor_ManagementService_GetGrantedProjectGrantByID = new grpc.web.MethodDescriptor( - '/caos.zitadel.management.api.v1.ManagementService/GetGrantedProjectGrantByID', +const methodDescriptor_ManagementService_SearchGrantedProjects = new grpc.web.MethodDescriptor( + '/caos.zitadel.management.api.v1.ManagementService/SearchGrantedProjects', + grpc.web.MethodType.UNARY, + proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest, + proto.caos.zitadel.management.api.v1.ProjectGrantSearchResponse, + /** + * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.caos.zitadel.management.api.v1.ProjectGrantSearchResponse.deserializeBinary +); + + +/** + * @const + * @type {!grpc.web.AbstractClientBase.MethodInfo< + * !proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest, + * !proto.caos.zitadel.management.api.v1.ProjectGrantSearchResponse>} + */ +const methodInfo_ManagementService_SearchGrantedProjects = new grpc.web.AbstractClientBase.MethodInfo( + proto.caos.zitadel.management.api.v1.ProjectGrantSearchResponse, + /** + * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} request + * @return {!Uint8Array} + */ + function(request) { + return request.serializeBinary(); + }, + proto.caos.zitadel.management.api.v1.ProjectGrantSearchResponse.deserializeBinary +); + + +/** + * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @param {function(?grpc.web.Error, ?proto.caos.zitadel.management.api.v1.ProjectGrantSearchResponse)} + * callback The callback function(error, response) + * @return {!grpc.web.ClientReadableStream|undefined} + * The XHR Node Readable Stream + */ +proto.caos.zitadel.management.api.v1.ManagementServiceClient.prototype.searchGrantedProjects = + function(request, metadata, callback) { + return this.client_.rpcCall(this.hostname_ + + '/caos.zitadel.management.api.v1.ManagementService/SearchGrantedProjects', + request, + metadata || {}, + methodDescriptor_ManagementService_SearchGrantedProjects, + callback); +}; + + +/** + * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} request The + * request proto + * @param {?Object} metadata User defined + * call metadata + * @return {!Promise} + * A native promise that resolves to the response + */ +proto.caos.zitadel.management.api.v1.ManagementServicePromiseClient.prototype.searchGrantedProjects = + function(request, metadata) { + return this.client_.unaryCall(this.hostname_ + + '/caos.zitadel.management.api.v1.ManagementService/SearchGrantedProjects', + request, + metadata || {}, + methodDescriptor_ManagementService_SearchGrantedProjects); +}; + + +/** + * @const + * @type {!grpc.web.MethodDescriptor< + * !proto.caos.zitadel.management.api.v1.ProjectGrantID, + * !proto.caos.zitadel.management.api.v1.ProjectGrantView>} + */ +const methodDescriptor_ManagementService_GetGrantedProjectByID = new grpc.web.MethodDescriptor( + '/caos.zitadel.management.api.v1.ManagementService/GetGrantedProjectByID', grpc.web.MethodType.UNARY, proto.caos.zitadel.management.api.v1.ProjectGrantID, - proto.caos.zitadel.management.api.v1.GrantedProject, + proto.caos.zitadel.management.api.v1.ProjectGrantView, /** * @param {!proto.caos.zitadel.management.api.v1.ProjectGrantID} request * @return {!Uint8Array} @@ -4664,7 +4744,7 @@ const methodDescriptor_ManagementService_GetGrantedProjectGrantByID = new grpc.w function(request) { return request.serializeBinary(); }, - proto.caos.zitadel.management.api.v1.GrantedProject.deserializeBinary + proto.caos.zitadel.management.api.v1.ProjectGrantView.deserializeBinary ); @@ -4672,10 +4752,10 @@ const methodDescriptor_ManagementService_GetGrantedProjectGrantByID = new grpc.w * @const * @type {!grpc.web.AbstractClientBase.MethodInfo< * !proto.caos.zitadel.management.api.v1.ProjectGrantID, - * !proto.caos.zitadel.management.api.v1.GrantedProject>} + * !proto.caos.zitadel.management.api.v1.ProjectGrantView>} */ -const methodInfo_ManagementService_GetGrantedProjectGrantByID = new grpc.web.AbstractClientBase.MethodInfo( - proto.caos.zitadel.management.api.v1.GrantedProject, +const methodInfo_ManagementService_GetGrantedProjectByID = new grpc.web.AbstractClientBase.MethodInfo( + proto.caos.zitadel.management.api.v1.ProjectGrantView, /** * @param {!proto.caos.zitadel.management.api.v1.ProjectGrantID} request * @return {!Uint8Array} @@ -4683,7 +4763,7 @@ const methodInfo_ManagementService_GetGrantedProjectGrantByID = new grpc.web.Abs function(request) { return request.serializeBinary(); }, - proto.caos.zitadel.management.api.v1.GrantedProject.deserializeBinary + proto.caos.zitadel.management.api.v1.ProjectGrantView.deserializeBinary ); @@ -4692,18 +4772,18 @@ const methodInfo_ManagementService_GetGrantedProjectGrantByID = new grpc.web.Abs * request proto * @param {?Object} metadata User defined * call metadata - * @param {function(?grpc.web.Error, ?proto.caos.zitadel.management.api.v1.GrantedProject)} + * @param {function(?grpc.web.Error, ?proto.caos.zitadel.management.api.v1.ProjectGrantView)} * callback The callback function(error, response) - * @return {!grpc.web.ClientReadableStream|undefined} + * @return {!grpc.web.ClientReadableStream|undefined} * The XHR Node Readable Stream */ -proto.caos.zitadel.management.api.v1.ManagementServiceClient.prototype.getGrantedProjectGrantByID = +proto.caos.zitadel.management.api.v1.ManagementServiceClient.prototype.getGrantedProjectByID = function(request, metadata, callback) { return this.client_.rpcCall(this.hostname_ + - '/caos.zitadel.management.api.v1.ManagementService/GetGrantedProjectGrantByID', + '/caos.zitadel.management.api.v1.ManagementService/GetGrantedProjectByID', request, metadata || {}, - methodDescriptor_ManagementService_GetGrantedProjectGrantByID, + methodDescriptor_ManagementService_GetGrantedProjectByID, callback); }; @@ -4713,16 +4793,16 @@ proto.caos.zitadel.management.api.v1.ManagementServiceClient.prototype.getGrante * request proto * @param {?Object} metadata User defined * call metadata - * @return {!Promise} + * @return {!Promise} * A native promise that resolves to the response */ -proto.caos.zitadel.management.api.v1.ManagementServicePromiseClient.prototype.getGrantedProjectGrantByID = +proto.caos.zitadel.management.api.v1.ManagementServicePromiseClient.prototype.getGrantedProjectByID = function(request, metadata) { return this.client_.unaryCall(this.hostname_ + - '/caos.zitadel.management.api.v1.ManagementService/GetGrantedProjectGrantByID', + '/caos.zitadel.management.api.v1.ManagementService/GetGrantedProjectByID', request, metadata || {}, - methodDescriptor_ManagementService_GetGrantedProjectGrantByID); + methodDescriptor_ManagementService_GetGrantedProjectByID); }; diff --git a/console/src/app/proto/generated/management_pb.d.ts b/console/src/app/proto/generated/management_pb.d.ts index f52c46066b..8acad1fbf7 100644 --- a/console/src/app/proto/generated/management_pb.d.ts +++ b/console/src/app/proto/generated/management_pb.d.ts @@ -1877,6 +1877,138 @@ export namespace ProjectUpdateRequest { } } +export class ProjectSearchResponse extends jspb.Message { + getOffset(): number; + setOffset(value: number): void; + + getLimit(): number; + setLimit(value: number): void; + + getTotalResult(): number; + setTotalResult(value: number): void; + + getResultList(): Array; + setResultList(value: Array): void; + clearResultList(): void; + addResult(value?: ProjectView, index?: number): ProjectView; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ProjectSearchResponse.AsObject; + static toObject(includeInstance: boolean, msg: ProjectSearchResponse): ProjectSearchResponse.AsObject; + static serializeBinaryToWriter(message: ProjectSearchResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ProjectSearchResponse; + static deserializeBinaryFromReader(message: ProjectSearchResponse, reader: jspb.BinaryReader): ProjectSearchResponse; +} + +export namespace ProjectSearchResponse { + export type AsObject = { + offset: number, + limit: number, + totalResult: number, + resultList: Array, + } +} + +export class ProjectView extends jspb.Message { + getProjectId(): string; + setProjectId(value: string): void; + + getName(): string; + setName(value: string): void; + + getState(): ProjectState; + setState(value: ProjectState): void; + + getChangeDate(): google_protobuf_timestamp_pb.Timestamp | undefined; + setChangeDate(value?: google_protobuf_timestamp_pb.Timestamp): void; + hasChangeDate(): boolean; + clearChangeDate(): void; + + getCreationDate(): google_protobuf_timestamp_pb.Timestamp | undefined; + setCreationDate(value?: google_protobuf_timestamp_pb.Timestamp): void; + hasCreationDate(): boolean; + clearCreationDate(): void; + + getResourceOwner(): string; + setResourceOwner(value: string): void; + + getSequence(): number; + setSequence(value: number): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ProjectView.AsObject; + static toObject(includeInstance: boolean, msg: ProjectView): ProjectView.AsObject; + static serializeBinaryToWriter(message: ProjectView, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ProjectView; + static deserializeBinaryFromReader(message: ProjectView, reader: jspb.BinaryReader): ProjectView; +} + +export namespace ProjectView { + export type AsObject = { + projectId: string, + name: string, + state: ProjectState, + changeDate?: google_protobuf_timestamp_pb.Timestamp.AsObject, + creationDate?: google_protobuf_timestamp_pb.Timestamp.AsObject, + resourceOwner: string, + sequence: number, + } +} + +export class ProjectSearchRequest extends jspb.Message { + getOffset(): number; + setOffset(value: number): void; + + getLimit(): number; + setLimit(value: number): void; + + getQueriesList(): Array; + setQueriesList(value: Array): void; + clearQueriesList(): void; + addQueries(value?: ProjectSearchQuery, index?: number): ProjectSearchQuery; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ProjectSearchRequest.AsObject; + static toObject(includeInstance: boolean, msg: ProjectSearchRequest): ProjectSearchRequest.AsObject; + static serializeBinaryToWriter(message: ProjectSearchRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ProjectSearchRequest; + static deserializeBinaryFromReader(message: ProjectSearchRequest, reader: jspb.BinaryReader): ProjectSearchRequest; +} + +export namespace ProjectSearchRequest { + export type AsObject = { + offset: number, + limit: number, + queriesList: Array, + } +} + +export class ProjectSearchQuery extends jspb.Message { + getKey(): ProjectSearchKey; + setKey(value: ProjectSearchKey): void; + + getMethod(): SearchMethod; + setMethod(value: SearchMethod): void; + + getValue(): string; + setValue(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ProjectSearchQuery.AsObject; + static toObject(includeInstance: boolean, msg: ProjectSearchQuery): ProjectSearchQuery.AsObject; + static serializeBinaryToWriter(message: ProjectSearchQuery, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ProjectSearchQuery; + static deserializeBinaryFromReader(message: ProjectSearchQuery, reader: jspb.BinaryReader): ProjectSearchQuery; +} + +export namespace ProjectSearchQuery { + export type AsObject = { + key: ProjectSearchKey, + method: SearchMethod, + value: string, + } +} + export class Projects extends jspb.Message { getProjectsList(): Array; setProjectsList(value: Array): void; @@ -1939,158 +2071,6 @@ export namespace Project { } } -export class GrantedProjectSearchResponse extends jspb.Message { - getOffset(): number; - setOffset(value: number): void; - - getLimit(): number; - setLimit(value: number): void; - - getTotalResult(): number; - setTotalResult(value: number): void; - - getResultList(): Array; - setResultList(value: Array): void; - clearResultList(): void; - addResult(value?: GrantedProject, index?: number): GrantedProject; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): GrantedProjectSearchResponse.AsObject; - static toObject(includeInstance: boolean, msg: GrantedProjectSearchResponse): GrantedProjectSearchResponse.AsObject; - static serializeBinaryToWriter(message: GrantedProjectSearchResponse, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): GrantedProjectSearchResponse; - static deserializeBinaryFromReader(message: GrantedProjectSearchResponse, reader: jspb.BinaryReader): GrantedProjectSearchResponse; -} - -export namespace GrantedProjectSearchResponse { - export type AsObject = { - offset: number, - limit: number, - totalResult: number, - resultList: Array, - } -} - -export class GrantedProject extends jspb.Message { - getId(): string; - setId(value: string): void; - - getName(): string; - setName(value: string): void; - - getState(): ProjectState; - setState(value: ProjectState): void; - - getChangeDate(): google_protobuf_timestamp_pb.Timestamp | undefined; - setChangeDate(value?: google_protobuf_timestamp_pb.Timestamp): void; - hasChangeDate(): boolean; - clearChangeDate(): void; - - getCreationDate(): google_protobuf_timestamp_pb.Timestamp | undefined; - setCreationDate(value?: google_protobuf_timestamp_pb.Timestamp): void; - hasCreationDate(): boolean; - clearCreationDate(): void; - - getType(): ProjectType; - setType(value: ProjectType): void; - - getResourceOwner(): string; - setResourceOwner(value: string): void; - - getOrgId(): string; - setOrgId(value: string): void; - - getOrgName(): string; - setOrgName(value: string): void; - - getOrgDomain(): string; - setOrgDomain(value: string): void; - - getGrantId(): string; - setGrantId(value: string): void; - - getSequence(): number; - setSequence(value: number): void; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): GrantedProject.AsObject; - static toObject(includeInstance: boolean, msg: GrantedProject): GrantedProject.AsObject; - static serializeBinaryToWriter(message: GrantedProject, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): GrantedProject; - static deserializeBinaryFromReader(message: GrantedProject, reader: jspb.BinaryReader): GrantedProject; -} - -export namespace GrantedProject { - export type AsObject = { - id: string, - name: string, - state: ProjectState, - changeDate?: google_protobuf_timestamp_pb.Timestamp.AsObject, - creationDate?: google_protobuf_timestamp_pb.Timestamp.AsObject, - type: ProjectType, - resourceOwner: string, - orgId: string, - orgName: string, - orgDomain: string, - grantId: string, - sequence: number, - } -} - -export class GrantedProjectSearchRequest extends jspb.Message { - getOffset(): number; - setOffset(value: number): void; - - getLimit(): number; - setLimit(value: number): void; - - getQueriesList(): Array; - setQueriesList(value: Array): void; - clearQueriesList(): void; - addQueries(value?: GrantedProjectSearchQuery, index?: number): GrantedProjectSearchQuery; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): GrantedProjectSearchRequest.AsObject; - static toObject(includeInstance: boolean, msg: GrantedProjectSearchRequest): GrantedProjectSearchRequest.AsObject; - static serializeBinaryToWriter(message: GrantedProjectSearchRequest, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): GrantedProjectSearchRequest; - static deserializeBinaryFromReader(message: GrantedProjectSearchRequest, reader: jspb.BinaryReader): GrantedProjectSearchRequest; -} - -export namespace GrantedProjectSearchRequest { - export type AsObject = { - offset: number, - limit: number, - queriesList: Array, - } -} - -export class GrantedProjectSearchQuery extends jspb.Message { - getKey(): GrantedProjectSearchKey; - setKey(value: GrantedProjectSearchKey): void; - - getMethod(): SearchMethod; - setMethod(value: SearchMethod): void; - - getValue(): string; - setValue(value: string): void; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): GrantedProjectSearchQuery.AsObject; - static toObject(includeInstance: boolean, msg: GrantedProjectSearchQuery): GrantedProjectSearchQuery.AsObject; - static serializeBinaryToWriter(message: GrantedProjectSearchQuery, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): GrantedProjectSearchQuery; - static deserializeBinaryFromReader(message: GrantedProjectSearchQuery, reader: jspb.BinaryReader): GrantedProjectSearchQuery; -} - -export namespace GrantedProjectSearchQuery { - export type AsObject = { - key: GrantedProjectSearchKey, - method: SearchMethod, - value: string, - } -} - export class ProjectMemberRoles extends jspb.Message { getRolesList(): Array; setRolesList(value: Array): void; @@ -3291,6 +3271,34 @@ export namespace ProjectGrantSearchRequest { } } +export class GrantedProjectSearchRequest extends jspb.Message { + getOffset(): number; + setOffset(value: number): void; + + getLimit(): number; + setLimit(value: number): void; + + getQueriesList(): Array; + setQueriesList(value: Array): void; + clearQueriesList(): void; + addQueries(value?: ProjectSearchQuery, index?: number): ProjectSearchQuery; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GrantedProjectSearchRequest.AsObject; + static toObject(includeInstance: boolean, msg: GrantedProjectSearchRequest): GrantedProjectSearchRequest.AsObject; + static serializeBinaryToWriter(message: GrantedProjectSearchRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GrantedProjectSearchRequest; + static deserializeBinaryFromReader(message: GrantedProjectSearchRequest, reader: jspb.BinaryReader): GrantedProjectSearchRequest; +} + +export namespace GrantedProjectSearchRequest { + export type AsObject = { + offset: number, + limit: number, + queriesList: Array, + } +} + export class ProjectGrantMemberRoles extends jspb.Message { getRolesList(): Array; setRolesList(value: Array): void; @@ -4307,6 +4315,10 @@ export enum OrgMemberSearchKey { ORGMEMBERSEARCHKEY_EMAIL = 3, ORGMEMBERSEARCHKEY_USER_ID = 4, } +export enum ProjectSearchKey { + PROJECTSEARCHKEY_UNSPECIFIED = 0, + PROJECTSEARCHKEY_PROJECT_NAME = 1, +} export enum ProjectState { PROJECTSTATE_UNSPECIFIED = 0, PROJECTSTATE_ACTIVE = 1, @@ -4317,10 +4329,6 @@ export enum ProjectType { PROJECTTYPE_OWNED = 1, PROJECTTYPE_GRANTED = 2, } -export enum GrantedProjectSearchKey { - PROJECTSEARCHKEY_UNSPECIFIED = 0, - PROJECTSEARCHKEY_PROJECT_NAME = 1, -} export enum ProjectRoleSearchKey { PROJECTROLESEARCHKEY_UNSPECIFIED = 0, PROJECTROLESEARCHKEY_KEY = 1, diff --git a/console/src/app/proto/generated/management_pb.js b/console/src/app/proto/generated/management_pb.js index 3bded96b71..4d9d1df9ad 100644 --- a/console/src/app/proto/generated/management_pb.js +++ b/console/src/app/proto/generated/management_pb.js @@ -49,11 +49,7 @@ goog.exportSymbol('proto.caos.zitadel.management.api.v1.Changes', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.ClientSecret', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.CreateUserRequest', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.Gender', null, global); -goog.exportSymbol('proto.caos.zitadel.management.api.v1.GrantedProject', null, global); -goog.exportSymbol('proto.caos.zitadel.management.api.v1.GrantedProjectSearchKey', null, global); -goog.exportSymbol('proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest', null, global); -goog.exportSymbol('proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.MFAState', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.MfaType', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.MultiFactor', null, global); @@ -136,12 +132,17 @@ goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectRoleSearchQuery', goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectRoleSearchRequest', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectRoleSearchResponse', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectRoleView', null, global); +goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectSearchKey', null, global); +goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectSearchQuery', null, global); +goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectSearchRequest', null, global); +goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectSearchResponse', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectState', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectType', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectUpdateRequest', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectUserGrantID', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectUserGrantSearchRequest', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectUserGrantUpdate', null, global); +goog.exportSymbol('proto.caos.zitadel.management.api.v1.ProjectView', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.Projects', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.RemoveOrgMemberRequest', null, global); goog.exportSymbol('proto.caos.zitadel.management.api.v1.ResetPasswordRequest', null, global); @@ -1331,6 +1332,90 @@ if (goog.DEBUG && !COMPILED) { */ proto.caos.zitadel.management.api.v1.ProjectUpdateRequest.displayName = 'proto.caos.zitadel.management.api.v1.ProjectUpdateRequest'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.caos.zitadel.management.api.v1.ProjectSearchResponse.repeatedFields_, null); +}; +goog.inherits(proto.caos.zitadel.management.api.v1.ProjectSearchResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.caos.zitadel.management.api.v1.ProjectSearchResponse.displayName = 'proto.caos.zitadel.management.api.v1.ProjectSearchResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.caos.zitadel.management.api.v1.ProjectView = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.caos.zitadel.management.api.v1.ProjectView, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.caos.zitadel.management.api.v1.ProjectView.displayName = 'proto.caos.zitadel.management.api.v1.ProjectView'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.caos.zitadel.management.api.v1.ProjectSearchRequest.repeatedFields_, null); +}; +goog.inherits(proto.caos.zitadel.management.api.v1.ProjectSearchRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.caos.zitadel.management.api.v1.ProjectSearchRequest.displayName = 'proto.caos.zitadel.management.api.v1.ProjectSearchRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.caos.zitadel.management.api.v1.ProjectSearchQuery, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.caos.zitadel.management.api.v1.ProjectSearchQuery.displayName = 'proto.caos.zitadel.management.api.v1.ProjectSearchQuery'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -1373,90 +1458,6 @@ if (goog.DEBUG && !COMPILED) { */ proto.caos.zitadel.management.api.v1.Project.displayName = 'proto.caos.zitadel.management.api.v1.Project'; } -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.repeatedFields_, null); -}; -goog.inherits(proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse, jspb.Message); -if (goog.DEBUG && !COMPILED) { - /** - * @public - * @override - */ - proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.displayName = 'proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse'; -} -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.caos.zitadel.management.api.v1.GrantedProject = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, null, null); -}; -goog.inherits(proto.caos.zitadel.management.api.v1.GrantedProject, jspb.Message); -if (goog.DEBUG && !COMPILED) { - /** - * @public - * @override - */ - proto.caos.zitadel.management.api.v1.GrantedProject.displayName = 'proto.caos.zitadel.management.api.v1.GrantedProject'; -} -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.repeatedFields_, null); -}; -goog.inherits(proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest, jspb.Message); -if (goog.DEBUG && !COMPILED) { - /** - * @public - * @override - */ - proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.displayName = 'proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest'; -} -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, null, null); -}; -goog.inherits(proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery, jspb.Message); -if (goog.DEBUG && !COMPILED) { - /** - * @public - * @override - */ - proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.displayName = 'proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery'; -} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -2171,6 +2172,27 @@ if (goog.DEBUG && !COMPILED) { */ proto.caos.zitadel.management.api.v1.ProjectGrantSearchRequest.displayName = 'proto.caos.zitadel.management.api.v1.ProjectGrantSearchRequest'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.repeatedFields_, null); +}; +goog.inherits(proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.displayName = 'proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -15949,6 +15971,955 @@ proto.caos.zitadel.management.api.v1.ProjectUpdateRequest.prototype.setName = fu +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.repeatedFields_ = [4]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto suitable for use in Soy templates. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. + * @param {boolean=} opt_includeInstance Whether to include the JSPB instance + * for transitional soy proto support: http://goto/soy-param-migration + * @return {!Object} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.toObject = function(opt_includeInstance) { + return proto.caos.zitadel.management.api.v1.ProjectSearchResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Whether to include the JSPB + * instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.toObject = function(includeInstance, msg) { + var f, obj = { + offset: jspb.Message.getFieldWithDefault(msg, 1, 0), + limit: jspb.Message.getFieldWithDefault(msg, 2, 0), + totalResult: jspb.Message.getFieldWithDefault(msg, 3, 0), + resultList: jspb.Message.toObjectList(msg.getResultList(), + proto.caos.zitadel.management.api.v1.ProjectView.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.caos.zitadel.management.api.v1.ProjectSearchResponse} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.caos.zitadel.management.api.v1.ProjectSearchResponse; + return proto.caos.zitadel.management.api.v1.ProjectSearchResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.caos.zitadel.management.api.v1.ProjectSearchResponse} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {number} */ (reader.readUint64()); + msg.setOffset(value); + break; + case 2: + var value = /** @type {number} */ (reader.readUint64()); + msg.setLimit(value); + break; + case 3: + var value = /** @type {number} */ (reader.readUint64()); + msg.setTotalResult(value); + break; + case 4: + var value = new proto.caos.zitadel.management.api.v1.ProjectView; + reader.readMessage(value,proto.caos.zitadel.management.api.v1.ProjectView.deserializeBinaryFromReader); + msg.addResult(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.caos.zitadel.management.api.v1.ProjectSearchResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getOffset(); + if (f !== 0) { + writer.writeUint64( + 1, + f + ); + } + f = message.getLimit(); + if (f !== 0) { + writer.writeUint64( + 2, + f + ); + } + f = message.getTotalResult(); + if (f !== 0) { + writer.writeUint64( + 3, + f + ); + } + f = message.getResultList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 4, + f, + proto.caos.zitadel.management.api.v1.ProjectView.serializeBinaryToWriter + ); + } +}; + + +/** + * optional uint64 offset = 1; + * @return {number} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.getOffset = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** @param {number} value */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.setOffset = function(value) { + jspb.Message.setProto3IntField(this, 1, value); +}; + + +/** + * optional uint64 limit = 2; + * @return {number} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.getLimit = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** @param {number} value */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.setLimit = function(value) { + jspb.Message.setProto3IntField(this, 2, value); +}; + + +/** + * optional uint64 total_result = 3; + * @return {number} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.getTotalResult = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0)); +}; + + +/** @param {number} value */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.setTotalResult = function(value) { + jspb.Message.setProto3IntField(this, 3, value); +}; + + +/** + * repeated ProjectView result = 4; + * @return {!Array} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.getResultList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.caos.zitadel.management.api.v1.ProjectView, 4)); +}; + + +/** @param {!Array} value */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.setResultList = function(value) { + jspb.Message.setRepeatedWrapperField(this, 4, value); +}; + + +/** + * @param {!proto.caos.zitadel.management.api.v1.ProjectView=} opt_value + * @param {number=} opt_index + * @return {!proto.caos.zitadel.management.api.v1.ProjectView} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.addResult = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.caos.zitadel.management.api.v1.ProjectView, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + */ +proto.caos.zitadel.management.api.v1.ProjectSearchResponse.prototype.clearResultList = function() { + this.setResultList([]); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto suitable for use in Soy templates. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. + * @param {boolean=} opt_includeInstance Whether to include the JSPB instance + * for transitional soy proto support: http://goto/soy-param-migration + * @return {!Object} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.toObject = function(opt_includeInstance) { + return proto.caos.zitadel.management.api.v1.ProjectView.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Whether to include the JSPB + * instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.caos.zitadel.management.api.v1.ProjectView} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.caos.zitadel.management.api.v1.ProjectView.toObject = function(includeInstance, msg) { + var f, obj = { + projectId: jspb.Message.getFieldWithDefault(msg, 1, ""), + name: jspb.Message.getFieldWithDefault(msg, 2, ""), + state: jspb.Message.getFieldWithDefault(msg, 3, 0), + changeDate: (f = msg.getChangeDate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f), + creationDate: (f = msg.getCreationDate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f), + resourceOwner: jspb.Message.getFieldWithDefault(msg, 6, ""), + sequence: jspb.Message.getFieldWithDefault(msg, 7, 0) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.caos.zitadel.management.api.v1.ProjectView} + */ +proto.caos.zitadel.management.api.v1.ProjectView.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.caos.zitadel.management.api.v1.ProjectView; + return proto.caos.zitadel.management.api.v1.ProjectView.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.caos.zitadel.management.api.v1.ProjectView} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.caos.zitadel.management.api.v1.ProjectView} + */ +proto.caos.zitadel.management.api.v1.ProjectView.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setProjectId(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 3: + var value = /** @type {!proto.caos.zitadel.management.api.v1.ProjectState} */ (reader.readEnum()); + msg.setState(value); + break; + case 4: + var value = new google_protobuf_timestamp_pb.Timestamp; + reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader); + msg.setChangeDate(value); + break; + case 5: + var value = new google_protobuf_timestamp_pb.Timestamp; + reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader); + msg.setCreationDate(value); + break; + case 6: + var value = /** @type {string} */ (reader.readString()); + msg.setResourceOwner(value); + break; + case 7: + var value = /** @type {number} */ (reader.readUint64()); + msg.setSequence(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.caos.zitadel.management.api.v1.ProjectView.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.caos.zitadel.management.api.v1.ProjectView} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.caos.zitadel.management.api.v1.ProjectView.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getProjectId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } + f = message.getState(); + if (f !== 0.0) { + writer.writeEnum( + 3, + f + ); + } + f = message.getChangeDate(); + if (f != null) { + writer.writeMessage( + 4, + f, + google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter + ); + } + f = message.getCreationDate(); + if (f != null) { + writer.writeMessage( + 5, + f, + google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter + ); + } + f = message.getResourceOwner(); + if (f.length > 0) { + writer.writeString( + 6, + f + ); + } + f = message.getSequence(); + if (f !== 0) { + writer.writeUint64( + 7, + f + ); + } +}; + + +/** + * optional string project_id = 1; + * @return {string} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.getProjectId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** @param {string} value */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.setProjectId = function(value) { + jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string name = 2; + * @return {string} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** @param {string} value */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.setName = function(value) { + jspb.Message.setProto3StringField(this, 2, value); +}; + + +/** + * optional ProjectState state = 3; + * @return {!proto.caos.zitadel.management.api.v1.ProjectState} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.getState = function() { + return /** @type {!proto.caos.zitadel.management.api.v1.ProjectState} */ (jspb.Message.getFieldWithDefault(this, 3, 0)); +}; + + +/** @param {!proto.caos.zitadel.management.api.v1.ProjectState} value */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.setState = function(value) { + jspb.Message.setProto3EnumField(this, 3, value); +}; + + +/** + * optional google.protobuf.Timestamp change_date = 4; + * @return {?proto.google.protobuf.Timestamp} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.getChangeDate = function() { + return /** @type{?proto.google.protobuf.Timestamp} */ ( + jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 4)); +}; + + +/** @param {?proto.google.protobuf.Timestamp|undefined} value */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.setChangeDate = function(value) { + jspb.Message.setWrapperField(this, 4, value); +}; + + +/** + * Clears the message field making it undefined. + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.clearChangeDate = function() { + this.setChangeDate(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.hasChangeDate = function() { + return jspb.Message.getField(this, 4) != null; +}; + + +/** + * optional google.protobuf.Timestamp creation_date = 5; + * @return {?proto.google.protobuf.Timestamp} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.getCreationDate = function() { + return /** @type{?proto.google.protobuf.Timestamp} */ ( + jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 5)); +}; + + +/** @param {?proto.google.protobuf.Timestamp|undefined} value */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.setCreationDate = function(value) { + jspb.Message.setWrapperField(this, 5, value); +}; + + +/** + * Clears the message field making it undefined. + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.clearCreationDate = function() { + this.setCreationDate(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.hasCreationDate = function() { + return jspb.Message.getField(this, 5) != null; +}; + + +/** + * optional string resource_owner = 6; + * @return {string} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.getResourceOwner = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, "")); +}; + + +/** @param {string} value */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.setResourceOwner = function(value) { + jspb.Message.setProto3StringField(this, 6, value); +}; + + +/** + * optional uint64 sequence = 7; + * @return {number} + */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.getSequence = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0)); +}; + + +/** @param {number} value */ +proto.caos.zitadel.management.api.v1.ProjectView.prototype.setSequence = function(value) { + jspb.Message.setProto3IntField(this, 7, value); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.repeatedFields_ = [3]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto suitable for use in Soy templates. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. + * @param {boolean=} opt_includeInstance Whether to include the JSPB instance + * for transitional soy proto support: http://goto/soy-param-migration + * @return {!Object} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.prototype.toObject = function(opt_includeInstance) { + return proto.caos.zitadel.management.api.v1.ProjectSearchRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Whether to include the JSPB + * instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.toObject = function(includeInstance, msg) { + var f, obj = { + offset: jspb.Message.getFieldWithDefault(msg, 1, 0), + limit: jspb.Message.getFieldWithDefault(msg, 2, 0), + queriesList: jspb.Message.toObjectList(msg.getQueriesList(), + proto.caos.zitadel.management.api.v1.ProjectSearchQuery.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.caos.zitadel.management.api.v1.ProjectSearchRequest} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.caos.zitadel.management.api.v1.ProjectSearchRequest; + return proto.caos.zitadel.management.api.v1.ProjectSearchRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.caos.zitadel.management.api.v1.ProjectSearchRequest} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {number} */ (reader.readUint64()); + msg.setOffset(value); + break; + case 2: + var value = /** @type {number} */ (reader.readUint64()); + msg.setLimit(value); + break; + case 3: + var value = new proto.caos.zitadel.management.api.v1.ProjectSearchQuery; + reader.readMessage(value,proto.caos.zitadel.management.api.v1.ProjectSearchQuery.deserializeBinaryFromReader); + msg.addQueries(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.caos.zitadel.management.api.v1.ProjectSearchRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getOffset(); + if (f !== 0) { + writer.writeUint64( + 1, + f + ); + } + f = message.getLimit(); + if (f !== 0) { + writer.writeUint64( + 2, + f + ); + } + f = message.getQueriesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 3, + f, + proto.caos.zitadel.management.api.v1.ProjectSearchQuery.serializeBinaryToWriter + ); + } +}; + + +/** + * optional uint64 offset = 1; + * @return {number} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.prototype.getOffset = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** @param {number} value */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.prototype.setOffset = function(value) { + jspb.Message.setProto3IntField(this, 1, value); +}; + + +/** + * optional uint64 limit = 2; + * @return {number} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.prototype.getLimit = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** @param {number} value */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.prototype.setLimit = function(value) { + jspb.Message.setProto3IntField(this, 2, value); +}; + + +/** + * repeated ProjectSearchQuery queries = 3; + * @return {!Array} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.prototype.getQueriesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.caos.zitadel.management.api.v1.ProjectSearchQuery, 3)); +}; + + +/** @param {!Array} value */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.prototype.setQueriesList = function(value) { + jspb.Message.setRepeatedWrapperField(this, 3, value); +}; + + +/** + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchQuery=} opt_value + * @param {number=} opt_index + * @return {!proto.caos.zitadel.management.api.v1.ProjectSearchQuery} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.prototype.addQueries = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.caos.zitadel.management.api.v1.ProjectSearchQuery, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + */ +proto.caos.zitadel.management.api.v1.ProjectSearchRequest.prototype.clearQueriesList = function() { + this.setQueriesList([]); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto suitable for use in Soy templates. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. + * @param {boolean=} opt_includeInstance Whether to include the JSPB instance + * for transitional soy proto support: http://goto/soy-param-migration + * @return {!Object} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.prototype.toObject = function(opt_includeInstance) { + return proto.caos.zitadel.management.api.v1.ProjectSearchQuery.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Whether to include the JSPB + * instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchQuery} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.toObject = function(includeInstance, msg) { + var f, obj = { + key: jspb.Message.getFieldWithDefault(msg, 1, 0), + method: jspb.Message.getFieldWithDefault(msg, 2, 0), + value: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.caos.zitadel.management.api.v1.ProjectSearchQuery} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.caos.zitadel.management.api.v1.ProjectSearchQuery; + return proto.caos.zitadel.management.api.v1.ProjectSearchQuery.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchQuery} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.caos.zitadel.management.api.v1.ProjectSearchQuery} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!proto.caos.zitadel.management.api.v1.ProjectSearchKey} */ (reader.readEnum()); + msg.setKey(value); + break; + case 2: + var value = /** @type {!proto.caos.zitadel.management.api.v1.SearchMethod} */ (reader.readEnum()); + msg.setMethod(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setValue(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.caos.zitadel.management.api.v1.ProjectSearchQuery.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchQuery} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getKey(); + if (f !== 0.0) { + writer.writeEnum( + 1, + f + ); + } + f = message.getMethod(); + if (f !== 0.0) { + writer.writeEnum( + 2, + f + ); + } + f = message.getValue(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional ProjectSearchKey key = 1; + * @return {!proto.caos.zitadel.management.api.v1.ProjectSearchKey} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.prototype.getKey = function() { + return /** @type {!proto.caos.zitadel.management.api.v1.ProjectSearchKey} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** @param {!proto.caos.zitadel.management.api.v1.ProjectSearchKey} value */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.prototype.setKey = function(value) { + jspb.Message.setProto3EnumField(this, 1, value); +}; + + +/** + * optional SearchMethod method = 2; + * @return {!proto.caos.zitadel.management.api.v1.SearchMethod} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.prototype.getMethod = function() { + return /** @type {!proto.caos.zitadel.management.api.v1.SearchMethod} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** @param {!proto.caos.zitadel.management.api.v1.SearchMethod} value */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.prototype.setMethod = function(value) { + jspb.Message.setProto3EnumField(this, 2, value); +}; + + +/** + * optional string value = 3; + * @return {string} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.prototype.getValue = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** @param {string} value */ +proto.caos.zitadel.management.api.v1.ProjectSearchQuery.prototype.setValue = function(value) { + jspb.Message.setProto3StringField(this, 3, value); +}; + + + /** * List of repeated fields within this message type. * @private {!Array} @@ -16403,1090 +17374,6 @@ proto.caos.zitadel.management.api.v1.Project.prototype.setSequence = function(va -/** - * List of repeated fields within this message type. - * @private {!Array} - * @const - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.repeatedFields_ = [4]; - - - -if (jspb.Message.GENERATE_TO_OBJECT) { -/** - * Creates an object representation of this proto suitable for use in Soy templates. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. - * @param {boolean=} opt_includeInstance Whether to include the JSPB instance - * for transitional soy proto support: http://goto/soy-param-migration - * @return {!Object} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.toObject = function(opt_includeInstance) { - return proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.toObject(opt_includeInstance, this); -}; - - -/** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Whether to include the JSPB - * instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse} msg The msg instance to transform. - * @return {!Object} - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.toObject = function(includeInstance, msg) { - var f, obj = { - offset: jspb.Message.getFieldWithDefault(msg, 1, 0), - limit: jspb.Message.getFieldWithDefault(msg, 2, 0), - totalResult: jspb.Message.getFieldWithDefault(msg, 3, 0), - resultList: jspb.Message.toObjectList(msg.getResultList(), - proto.caos.zitadel.management.api.v1.GrantedProject.toObject, includeInstance) - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; -}; -} - - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.deserializeBinary = function(bytes) { - var reader = new jspb.BinaryReader(bytes); - var msg = new proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse; - return proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.deserializeBinaryFromReader(msg, reader); -}; - - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.deserializeBinaryFromReader = function(msg, reader) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - var field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {number} */ (reader.readUint64()); - msg.setOffset(value); - break; - case 2: - var value = /** @type {number} */ (reader.readUint64()); - msg.setLimit(value); - break; - case 3: - var value = /** @type {number} */ (reader.readUint64()); - msg.setTotalResult(value); - break; - case 4: - var value = new proto.caos.zitadel.management.api.v1.GrantedProject; - reader.readMessage(value,proto.caos.zitadel.management.api.v1.GrantedProject.deserializeBinaryFromReader); - msg.addResult(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.serializeBinary = function() { - var writer = new jspb.BinaryWriter(); - proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.serializeBinaryToWriter(this, writer); - return writer.getResultBuffer(); -}; - - -/** - * Serializes the given message to binary data (in protobuf wire - * format), writing to the given BinaryWriter. - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse} message - * @param {!jspb.BinaryWriter} writer - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.serializeBinaryToWriter = function(message, writer) { - var f = undefined; - f = message.getOffset(); - if (f !== 0) { - writer.writeUint64( - 1, - f - ); - } - f = message.getLimit(); - if (f !== 0) { - writer.writeUint64( - 2, - f - ); - } - f = message.getTotalResult(); - if (f !== 0) { - writer.writeUint64( - 3, - f - ); - } - f = message.getResultList(); - if (f.length > 0) { - writer.writeRepeatedMessage( - 4, - f, - proto.caos.zitadel.management.api.v1.GrantedProject.serializeBinaryToWriter - ); - } -}; - - -/** - * optional uint64 offset = 1; - * @return {number} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.getOffset = function() { - return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); -}; - - -/** @param {number} value */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.setOffset = function(value) { - jspb.Message.setProto3IntField(this, 1, value); -}; - - -/** - * optional uint64 limit = 2; - * @return {number} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.getLimit = function() { - return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); -}; - - -/** @param {number} value */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.setLimit = function(value) { - jspb.Message.setProto3IntField(this, 2, value); -}; - - -/** - * optional uint64 total_result = 3; - * @return {number} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.getTotalResult = function() { - return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0)); -}; - - -/** @param {number} value */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.setTotalResult = function(value) { - jspb.Message.setProto3IntField(this, 3, value); -}; - - -/** - * repeated GrantedProject result = 4; - * @return {!Array} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.getResultList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, proto.caos.zitadel.management.api.v1.GrantedProject, 4)); -}; - - -/** @param {!Array} value */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.setResultList = function(value) { - jspb.Message.setRepeatedWrapperField(this, 4, value); -}; - - -/** - * @param {!proto.caos.zitadel.management.api.v1.GrantedProject=} opt_value - * @param {number=} opt_index - * @return {!proto.caos.zitadel.management.api.v1.GrantedProject} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.addResult = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.caos.zitadel.management.api.v1.GrantedProject, opt_index); -}; - - -/** - * Clears the list making it empty but non-null. - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchResponse.prototype.clearResultList = function() { - this.setResultList([]); -}; - - - - - -if (jspb.Message.GENERATE_TO_OBJECT) { -/** - * Creates an object representation of this proto suitable for use in Soy templates. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. - * @param {boolean=} opt_includeInstance Whether to include the JSPB instance - * for transitional soy proto support: http://goto/soy-param-migration - * @return {!Object} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.toObject = function(opt_includeInstance) { - return proto.caos.zitadel.management.api.v1.GrantedProject.toObject(opt_includeInstance, this); -}; - - -/** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Whether to include the JSPB - * instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.caos.zitadel.management.api.v1.GrantedProject} msg The msg instance to transform. - * @return {!Object} - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.caos.zitadel.management.api.v1.GrantedProject.toObject = function(includeInstance, msg) { - var f, obj = { - id: jspb.Message.getFieldWithDefault(msg, 1, ""), - name: jspb.Message.getFieldWithDefault(msg, 2, ""), - state: jspb.Message.getFieldWithDefault(msg, 3, 0), - changeDate: (f = msg.getChangeDate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f), - creationDate: (f = msg.getCreationDate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f), - type: jspb.Message.getFieldWithDefault(msg, 6, 0), - resourceOwner: jspb.Message.getFieldWithDefault(msg, 7, ""), - orgId: jspb.Message.getFieldWithDefault(msg, 8, ""), - orgName: jspb.Message.getFieldWithDefault(msg, 9, ""), - orgDomain: jspb.Message.getFieldWithDefault(msg, 10, ""), - grantId: jspb.Message.getFieldWithDefault(msg, 11, ""), - sequence: jspb.Message.getFieldWithDefault(msg, 12, 0) - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; -}; -} - - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.caos.zitadel.management.api.v1.GrantedProject} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.deserializeBinary = function(bytes) { - var reader = new jspb.BinaryReader(bytes); - var msg = new proto.caos.zitadel.management.api.v1.GrantedProject; - return proto.caos.zitadel.management.api.v1.GrantedProject.deserializeBinaryFromReader(msg, reader); -}; - - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.caos.zitadel.management.api.v1.GrantedProject} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.caos.zitadel.management.api.v1.GrantedProject} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.deserializeBinaryFromReader = function(msg, reader) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - var field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {string} */ (reader.readString()); - msg.setId(value); - break; - case 2: - var value = /** @type {string} */ (reader.readString()); - msg.setName(value); - break; - case 3: - var value = /** @type {!proto.caos.zitadel.management.api.v1.ProjectState} */ (reader.readEnum()); - msg.setState(value); - break; - case 4: - var value = new google_protobuf_timestamp_pb.Timestamp; - reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader); - msg.setChangeDate(value); - break; - case 5: - var value = new google_protobuf_timestamp_pb.Timestamp; - reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader); - msg.setCreationDate(value); - break; - case 6: - var value = /** @type {!proto.caos.zitadel.management.api.v1.ProjectType} */ (reader.readEnum()); - msg.setType(value); - break; - case 7: - var value = /** @type {string} */ (reader.readString()); - msg.setResourceOwner(value); - break; - case 8: - var value = /** @type {string} */ (reader.readString()); - msg.setOrgId(value); - break; - case 9: - var value = /** @type {string} */ (reader.readString()); - msg.setOrgName(value); - break; - case 10: - var value = /** @type {string} */ (reader.readString()); - msg.setOrgDomain(value); - break; - case 11: - var value = /** @type {string} */ (reader.readString()); - msg.setGrantId(value); - break; - case 12: - var value = /** @type {number} */ (reader.readUint64()); - msg.setSequence(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.serializeBinary = function() { - var writer = new jspb.BinaryWriter(); - proto.caos.zitadel.management.api.v1.GrantedProject.serializeBinaryToWriter(this, writer); - return writer.getResultBuffer(); -}; - - -/** - * Serializes the given message to binary data (in protobuf wire - * format), writing to the given BinaryWriter. - * @param {!proto.caos.zitadel.management.api.v1.GrantedProject} message - * @param {!jspb.BinaryWriter} writer - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.caos.zitadel.management.api.v1.GrantedProject.serializeBinaryToWriter = function(message, writer) { - var f = undefined; - f = message.getId(); - if (f.length > 0) { - writer.writeString( - 1, - f - ); - } - f = message.getName(); - if (f.length > 0) { - writer.writeString( - 2, - f - ); - } - f = message.getState(); - if (f !== 0.0) { - writer.writeEnum( - 3, - f - ); - } - f = message.getChangeDate(); - if (f != null) { - writer.writeMessage( - 4, - f, - google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter - ); - } - f = message.getCreationDate(); - if (f != null) { - writer.writeMessage( - 5, - f, - google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter - ); - } - f = message.getType(); - if (f !== 0.0) { - writer.writeEnum( - 6, - f - ); - } - f = message.getResourceOwner(); - if (f.length > 0) { - writer.writeString( - 7, - f - ); - } - f = message.getOrgId(); - if (f.length > 0) { - writer.writeString( - 8, - f - ); - } - f = message.getOrgName(); - if (f.length > 0) { - writer.writeString( - 9, - f - ); - } - f = message.getOrgDomain(); - if (f.length > 0) { - writer.writeString( - 10, - f - ); - } - f = message.getGrantId(); - if (f.length > 0) { - writer.writeString( - 11, - f - ); - } - f = message.getSequence(); - if (f !== 0) { - writer.writeUint64( - 12, - f - ); - } -}; - - -/** - * optional string id = 1; - * @return {string} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getId = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); -}; - - -/** @param {string} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setId = function(value) { - jspb.Message.setProto3StringField(this, 1, value); -}; - - -/** - * optional string name = 2; - * @return {string} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getName = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); -}; - - -/** @param {string} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setName = function(value) { - jspb.Message.setProto3StringField(this, 2, value); -}; - - -/** - * optional ProjectState state = 3; - * @return {!proto.caos.zitadel.management.api.v1.ProjectState} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getState = function() { - return /** @type {!proto.caos.zitadel.management.api.v1.ProjectState} */ (jspb.Message.getFieldWithDefault(this, 3, 0)); -}; - - -/** @param {!proto.caos.zitadel.management.api.v1.ProjectState} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setState = function(value) { - jspb.Message.setProto3EnumField(this, 3, value); -}; - - -/** - * optional google.protobuf.Timestamp change_date = 4; - * @return {?proto.google.protobuf.Timestamp} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getChangeDate = function() { - return /** @type{?proto.google.protobuf.Timestamp} */ ( - jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 4)); -}; - - -/** @param {?proto.google.protobuf.Timestamp|undefined} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setChangeDate = function(value) { - jspb.Message.setWrapperField(this, 4, value); -}; - - -/** - * Clears the message field making it undefined. - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.clearChangeDate = function() { - this.setChangeDate(undefined); -}; - - -/** - * Returns whether this field is set. - * @return {boolean} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.hasChangeDate = function() { - return jspb.Message.getField(this, 4) != null; -}; - - -/** - * optional google.protobuf.Timestamp creation_date = 5; - * @return {?proto.google.protobuf.Timestamp} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getCreationDate = function() { - return /** @type{?proto.google.protobuf.Timestamp} */ ( - jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 5)); -}; - - -/** @param {?proto.google.protobuf.Timestamp|undefined} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setCreationDate = function(value) { - jspb.Message.setWrapperField(this, 5, value); -}; - - -/** - * Clears the message field making it undefined. - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.clearCreationDate = function() { - this.setCreationDate(undefined); -}; - - -/** - * Returns whether this field is set. - * @return {boolean} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.hasCreationDate = function() { - return jspb.Message.getField(this, 5) != null; -}; - - -/** - * optional ProjectType type = 6; - * @return {!proto.caos.zitadel.management.api.v1.ProjectType} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getType = function() { - return /** @type {!proto.caos.zitadel.management.api.v1.ProjectType} */ (jspb.Message.getFieldWithDefault(this, 6, 0)); -}; - - -/** @param {!proto.caos.zitadel.management.api.v1.ProjectType} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setType = function(value) { - jspb.Message.setProto3EnumField(this, 6, value); -}; - - -/** - * optional string resource_owner = 7; - * @return {string} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getResourceOwner = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, "")); -}; - - -/** @param {string} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setResourceOwner = function(value) { - jspb.Message.setProto3StringField(this, 7, value); -}; - - -/** - * optional string org_id = 8; - * @return {string} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getOrgId = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, "")); -}; - - -/** @param {string} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setOrgId = function(value) { - jspb.Message.setProto3StringField(this, 8, value); -}; - - -/** - * optional string org_name = 9; - * @return {string} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getOrgName = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, "")); -}; - - -/** @param {string} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setOrgName = function(value) { - jspb.Message.setProto3StringField(this, 9, value); -}; - - -/** - * optional string org_domain = 10; - * @return {string} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getOrgDomain = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, "")); -}; - - -/** @param {string} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setOrgDomain = function(value) { - jspb.Message.setProto3StringField(this, 10, value); -}; - - -/** - * optional string grant_id = 11; - * @return {string} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getGrantId = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 11, "")); -}; - - -/** @param {string} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setGrantId = function(value) { - jspb.Message.setProto3StringField(this, 11, value); -}; - - -/** - * optional uint64 sequence = 12; - * @return {number} - */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.getSequence = function() { - return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 12, 0)); -}; - - -/** @param {number} value */ -proto.caos.zitadel.management.api.v1.GrantedProject.prototype.setSequence = function(value) { - jspb.Message.setProto3IntField(this, 12, value); -}; - - - -/** - * List of repeated fields within this message type. - * @private {!Array} - * @const - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.repeatedFields_ = [3]; - - - -if (jspb.Message.GENERATE_TO_OBJECT) { -/** - * Creates an object representation of this proto suitable for use in Soy templates. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. - * @param {boolean=} opt_includeInstance Whether to include the JSPB instance - * for transitional soy proto support: http://goto/soy-param-migration - * @return {!Object} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.toObject = function(opt_includeInstance) { - return proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.toObject(opt_includeInstance, this); -}; - - -/** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Whether to include the JSPB - * instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} msg The msg instance to transform. - * @return {!Object} - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.toObject = function(includeInstance, msg) { - var f, obj = { - offset: jspb.Message.getFieldWithDefault(msg, 1, 0), - limit: jspb.Message.getFieldWithDefault(msg, 2, 0), - queriesList: jspb.Message.toObjectList(msg.getQueriesList(), - proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.toObject, includeInstance) - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; -}; -} - - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.deserializeBinary = function(bytes) { - var reader = new jspb.BinaryReader(bytes); - var msg = new proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest; - return proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.deserializeBinaryFromReader(msg, reader); -}; - - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.deserializeBinaryFromReader = function(msg, reader) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - var field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {number} */ (reader.readUint64()); - msg.setOffset(value); - break; - case 2: - var value = /** @type {number} */ (reader.readUint64()); - msg.setLimit(value); - break; - case 3: - var value = new proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery; - reader.readMessage(value,proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.deserializeBinaryFromReader); - msg.addQueries(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.serializeBinary = function() { - var writer = new jspb.BinaryWriter(); - proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.serializeBinaryToWriter(this, writer); - return writer.getResultBuffer(); -}; - - -/** - * Serializes the given message to binary data (in protobuf wire - * format), writing to the given BinaryWriter. - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} message - * @param {!jspb.BinaryWriter} writer - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.serializeBinaryToWriter = function(message, writer) { - var f = undefined; - f = message.getOffset(); - if (f !== 0) { - writer.writeUint64( - 1, - f - ); - } - f = message.getLimit(); - if (f !== 0) { - writer.writeUint64( - 2, - f - ); - } - f = message.getQueriesList(); - if (f.length > 0) { - writer.writeRepeatedMessage( - 3, - f, - proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.serializeBinaryToWriter - ); - } -}; - - -/** - * optional uint64 offset = 1; - * @return {number} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.getOffset = function() { - return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); -}; - - -/** @param {number} value */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.setOffset = function(value) { - jspb.Message.setProto3IntField(this, 1, value); -}; - - -/** - * optional uint64 limit = 2; - * @return {number} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.getLimit = function() { - return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); -}; - - -/** @param {number} value */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.setLimit = function(value) { - jspb.Message.setProto3IntField(this, 2, value); -}; - - -/** - * repeated GrantedProjectSearchQuery queries = 3; - * @return {!Array} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.getQueriesList = function() { - return /** @type{!Array} */ ( - jspb.Message.getRepeatedWrapperField(this, proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery, 3)); -}; - - -/** @param {!Array} value */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.setQueriesList = function(value) { - jspb.Message.setRepeatedWrapperField(this, 3, value); -}; - - -/** - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery=} opt_value - * @param {number=} opt_index - * @return {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.addQueries = function(opt_value, opt_index) { - return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery, opt_index); -}; - - -/** - * Clears the list making it empty but non-null. - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.clearQueriesList = function() { - this.setQueriesList([]); -}; - - - - - -if (jspb.Message.GENERATE_TO_OBJECT) { -/** - * Creates an object representation of this proto suitable for use in Soy templates. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. - * @param {boolean=} opt_includeInstance Whether to include the JSPB instance - * for transitional soy proto support: http://goto/soy-param-migration - * @return {!Object} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.prototype.toObject = function(opt_includeInstance) { - return proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.toObject(opt_includeInstance, this); -}; - - -/** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Whether to include the JSPB - * instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery} msg The msg instance to transform. - * @return {!Object} - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.toObject = function(includeInstance, msg) { - var f, obj = { - key: jspb.Message.getFieldWithDefault(msg, 1, 0), - method: jspb.Message.getFieldWithDefault(msg, 2, 0), - value: jspb.Message.getFieldWithDefault(msg, 3, "") - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; -}; -} - - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.deserializeBinary = function(bytes) { - var reader = new jspb.BinaryReader(bytes); - var msg = new proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery; - return proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.deserializeBinaryFromReader(msg, reader); -}; - - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.deserializeBinaryFromReader = function(msg, reader) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - var field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchKey} */ (reader.readEnum()); - msg.setKey(value); - break; - case 2: - var value = /** @type {!proto.caos.zitadel.management.api.v1.SearchMethod} */ (reader.readEnum()); - msg.setMethod(value); - break; - case 3: - var value = /** @type {string} */ (reader.readString()); - msg.setValue(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.prototype.serializeBinary = function() { - var writer = new jspb.BinaryWriter(); - proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.serializeBinaryToWriter(this, writer); - return writer.getResultBuffer(); -}; - - -/** - * Serializes the given message to binary data (in protobuf wire - * format), writing to the given BinaryWriter. - * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery} message - * @param {!jspb.BinaryWriter} writer - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.serializeBinaryToWriter = function(message, writer) { - var f = undefined; - f = message.getKey(); - if (f !== 0.0) { - writer.writeEnum( - 1, - f - ); - } - f = message.getMethod(); - if (f !== 0.0) { - writer.writeEnum( - 2, - f - ); - } - f = message.getValue(); - if (f.length > 0) { - writer.writeString( - 3, - f - ); - } -}; - - -/** - * optional GrantedProjectSearchKey key = 1; - * @return {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchKey} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.prototype.getKey = function() { - return /** @type {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchKey} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); -}; - - -/** @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchKey} value */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.prototype.setKey = function(value) { - jspb.Message.setProto3EnumField(this, 1, value); -}; - - -/** - * optional SearchMethod method = 2; - * @return {!proto.caos.zitadel.management.api.v1.SearchMethod} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.prototype.getMethod = function() { - return /** @type {!proto.caos.zitadel.management.api.v1.SearchMethod} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); -}; - - -/** @param {!proto.caos.zitadel.management.api.v1.SearchMethod} value */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.prototype.setMethod = function(value) { - jspb.Message.setProto3EnumField(this, 2, value); -}; - - -/** - * optional string value = 3; - * @return {string} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.prototype.getValue = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); -}; - - -/** @param {string} value */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchQuery.prototype.setValue = function(value) { - jspb.Message.setProto3StringField(this, 3, value); -}; - - - /** * List of repeated fields within this message type. * @private {!Array} @@ -26038,6 +25925,214 @@ proto.caos.zitadel.management.api.v1.ProjectGrantSearchRequest.prototype.setLimi +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.repeatedFields_ = [3]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto suitable for use in Soy templates. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. + * @param {boolean=} opt_includeInstance Whether to include the JSPB instance + * for transitional soy proto support: http://goto/soy-param-migration + * @return {!Object} + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.toObject = function(opt_includeInstance) { + return proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Whether to include the JSPB + * instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.toObject = function(includeInstance, msg) { + var f, obj = { + offset: jspb.Message.getFieldWithDefault(msg, 1, 0), + limit: jspb.Message.getFieldWithDefault(msg, 2, 0), + queriesList: jspb.Message.toObjectList(msg.getQueriesList(), + proto.caos.zitadel.management.api.v1.ProjectSearchQuery.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest; + return proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {number} */ (reader.readUint64()); + msg.setOffset(value); + break; + case 2: + var value = /** @type {number} */ (reader.readUint64()); + msg.setLimit(value); + break; + case 3: + var value = new proto.caos.zitadel.management.api.v1.ProjectSearchQuery; + reader.readMessage(value,proto.caos.zitadel.management.api.v1.ProjectSearchQuery.deserializeBinaryFromReader); + msg.addQueries(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getOffset(); + if (f !== 0) { + writer.writeUint64( + 1, + f + ); + } + f = message.getLimit(); + if (f !== 0) { + writer.writeUint64( + 2, + f + ); + } + f = message.getQueriesList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 3, + f, + proto.caos.zitadel.management.api.v1.ProjectSearchQuery.serializeBinaryToWriter + ); + } +}; + + +/** + * optional uint64 offset = 1; + * @return {number} + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.getOffset = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** @param {number} value */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.setOffset = function(value) { + jspb.Message.setProto3IntField(this, 1, value); +}; + + +/** + * optional uint64 limit = 2; + * @return {number} + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.getLimit = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** @param {number} value */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.setLimit = function(value) { + jspb.Message.setProto3IntField(this, 2, value); +}; + + +/** + * repeated ProjectSearchQuery queries = 3; + * @return {!Array} + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.getQueriesList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.caos.zitadel.management.api.v1.ProjectSearchQuery, 3)); +}; + + +/** @param {!Array} value */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.setQueriesList = function(value) { + jspb.Message.setRepeatedWrapperField(this, 3, value); +}; + + +/** + * @param {!proto.caos.zitadel.management.api.v1.ProjectSearchQuery=} opt_value + * @param {number=} opt_index + * @return {!proto.caos.zitadel.management.api.v1.ProjectSearchQuery} + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.addQueries = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.caos.zitadel.management.api.v1.ProjectSearchQuery, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + */ +proto.caos.zitadel.management.api.v1.GrantedProjectSearchRequest.prototype.clearQueriesList = function() { + this.setQueriesList([]); +}; + + + /** * List of repeated fields within this message type. * @private {!Array} @@ -32968,6 +33063,14 @@ proto.caos.zitadel.management.api.v1.OrgMemberSearchKey = { ORGMEMBERSEARCHKEY_USER_ID: 4 }; +/** + * @enum {number} + */ +proto.caos.zitadel.management.api.v1.ProjectSearchKey = { + PROJECTSEARCHKEY_UNSPECIFIED: 0, + PROJECTSEARCHKEY_PROJECT_NAME: 1 +}; + /** * @enum {number} */ @@ -32986,14 +33089,6 @@ proto.caos.zitadel.management.api.v1.ProjectType = { PROJECTTYPE_GRANTED: 2 }; -/** - * @enum {number} - */ -proto.caos.zitadel.management.api.v1.GrantedProjectSearchKey = { - PROJECTSEARCHKEY_UNSPECIFIED: 0, - PROJECTSEARCHKEY_PROJECT_NAME: 1 -}; - /** * @enum {number} */ diff --git a/console/src/app/services/auth-user.service.ts b/console/src/app/services/auth-user.service.ts index 854154cc53..eb234163f3 100644 --- a/console/src/app/services/auth-user.service.ts +++ b/console/src/app/services/auth-user.service.ts @@ -96,6 +96,7 @@ export class AuthUserService { req.setDisplayName(profile.displayName); req.setPreferredLanguage(profile.preferredLanguage); req.setGender(profile.gender); + console.log(req.toObject()); return await this.request( c => c.updateMyUserProfile, req, @@ -264,7 +265,12 @@ export class AuthUserService { return this.GetMyzitadelPermissions().pipe( switchMap(response => { - const userRoles = response.toObject().permissionsList; + let userRoles = []; + if (response.toObject().permissionsList) { + userRoles = response.toObject().permissionsList; + } else { + userRoles = ['user.resourceowner']; + } this._roleCache = userRoles; return of(this.hasRoles(userRoles, roles, each)); }), diff --git a/console/src/app/services/mgmt-user.service.ts b/console/src/app/services/mgmt-user.service.ts index 511fea365e..7595d5a23b 100644 --- a/console/src/app/services/mgmt-user.service.ts +++ b/console/src/app/services/mgmt-user.service.ts @@ -7,6 +7,7 @@ import { ChangeRequest, Changes, CreateUserRequest, + MultiFactors, NotificationType, PasswordRequest, ProjectGrantMemberSearchQuery, @@ -92,6 +93,16 @@ export class MgmtUserService { ); } + public async getUserMfas(id: string): Promise { + const req = new UserID(); + req.setId(id); + return await this.request( + c => c.getUserMfas, + req, + f => f, + ); + } + public async SaveUserProfile(profile: UserProfile.AsObject): Promise { const req = new UpdateUserProfileRequest(); req.setId(profile.id); diff --git a/console/src/app/services/project.service.ts b/console/src/app/services/project.service.ts index 395d0026ca..edcb09090c 100644 --- a/console/src/app/services/project.service.ts +++ b/console/src/app/services/project.service.ts @@ -10,10 +10,7 @@ import { ApplicationSearchRequest, ApplicationSearchResponse, ApplicationUpdate, - GrantedProject, - GrantedProjectSearchQuery, GrantedProjectSearchRequest, - GrantedProjectSearchResponse, OIDCApplicationCreate, OIDCConfig, OIDCConfigUpdate, @@ -30,6 +27,7 @@ import { ProjectGrantSearchRequest, ProjectGrantSearchResponse, ProjectGrantUpdate, + ProjectGrantView, ProjectID, ProjectMemberAdd, ProjectMemberChange, @@ -42,6 +40,9 @@ import { ProjectRoleSearchQuery, ProjectRoleSearchRequest, ProjectRoleSearchResponse, + ProjectSearchQuery, + ProjectSearchRequest, + ProjectSearchResponse, ProjectUpdateRequest, ProjectUserGrantSearchRequest, UserGrant, @@ -73,8 +74,23 @@ export class ProjectService { return responseMapper(response); } + public async SearchProjects( + limit: number, offset: number, queryList?: ProjectSearchQuery[]): Promise { + const req = new ProjectSearchRequest(); + req.setLimit(limit); + req.setOffset(offset); + if (queryList) { + req.setQueriesList(queryList); + } + return await this.request( + c => c.searchProjects, + req, + f => f, + ); + } + public async SearchGrantedProjects( - limit: number, offset: number, queryList?: GrantedProjectSearchQuery[]): Promise { + limit: number, offset: number, queryList?: ProjectSearchQuery[]): Promise { const req = new GrantedProjectSearchRequest(); req.setLimit(limit); req.setOffset(offset); @@ -88,21 +104,6 @@ export class ProjectService { ); } - // public async SearchGrantedProjects( - // limit: number, offset: number, queryList?: GrantedProjectSearchQuery[]): Promise { - // const req = new GrantedProjectSearchRequest(); - // req.setLimit(limit); - // req.setOffset(offset); - // if (queryList) { - // req.setQueriesList(queryList); - // } - // return await this.request( - // c => c.search, - // req, - // f => f, - // ); - // } - public async GetProjectById(projectId: string): Promise { const req = new ProjectID(); req.setId(projectId); @@ -113,12 +114,12 @@ export class ProjectService { ); } - public async GetGrantedProjectGrantByID(projectId: string, id: string): Promise { + public async GetGrantedProjectByID(projectId: string, id: string): Promise { const req = new ProjectGrantID(); req.setId(id); req.setProjectId(projectId); return await this.request( - c => c.getGrantedProjectGrantByID, + c => c.getGrantedProjectByID, req, f => f, ); diff --git a/console/src/assets/environment.json b/console/src/assets/environment.json index 3708749031..e5c102c8d8 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": "58891550352010481@zitadel" + "clientid": "60073514127912158@zitadel" } diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json index d594ed7ec7..4d4bd62493 100644 --- a/console/src/assets/i18n/de.json +++ b/console/src/assets/i18n/de.json @@ -176,7 +176,7 @@ "SIGNEDOUT":"Du bist abgemeldet. Klicke den Button um dich wieder anzumelden!", "SIGNEDOUT_BTN":"Anmelden", "EDITACCOUNT":"Account bearbeiten", - "ADDACCOUNT":"Neuen Account hinzufügen" + "ADDACCOUNT":"mit einem anderen Account anmelden" }, "ORG": { "PAGES": { @@ -197,6 +197,10 @@ "1": "aktiv", "2": "inaktiv" }, + "MEMBER": { + "TITLE":"Organisations Manager verwalten", + "DESCRIPTION":"Definieren Sie hier die Accounts, die Operationen auf ihrer Organisationen vornehmen dürfen." + }, "POLICY": { "TITLE":"Richtlinen festlegen", "DESCRIPTION":"Vorgefertigte Lösungen, die Ihnen Zeit sparen und Ihre Sicherheit gewährleisten", @@ -275,7 +279,8 @@ "DETAIL": "Detail", "CREATE": "Projekt erstellen", "CREATE_DESC": "Geben Sie den Namen ein", - "ROLE": "Rolle" + "ROLE": "Rolle", + "NOITEMS": "Keine Projekte" }, "STATE": { "TITLE":"Status", @@ -474,6 +479,10 @@ "org.changed":"Org editiert", "org.member.added":"Organisation Member erstellt", "org.member.removed":"Organisation Member gelöscht", + "org.domain.added":"Org Domain hinzugefügt", + "org.domain.verified":"Org Domain verifiziert", + "org.domain.primary.set":"Primäre domain gesetzt", + "org.iam.policy.added":"IAM Policy hinzugefügt", "project.added": "Projekt erstellt", "project.changed":"Projekt editiert", "project.deactivated":"Projekt deaktiviert", @@ -481,7 +490,17 @@ "project.member.removed":"Projekt Member gelöscht", "project.role.added":"Rolle erstellt", "project.role.removed":"Rolle gelöscht", + "project.application.added":"App hinzugefügt", + "project.application.config.oidc.added":"OIDC config hinzugefügt", + "user.added":"User hinzugefügt", + "user.initialization.code.added":"Init code hinzugefügt", + "user.phone.code.added":"User phone code hinzugefügt", + "user.phone.code.sent":"User phone code gesendet", + "user.initialization.code.sent":"Init code gesendet", "user.email.verification.sended": "User email verifiziert", + "user.email.code.added":"Email code hinzugefügt", + "user.email.code.sent":"Email code gesendet", + "user.email.verified":"Email verifiziert", "user.phone.verificationsended":"User phone verifikation gesendet", "user.phone.code":"User phone code erstellt", "user.initialization.verification.sended":"User mail verifikation gesendet", @@ -496,9 +515,17 @@ "skipped.init.mfa.user":"User MFA init überspungen", "user.email.password.request.sended":"User Email Password Anfrage gesended", "user.password.set.requested":"Password Anfrage", - "user.phone.verification.sended":"User Nummer verifikation gesended", + "user.phone.verification.sended":"User Nummer verifikation gesendet", + "user.phone.changed":"User phone geändert", + "user.phone.verified":"User phone verifiziert", "updated.user.profile":"User Profil update", - "user.email.init.sended":"User Email init sended" + "user.email.init.sended":"User Email init sended", + "user.password.changed":"Password changed", + "user.initialization.check.succeeded":"Init check erfolgreich", + "user.password.check.succeeded":"Password check erfolgreich", + "user.mfa.init.skipped":"MFA init übersprungen", + "user.mfa.otp.added":"MFA OTP hinzugefügt", + "user.mfa.otp.verified":"MFA OTP verifiziert" } } } \ No newline at end of file diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index a50e3ca4e5..ed492b642c 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -176,7 +176,7 @@ "SIGNEDOUT":"You are signed out. Click the button below to sign in again!", "SIGNEDOUT_BTN":"Sign In", "EDITACCOUNT":"Edit Account", - "ADDACCOUNT":"Add new account" + "ADDACCOUNT":"Login with another account" }, "ORG": { "PAGES": { @@ -197,6 +197,10 @@ "1": "aktiv", "2": "inaktiv" }, + "MEMBER": { + "TITLE":"Organization Managers", + "DESCRIPTION":"Define Accounts which can change your organizations preferences." + }, "POLICY": { "TITLE":"Explore Policies", "DESCRIPTION":"Pre-packaged solutions that save you time and ensure security", @@ -275,7 +279,8 @@ "DETAIL": "Detail", "CREATE": "Create project", "CREATE_DESC": "Insert your projects name", - "ROLE": "Role" + "ROLE": "Role", + "NOITEMS": "No projects" }, "STATE": { "TITLE":"State", @@ -472,8 +477,12 @@ "EVENTS": { "org.added": "Org created", "org.changed":"Org edited", - "org.member.added":"Organization Member created", - "org.member.removed":"Organization Member deleted", + "org.member.added":"Org Member created", + "org.member.removed":"Org Member deleted", + "org.domain.added":"Org Domain added", + "org.domain.verified":"Org Domain verified", + "org.domain.primary.set":"Primary domain set", + "org.iam.policy.added":"IAM Policy added", "project.added": "Project created", "project.changed":"Project edited", "project.deactivated":"Project deactivated", @@ -481,7 +490,17 @@ "project.member.removed":"Project Member deleted", "project.role.added":"Role created", "project.role.removed":"Role deleted", + "project.application.added":"App added", + "project.application.config.oidc.added":"OIDC config added", + "user.added":"User added", + "user.initialization.code.added":"Init code added", + "user.phone.code.added":"Phone code added", + "user.phone.code.sent":"User phone code sent", + "user.initialization.code.sent":"Init code sent", "user.email.verification.sended": "User email verified", + "user.email.code.added":"Email code added", + "user.email.code.sent":"Email code sent", + "user.email.verified":"Email verified", "user.phone.verificationsended":"User phone verification sent", "user.phone.code":"User phone code created", "user.initialization.verification.sended":"User mail verification sent", @@ -497,8 +516,16 @@ "user.email.password.request.sended":"Email password request sended", "user.password.set.requested":"Password request", "user.phone.verification.sended":"User Phone verification sended", + "user.phone.changed":"User phone changed", + "user.phone.verified":"User phone verified", "updated.user.profile":"User Profile update", - "user.email.init.sended":"User Email init sended" + "user.email.init.sended":"User Email init sended", + "user.password.changed":"Password geändert", + "user.initialization.check.succeeded":"Init check succeeded", + "user.password.check.succeeded":"Password check succeeded", + "user.mfa.init.skipped":"MFA init skipped", + "user.mfa.otp.added":"MFA OTP added", + "user.mfa.otp.verified":"MFA OTP verified" } } } \ No newline at end of file diff --git a/console/src/styles/card.scss b/console/src/styles/card.scss index d6d698b665..1f5c80839e 100644 --- a/console/src/styles/card.scss +++ b/console/src/styles/card.scss @@ -14,6 +14,7 @@ border: 1px solid $border-color; box-sizing: border-box; border-radius: .5rem; + outline: none; .selection-icon { opacity: 0; diff --git a/console/src/styles/changes.scss b/console/src/styles/changes.scss index 5e2a092c38..18b14affc8 100644 --- a/console/src/styles/changes.scss +++ b/console/src/styles/changes.scss @@ -2,9 +2,9 @@ @mixin changes-theme($theme) { $primary: map-get($theme, primary); - $secondary-dark: mat-color($primary, A800); + $primary-dark: mat-color($primary, A900); .change-item-back { - background-color: $secondary-dark; + background-color: lighten($primary-dark, 5%); } } diff --git a/console/src/styles/sidenav-list.scss b/console/src/styles/sidenav-list.scss index d61b9fcdfc..3b4a270cec 100644 --- a/console/src/styles/sidenav-list.scss +++ b/console/src/styles/sidenav-list.scss @@ -3,7 +3,7 @@ @mixin sidenav-list-theme($theme) { $primary: map-get($theme, primary); $primary-color: mat-color($primary, 500); - $primary-dark: mat-color($primary, A800); + $primary-dark: mat-color($primary, A900); .mat-menu-item { &.show-all {