diff --git a/console/src/app/modules/user-grants/user-grants.component.ts b/console/src/app/modules/user-grants/user-grants.component.ts index a3e960fe7..f4557e95f 100644 --- a/console/src/app/modules/user-grants/user-grants.component.ts +++ b/console/src/app/modules/user-grants/user-grants.component.ts @@ -33,8 +33,6 @@ export class UserGrantsComponent implements OnInit, AfterViewInit { @Input() allowCreate: boolean = false; @Input() allowDelete: boolean = false; - @Input() public disabled: boolean = false; - @Input() userId: string = ''; @Input() projectId: string = ''; @@ -85,8 +83,6 @@ export class UserGrantsComponent implements OnInit, AfterViewInit { this.routerLink = ['/grant-create']; } - console.log(this.routerLink); - this.dataSource.loadGrants(this.context, 0, 25, { projectId: this.projectId, grantId: this.grantId, diff --git a/console/src/app/pages/iam/iam-members/iam-members.component.html b/console/src/app/pages/iam/iam-members/iam-members.component.html index 35a4c70fe..82a561457 100644 --- a/console/src/app/pages/iam/iam-members/iam-members.component.html +++ b/console/src/app/pages/iam/iam-members/iam-members.component.html @@ -65,7 +65,7 @@ {{ 'ROLESLABEL' | translate }} {{ role }} 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 df707d6de..7c6eb5342 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 @@ -3,7 +3,7 @@ - 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 5020f5c35..15b740b25 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 @@ -75,7 +75,7 @@ export class OrgMembersComponent implements AfterViewInit { ); } - public removeProjectMemberSelection(): void { + public removeOrgMemberSelection(): void { Promise.all(this.selection.selected.map(member => { return this.mgmtService.RemoveMyOrgMember(member.userId).then(() => { this.toast.showInfo('ORG.TOAST.MEMBERREMOVED', true); diff --git a/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.html b/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.html index 64996a536..98c9f6eac 100644 --- a/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.html +++ b/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.html @@ -18,8 +18,8 @@ description="{{'GRANTS.PROJECT.DESCRIPTION' | translate }}"> + [allowCreate]="['user.grant.write','user.grant.write:'+grantId] | hasRole | async" + [allowDelete]="['user.grant.delete','user.grant.delete:'+grantId] | hasRole | async"> @@ -35,10 +35,11 @@ - + (showDetailClicked)="showDetail()" (refreshClicked)="loadMembers()" + [disabled]="(['project.grant.member.write', 'project.grant.member.write:'+ project.projectId]| hasRole | async) == false"> diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html index b87d4ccc5..4537449b6 100644 --- a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html +++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html @@ -22,11 +22,11 @@ @@ -51,17 +51,15 @@ - +
- +
@@ -70,7 +68,8 @@ [appHasRole]="['project.grant.read:' + project.projectId, 'project.grant.read']"> - @@ -79,7 +78,8 @@ - @@ -89,9 +89,8 @@ + [allowCreate]="(['user.grant.write', 'user.grant.write:'+projectId] | hasRole) | async" + [allowDelete]="(['user.grant.delete','user.grant.delete:'+projectId] | hasRole) | async"> @@ -109,10 +108,11 @@ - + (showDetailClicked)="showDetail()" (refreshClicked)="loadMembers()" + [disabled]="(['project.member.write', 'project.member.write:'+ project.projectId]| hasRole | async) == false"> diff --git a/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-grid/owned-project-grid.component.html b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-grid/owned-project-grid.component.html index a7a73b2b2..2d7740d19 100644 --- a/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-grid/owned-project-grid.component.html +++ b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-grid/owned-project-grid.component.html @@ -61,7 +61,7 @@

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

- +
add {{'PROJECT.PAGES.ADDNEW' | translate}} diff --git a/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.html b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.html index a630dd892..ab20d2043 100644 --- a/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.html +++ b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.html @@ -11,7 +11,7 @@ - + add{{ 'ACTIONS.NEW' | translate }} @@ -70,4 +70,4 @@ [pageSizeOptions]="[5, 10, 20]" (page)="changePage($event)">
- \ No newline at end of file + diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html index 96025aefd..8a61f1ed0 100644 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html @@ -40,7 +40,7 @@

{{ 'PROJECT.GRANT.DETAIL.MEMBERTITLE' | translate }}

{{ 'PROJECT.GRANT.DETAIL.MEMBERDESC' | translate }}

- + \ No newline at end of file diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts index acf817294..16c159df6 100644 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts @@ -38,10 +38,6 @@ export class ProjectGrantDetailComponent { this.projectid = params.projectid; this.grantid = params.grantid; - this.mgmtService.GetIam().then(iam => { - this.isZitadel = iam.toObject().iamProjectId === this.projectid; - }); - this.getRoleOptions(params.projectid); this.mgmtService.ProjectGrantByID(this.grantid, this.projectid).then((grant) => { diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts index 51f1b5919..41477fff3 100644 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts @@ -15,6 +15,7 @@ import { MatTooltipModule } from '@angular/material/tooltip'; import { TranslateModule } from '@ngx-translate/core'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { DetailLayoutModule } from 'src/app/modules/detail-layout/detail-layout.module'; +import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe.module'; import { ProjectGrantDetailRoutingModule } from './project-grant-detail-routing.module'; import { ProjectGrantDetailComponent } from './project-grant-detail.component'; @@ -43,6 +44,7 @@ import { ProjectGrantMembersModule } from './project-grant-members/project-grant TranslateModule, MatSelectModule, DetailLayoutModule, + HasRolePipeModule, ], }) export class ProjectGrantDetailModule { } diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html index 49fb12e15..3a62f519f 100644 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html @@ -1,11 +1,14 @@ - - + add{{ 'ACTIONS.NEW' | translate }} @@ -59,7 +62,8 @@ {{ 'PROJECT.MEMBER.ROLES' | translate }} - {{ role }} diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts index 78b9ecf49..87628db08 100644 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts @@ -26,7 +26,6 @@ export class ProjectGrantMembersComponent implements AfterViewInit, OnInit { @Input() public type: ProjectType = ProjectType.PROJECTTYPE_GRANTED; - @Input() public disabled: boolean = false; @ViewChild(MatPaginator) public paginator!: MatPaginator; @ViewChild(MatTable) public table!: MatTable; public dataSource!: ProjectGrantMembersDataSource; diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.module.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.module.ts index 4948ed6c7..22e186130 100644 --- a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.module.ts +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.module.ts @@ -18,6 +18,7 @@ import { TranslateModule } from '@ngx-translate/core'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { RefreshTableModule } from 'src/app/modules/refresh-table/refresh-table.module'; import { SearchUserAutocompleteModule } from 'src/app/modules/search-user-autocomplete/search-user-autocomplete.module'; +import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe.module'; import { ProjectGrantMembersCreateDialogModule, @@ -48,6 +49,7 @@ import { ProjectGrantMembersComponent } from './project-grant-members.component' FormsModule, TranslateModule, RefreshTableModule, + HasRolePipeModule, ], exports: [ ProjectGrantMembersComponent, diff --git a/console/src/app/pages/projects/project-grant-create/project-grant-create.component.ts b/console/src/app/pages/projects/project-grant-create/project-grant-create.component.ts index 511e3ef92..e15b6636b 100644 --- a/console/src/app/pages/projects/project-grant-create/project-grant-create.component.ts +++ b/console/src/app/pages/projects/project-grant-create/project-grant-create.component.ts @@ -59,6 +59,8 @@ export class ProjectGrantCreateComponent implements OnInit, OnDestroy { } public addGrant(): void { + + console.log(this.org.id, this.projectId, this.rolesKeyList); this.mgmtService .CreateProjectGrant(this.org.id, this.projectId, this.rolesKeyList) .then((data) => { diff --git a/console/src/app/pages/users/user-detail/detail-form/detail-form.component.html b/console/src/app/pages/users/user-detail/detail-form/detail-form.component.html index a3c3b4a28..22f06e4a0 100644 --- a/console/src/app/pages/users/user-detail/detail-form/detail-form.component.html +++ b/console/src/app/pages/users/user-detail/detail-form/detail-form.component.html @@ -34,7 +34,7 @@
-
\ No newline at end of file diff --git a/console/src/app/pages/users/user-detail/detail-form/detail-form.component.ts b/console/src/app/pages/users/user-detail/detail-form/detail-form.component.ts index fa22ec80f..2c9c42edc 100644 --- a/console/src/app/pages/users/user-detail/detail-form/detail-form.component.ts +++ b/console/src/app/pages/users/user-detail/detail-form/detail-form.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnChanges, OnDestroy, Output } from '@angular/core'; import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Subscription } from 'rxjs'; import { Gender as authGender, UserProfile as authUP, UserView as authUV } from 'src/app/proto/generated/auth_pb'; @@ -10,7 +10,7 @@ import { Gender as mgmtGender, UserProfile as mgmtUP, UserView as mgmtUV } from templateUrl: './detail-form.component.html', styleUrls: ['./detail-form.component.scss'], }) -export class DetailFormComponent implements OnInit, OnDestroy { +export class DetailFormComponent implements OnDestroy, OnChanges { @Input() public username!: string; @Input() public user!: mgmtUV | authUV; @Input() public disabled: boolean = false; @@ -36,7 +36,19 @@ export class DetailFormComponent implements OnInit, OnDestroy { }); } - public ngOnInit(): void { + public ngOnChanges(): void { + console.log('disabled'); + this.profileForm = this.fb.group({ + userName: [{ value: '', disabled: true }, [ + Validators.required, + ]], + firstName: [{ value: '', disabled: this.disabled }, Validators.required], + lastName: [{ value: '', disabled: this.disabled }, Validators.required], + nickName: [{ value: '', disabled: this.disabled }], + gender: [{ value: 0 }, { disabled: this.disabled }], + preferredLanguage: [{ value: '', disabled: this.disabled }], + }); + this.profileForm.patchValue({ userName: this.username, ...this.user }); if (this.preferredLanguage) { diff --git a/console/src/app/pages/users/user-detail/memberships/memberships.component.html b/console/src/app/pages/users/user-detail/memberships/memberships.component.html index 1ec4ef291..04deae192 100644 --- a/console/src/app/pages/users/user-detail/memberships/memberships.component.html +++ b/console/src/app/pages/users/user-detail/memberships/memberships.component.html @@ -28,7 +28,8 @@ {{memberships.totalResult}} - diff --git a/console/src/app/pages/users/user-detail/memberships/memberships.component.ts b/console/src/app/pages/users/user-detail/memberships/memberships.component.ts index 23e2ed1a8..3e92ae31b 100644 --- a/console/src/app/pages/users/user-detail/memberships/memberships.component.ts +++ b/console/src/app/pages/users/user-detail/memberships/memberships.component.ts @@ -3,7 +3,7 @@ import { Component, Input, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { Router } from '@angular/router'; import { CreationType, MemberCreateDialogComponent } from 'src/app/modules/add-member-dialog/member-create-dialog.component'; -import { MemberType, UserView, UserMembershipSearchResponse } from 'src/app/proto/generated/management_pb'; +import { MemberType, UserMembershipSearchResponse, UserView } from 'src/app/proto/generated/management_pb'; import { AdminService } from 'src/app/services/admin.service'; import { ManagementService } from 'src/app/services/mgmt.service'; import { ToastService } from 'src/app/services/toast.service'; @@ -34,6 +34,8 @@ export class MembershipsComponent implements OnInit { public memberships!: UserMembershipSearchResponse.AsObject; @Input() public user!: UserView.AsObject; + @Input() public disabled: boolean = false; + public MemberType: any = MemberType; constructor( @@ -46,6 +48,7 @@ export class MembershipsComponent implements OnInit { ngOnInit(): void { this.loadManager(this.user.id); + console.log(this.disabled); } public async loadManager(userId: string): Promise { @@ -56,7 +59,9 @@ export class MembershipsComponent implements OnInit { } public navigateToObject(): void { - this.router.navigate(['/users', this.user.id, 'memberships']); + if (!this.disabled) { + this.router.navigate(['/users', this.user.id, 'memberships']); + } } public addMember(): void { diff --git a/console/src/app/pages/users/user-detail/user-detail/user-detail.component.html b/console/src/app/pages/users/user-detail/user-detail/user-detail.component.html index 05b0fb529..19555c461 100644 --- a/console/src/app/pages/users/user-detail/user-detail/user-detail.component.html +++ b/console/src/app/pages/users/user-detail/user-detail/user-detail.component.html @@ -1,5 +1,5 @@ - -
+ +
arrow_back @@ -38,9 +38,8 @@ - + @@ -51,7 +50,7 @@ - @@ -62,13 +61,12 @@
-
@@ -140,16 +143,19 @@ {{ 'USER.PHONE' | translate }} - + - - - @@ -176,7 +182,7 @@
- + diff --git a/console/src/app/pages/users/user-detail/user-detail/user-detail.component.scss b/console/src/app/pages/users/user-detail/user-detail/user-detail.component.scss index 6b51a37a6..0606ca3fa 100644 --- a/console/src/app/pages/users/user-detail/user-detail/user-detail.component.scss +++ b/console/src/app/pages/users/user-detail/user-detail/user-detail.component.scss @@ -44,7 +44,7 @@ .label, .name { - margin-right: 1rem; + padding-right: 1rem; } .actions { @@ -87,6 +87,16 @@ text-decoration: underline; } } + + @media only screen and (max-width: 700px) { + flex-direction: column; + align-items: center; + + .label, + .name { + padding-right: 0; + } + } } } diff --git a/console/src/app/pages/users/user-detail/user-detail/user-detail.component.ts b/console/src/app/pages/users/user-detail/user-detail/user-detail.component.ts index fa1f45093..11c57875d 100644 --- a/console/src/app/pages/users/user-detail/user-detail/user-detail.component.ts +++ b/console/src/app/pages/users/user-detail/user-detail/user-detail.component.ts @@ -155,7 +155,7 @@ export class UserDetailComponent implements OnInit, OnDestroy { public saveEmail(): void { this.emailEditState = false; - if (this.user && this.user.human?.phone) { + if (this.user && this.user.human?.email) { this.mgmtUserService .SaveUserEmail(this.user.id, this.user.human.email).then((data: UserEmail) => { this.toast.showInfo('USER.TOAST.EMAILSENT', true); diff --git a/console/src/app/pages/users/user-list/user-list.component.html b/console/src/app/pages/users/user-list/user-list.component.html index 2195f2c0a..af36116d5 100644 --- a/console/src/app/pages/users/user-list/user-list.component.html +++ b/console/src/app/pages/users/user-list/user-list.component.html @@ -3,7 +3,8 @@

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

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

- + + @@ -11,7 +12,8 @@

{{ 'USER.PAGES.DESCRIPTIONMACHINE' | translate }}

+ [displayedColumns]="['select','name', 'username', 'description','state']" + [disabled]="(['user.write'] | hasRole | async) == false">
\ No newline at end of file diff --git a/console/src/app/pages/users/user-list/user-list.module.ts b/console/src/app/pages/users/user-list/user-list.module.ts index 892d85171..4e666e188 100644 --- a/console/src/app/pages/users/user-list/user-list.module.ts +++ b/console/src/app/pages/users/user-list/user-list.module.ts @@ -15,6 +15,7 @@ import { AvatarModule } from 'src/app/modules/avatar/avatar.module'; import { CardModule } from 'src/app/modules/card/card.module'; import { RefreshTableModule } from 'src/app/modules/refresh-table/refresh-table.module'; import { SharedModule } from 'src/app/modules/shared/shared.module'; +import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe.module'; import { UserListRoutingModule } from './user-list-routing.module'; import { UserListComponent } from './user-list.component'; @@ -41,6 +42,7 @@ import { UserTableComponent } from './user-table/user-table.component'; MatProgressSpinnerModule, MatCheckboxModule, MatTooltipModule, + HasRolePipeModule, TranslateModule, SharedModule, RefreshTableModule, diff --git a/console/src/app/pages/users/user-list/user-table/user-table.component.html b/console/src/app/pages/users/user-list/user-table/user-table.component.html index 6c4523fc2..5af6f9be8 100644 --- a/console/src/app/pages/users/user-list/user-table/user-table.component.html +++ b/console/src/app/pages/users/user-list/user-table/user-table.component.html @@ -2,15 +2,15 @@ [timestamp]="userResult?.viewTimestamp" [selection]="selection"> + color="primary" mat-raised-button [disabled]="disabled"> add{{ 'ACTIONS.NEW' | translate }} diff --git a/console/src/app/pages/users/user-list/user-table/user-table.component.ts b/console/src/app/pages/users/user-list/user-table/user-table.component.ts index b1c281a24..87fbeea14 100644 --- a/console/src/app/pages/users/user-list/user-table/user-table.component.ts +++ b/console/src/app/pages/users/user-list/user-table/user-table.component.ts @@ -5,7 +5,7 @@ import { MatTableDataSource } from '@angular/material/table'; import { TranslateService } from '@ngx-translate/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { UserView } from 'src/app/proto/generated/auth_pb'; -import { UserSearchKey, UserSearchQuery, UserSearchResponse } from 'src/app/proto/generated/management_pb'; +import { SearchMethod, UserSearchKey, UserSearchQuery, UserSearchResponse } from 'src/app/proto/generated/management_pb'; import { ManagementService } from 'src/app/services/mgmt.service'; import { ToastService } from 'src/app/services/toast.service'; @@ -19,6 +19,7 @@ import { UserType } from '../user-list.component'; export class UserTableComponent implements OnInit { public UserType: any = UserType; @Input() userType: UserType = UserType.HUMAN; + @Input() disabled: boolean = false; @ViewChild(MatPaginator) public paginator!: MatPaginator; public dataSource: MatTableDataSource = new MatTableDataSource(); public selection: SelectionModel = new SelectionModel(true, []); @@ -79,9 +80,11 @@ export class UserTableComponent implements OnInit { this.loadingSubject.next(true); const query = new UserSearchQuery(); query.setKey(UserSearchKey.USERSEARCHKEY_TYPE); + query.setMethod(SearchMethod.SEARCHMETHOD_EQUALS); query.setValue(filterTypeValue); + console.log(filterTypeValue); - this.userService.SearchUsers(limit, offset).then(resp => { + this.userService.SearchUsers(limit, offset, [query]).then(resp => { this.userResult = resp.toObject(); this.dataSource.data = this.userResult.resultList; console.log(this.userResult.resultList); diff --git a/console/src/app/services/grpc.service.ts b/console/src/app/services/grpc.service.ts index 0a44c0ad7..73a4c5e52 100644 --- a/console/src/app/services/grpc.service.ts +++ b/console/src/app/services/grpc.service.ts @@ -50,7 +50,8 @@ export class GrpcService { interceptors, ); this.admin = new AdminServicePromiseClient( - data.adminServiceUrl, + // TODO: replace with service url + data.mgmtServiceUrl, null, // @ts-ignore interceptors, diff --git a/console/src/app/services/mgmt.service.ts b/console/src/app/services/mgmt.service.ts index 293284c3e..4be0540b6 100644 --- a/console/src/app/services/mgmt.service.ts +++ b/console/src/app/services/mgmt.service.ts @@ -324,8 +324,8 @@ export class ManagementService { } public async CreateProjectGrant( - projectId: string, orgId: string, + projectId: string, roleKeysList: string[], ): Promise { const req = new ProjectGrantCreate();