+
{{ title }}
+
{{ description }}
+
-
+
+
+ 0 && setting.groupI18nKey !== settingsList[i - 1].groupI18nKey) ||
+ (i === 0 && setting.groupI18nKey)
+ "
+ >{{ setting.groupI18nKey | translate }}
+
diff --git a/console/src/app/modules/sidenav/sidenav.component.scss b/console/src/app/modules/sidenav/sidenav.component.scss
index 637144344f..6503d9baaf 100644
--- a/console/src/app/modules/sidenav/sidenav.component.scss
+++ b/console/src/app/modules/sidenav/sidenav.component.scss
@@ -2,10 +2,10 @@
@mixin sidenav-theme($theme) {
$foreground: map-get($theme, foreground);
+ $background: map-get($theme, background);
$is-dark-theme: map-get($theme, is-dark);
.sidenav-container {
- padding-top: 1rem;
display: grid;
position: relative;
grid-template-columns: 1fr;
@@ -13,12 +13,54 @@
.sidenav-settings-list {
position: relative;
+ &.indented {
+ margin-right: 2rem;
+
+ .sidenav-sticky-rel {
+ margin-left: -2rem;
+ padding-left: 2rem;
+ background: map-get($background, footer);
+ }
+ }
+
.sidenav-sticky-rel {
display: flex;
flex-direction: column;
position: sticky;
- top: 50px;
- padding: 1rem 2rem 1rem 0;
+ top: 36px;
+ padding: 20px 2rem 20px 0;
+
+ .sidenav-setting-group {
+ font-size: 11px;
+ letter-spacing: 0.05em;
+ text-transform: uppercase;
+ color: if($is-dark-theme, #ffffff60, #00000060);
+ margin-top: 1rem;
+ font-weight: 600;
+ margin-bottom: 0.5rem;
+ padding-top: 1rem;
+ border-top: 1px solid if($is-dark-theme, rgba(#8795a1, 0.2), rgba(#8795a1, 0.2));
+
+ &:nth-child(2) {
+ border-top: none;
+ padding-top: 0;
+ margin-top: 0;
+ }
+
+ &.hide-on-mobile {
+ @media only screen and (max-width: 500px) {
+ display: none;
+ }
+ }
+
+ &.show {
+ display: none;
+
+ @media only screen and (max-width: 500px) {
+ display: flex;
+ }
+ }
+ }
.sidenav-setting-list-element {
border: none;
diff --git a/console/src/app/modules/sidenav/sidenav.component.ts b/console/src/app/modules/sidenav/sidenav.component.ts
index dfd87ec90d..ac3e38c493 100644
--- a/console/src/app/modules/sidenav/sidenav.component.ts
+++ b/console/src/app/modules/sidenav/sidenav.component.ts
@@ -1,30 +1,63 @@
-import { Component, forwardRef, Input } from '@angular/core';
-import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { Component, Input, OnInit } from '@angular/core';
+import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ActivatedRoute, Router } from '@angular/router';
+
+import { PolicyComponentServiceType } from '../policies/policy-component-types.enum';
export interface SidenavSetting {
id: string;
i18nKey: string;
+ groupI18nKey?: string;
+ requiredRoles?: { [serviceType in PolicyComponentServiceType]: string[] };
}
@Component({
selector: 'cnsl-sidenav',
templateUrl: './sidenav.component.html',
styleUrls: ['./sidenav.component.scss'],
- providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SidenavComponent), multi: true }],
+ providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SidenavComponent, multi: true }],
})
-export class SidenavComponent {
- @Input() public currentSetting: string | undefined = 'general';
+export class SidenavComponent implements ControlValueAccessor, OnInit {
+ @Input() public title: string = '';
+ @Input() public description: string = '';
+ @Input() public indented: boolean = false;
+ @Input() public currentSetting?: string | undefined = undefined;
@Input() public settingsList: SidenavSetting[] = [];
+ @Input() public queryParam: string = '';
- constructor() {}
+ constructor(private router: Router, private route: ActivatedRoute) {}
- private onChange: any = () => {};
- private onTouch: any = () => {};
+ ngOnInit(): void {
+ if (!this.value) {
+ this.value = this.settingsList[0].id;
+ }
+ }
+
+ private onChange = (current: string | undefined) => {};
+ private onTouch = (current: string | undefined) => {};
+
+ @Input() get value(): string | undefined {
+ return this.currentSetting;
+ }
set value(setting: string | undefined) {
this.currentSetting = setting;
- this.onChange(setting);
- this.onTouch(setting);
+
+ if (setting || setting === undefined) {
+ this.onChange(setting);
+ this.onTouch(setting);
+ }
+
+ if (this.queryParam && setting) {
+ this.router.navigate([], {
+ relativeTo: this.route,
+ queryParams: {
+ [this.queryParam]: setting,
+ },
+ queryParamsHandling: 'merge',
+ skipLocationChange: false,
+ });
+ }
}
public writeValue(value: any) {
diff --git a/console/src/app/modules/sidenav/sidenav.module.ts b/console/src/app/modules/sidenav/sidenav.module.ts
index dee407abd5..6e4e6a4644 100644
--- a/console/src/app/modules/sidenav/sidenav.module.ts
+++ b/console/src/app/modules/sidenav/sidenav.module.ts
@@ -1,13 +1,15 @@
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
+import { FormsModule } from '@angular/forms';
import { MatIconModule } from '@angular/material/icon';
+import { RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { SidenavComponent } from './sidenav.component';
@NgModule({
declarations: [SidenavComponent],
- imports: [CommonModule, MatIconModule, TranslateModule],
+ imports: [CommonModule, FormsModule, RouterModule, MatIconModule, TranslateModule],
exports: [SidenavComponent],
})
export class SidenavModule {}
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 5425899264..ef35d8bdbd 100644
--- a/console/src/app/modules/user-grants/user-grants.component.ts
+++ b/console/src/app/modules/user-grants/user-grants.component.ts
@@ -84,7 +84,7 @@ export class UserGrantsComponent implements OnInit, AfterViewInit {
'actions',
];
- public ngOnInit(): void {
+ ngOnInit(): void {
this.dataSource = new UserGrantsDataSource(this.userService);
switch (this.context) {
diff --git a/console/src/app/pages/actions/actions.component.ts b/console/src/app/pages/actions/actions.component.ts
index c4c95643ce..a843486d72 100644
--- a/console/src/app/pages/actions/actions.component.ts
+++ b/console/src/app/pages/actions/actions.component.ts
@@ -39,16 +39,11 @@ export class ActionsComponent {
private dialog: MatDialog,
private toast: ToastService,
) {
- const iambread = new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- });
const bread: Breadcrumb = {
type: BreadcrumbType.ORG,
routerLink: ['/org'],
};
- breadcrumbService.setBreadcrumb([iambread, bread]);
+ breadcrumbService.setBreadcrumb([bread]);
this.loadFlow();
}
diff --git a/console/src/app/pages/domains/domains.component.ts b/console/src/app/pages/domains/domains.component.ts
index 42565799b8..2084faf516 100644
--- a/console/src/app/pages/domains/domains.component.ts
+++ b/console/src/app/pages/domains/domains.component.ts
@@ -26,16 +26,11 @@ export class DomainsComponent implements OnInit {
private dialog: MatDialog,
breadcrumbService: BreadcrumbService,
) {
- const iambread = new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- });
const bread: Breadcrumb = {
type: BreadcrumbType.ORG,
routerLink: ['/org'],
};
- breadcrumbService.setBreadcrumb([iambread, bread]);
+ breadcrumbService.setBreadcrumb([bread]);
}
ngOnInit(): void {
diff --git a/console/src/app/pages/failed-events/failed-events.component.ts b/console/src/app/pages/failed-events/failed-events.component.ts
index d22698fb6c..62404bc016 100644
--- a/console/src/app/pages/failed-events/failed-events.component.ts
+++ b/console/src/app/pages/failed-events/failed-events.component.ts
@@ -37,9 +37,9 @@ export class FailedEventsComponent implements AfterViewInit {
const breadcrumbs = [
new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'System',
- routerLink: ['/system'],
+ type: BreadcrumbType.INSTANCE,
+ name: 'Instance',
+ routerLink: ['/instance'],
}),
];
this.breadcrumbService.setBreadcrumb(breadcrumbs);
diff --git a/console/src/app/pages/grants/grants.component.ts b/console/src/app/pages/grants/grants.component.ts
index a67086013f..37aec6d5a5 100644
--- a/console/src/app/pages/grants/grants.component.ts
+++ b/console/src/app/pages/grants/grants.component.ts
@@ -41,11 +41,6 @@ export class GrantsComponent implements OnDestroy {
this.isZitadel = iam.iamProjectId === this.projectId;
const breadcrumbs = [
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
@@ -62,16 +57,11 @@ export class GrantsComponent implements OnDestroy {
});
}
} else if (context === UserGrantContext.NONE) {
- const iambread = new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- });
const bread: Breadcrumb = {
type: BreadcrumbType.ORG,
routerLink: ['/org'],
};
- breadcrumbService.setBreadcrumb([iambread, bread]);
+ breadcrumbService.setBreadcrumb([bread]);
}
});
}
diff --git a/console/src/app/pages/home/home.component.ts b/console/src/app/pages/home/home.component.ts
index 186f38210f..d0cd4cf8a7 100644
--- a/console/src/app/pages/home/home.component.ts
+++ b/console/src/app/pages/home/home.component.ts
@@ -11,16 +11,13 @@ export class HomeComponent {
public dark: boolean = true;
constructor(public authService: GrpcAuthService, breadcrumbService: BreadcrumbService) {
- const iambread = new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- });
const bread: Breadcrumb = {
type: BreadcrumbType.ORG,
routerLink: ['/org'],
};
- breadcrumbService.setBreadcrumb([iambread, bread]);
+
+ breadcrumbService.setBreadcrumb([bread]);
+
const theme = localStorage.getItem('theme');
this.dark = theme === 'dark-theme' ? true : theme === 'light-theme' ? false : true;
}
diff --git a/console/src/app/pages/iam-views/iam-views.component.ts b/console/src/app/pages/iam-views/iam-views.component.ts
index e6d3d1caf1..d9fe7910b4 100644
--- a/console/src/app/pages/iam-views/iam-views.component.ts
+++ b/console/src/app/pages/iam-views/iam-views.component.ts
@@ -28,9 +28,9 @@ export class IamViewsComponent implements AfterViewInit {
const breadcrumbs = [
new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'System',
- routerLink: ['/system'],
+ type: BreadcrumbType.INSTANCE,
+ name: 'Instance',
+ routerLink: ['/instance'],
}),
];
this.breadcrumbService.setBreadcrumb(breadcrumbs);
diff --git a/console/src/app/pages/iam/iam-members/iam-members-routing.module.ts b/console/src/app/pages/iam/iam-members/iam-members-routing.module.ts
deleted file mode 100644
index 897398f845..0000000000
--- a/console/src/app/pages/iam/iam-members/iam-members-routing.module.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-
-import { IamMembersComponent } from './iam-members.component';
-
-const routes: Routes = [
- {
- path: '',
- component: IamMembersComponent,
- data: { animation: 'AddPage' },
- },
-];
-
-@NgModule({
- imports: [RouterModule.forChild(routes)],
- exports: [RouterModule],
-})
-export class IamMembersRoutingModule { }
diff --git a/console/src/app/pages/iam/iam-routing.module.ts b/console/src/app/pages/iam/iam-routing.module.ts
deleted file mode 100644
index c0bd6aa56e..0000000000
--- a/console/src/app/pages/iam/iam-routing.module.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import { AuthGuard } from 'src/app/guards/auth.guard';
-import { RoleGuard } from 'src/app/guards/role.guard';
-import { PolicyComponentServiceType, PolicyComponentType } from 'src/app/modules/policies/policy-component-types.enum';
-
-import { IamComponent } from './iam.component';
-
-const routes: Routes = [
- {
- path: '',
- component: IamComponent,
- canActivate: [AuthGuard, RoleGuard],
- data: {
- roles: ['iam.read'],
- },
- },
- {
- path: 'members',
- loadChildren: () => import('./iam-members/iam-members.module').then((m) => m.IamMembersModule),
- canActivate: [AuthGuard, RoleGuard],
- data: {
- roles: ['iam.member.read'],
- },
- },
- {
- path: 'idp',
- children: [
- {
- path: 'create',
- loadChildren: () => import('src/app/modules/idp-create/idp-create.module').then((m) => m.IdpCreateModule),
- canActivate: [AuthGuard, RoleGuard],
- data: {
- roles: ['iam.idp.write'],
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- },
- {
- path: ':id',
- loadChildren: () => import('src/app/modules/idp/idp.module').then((m) => m.IdpModule),
- canActivate: [AuthGuard, RoleGuard],
- data: {
- roles: ['iam.idp.read'],
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- },
- ],
- },
- {
- path: 'policy',
- children: [
- {
- path: PolicyComponentType.AGE,
- data: {
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- loadChildren: () =>
- import('src/app/modules/policies/password-age-policy/password-age-policy.module').then(
- (m) => m.PasswordAgePolicyModule,
- ),
- },
- {
- path: PolicyComponentType.LOCKOUT,
- data: {
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- loadChildren: () =>
- import('src/app/modules/policies/password-lockout-policy/password-lockout-policy.module').then(
- (m) => m.PasswordLockoutPolicyModule,
- ),
- },
- {
- path: PolicyComponentType.PRIVATELABEL,
- data: {
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- loadChildren: () =>
- import('src/app/modules/policies/private-labeling-policy/private-labeling-policy.module').then(
- (m) => m.PrivateLabelingPolicyModule,
- ),
- },
- {
- path: PolicyComponentType.COMPLEXITY,
- data: {
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- loadChildren: () =>
- import('src/app/modules/policies/password-complexity-policy/password-complexity-policy.module').then(
- (m) => m.PasswordComplexityPolicyModule,
- ),
- },
- {
- path: PolicyComponentType.IAM,
- data: {
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- loadChildren: () =>
- import('src/app/modules/policies/org-iam-policy/org-iam-policy.module').then((m) => m.OrgIamPolicyModule),
- },
- {
- path: PolicyComponentType.LOGIN,
- data: {
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- loadChildren: () =>
- import('src/app/modules/policies/login-policy/login-policy.module').then((m) => m.LoginPolicyModule),
- },
- {
- path: PolicyComponentType.MESSAGETEXTS,
- data: {
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- loadChildren: () =>
- import('src/app/modules/policies/message-texts/message-texts.module').then((m) => m.MessageTextsPolicyModule),
- },
- {
- path: PolicyComponentType.LOGINTEXTS,
- data: {
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- loadChildren: () =>
- import('src/app/modules/policies/login-texts/login-texts.module').then((m) => m.LoginTextsPolicyModule),
- },
- {
- path: PolicyComponentType.PRIVACYPOLICY,
- data: {
- serviceType: PolicyComponentServiceType.ADMIN,
- },
- loadChildren: () =>
- import('src/app/modules/policies/privacy-policy/privacy-policy.module').then((m) => m.PrivacyPolicyModule),
- },
- ],
- },
-];
-
-@NgModule({
- imports: [RouterModule.forChild(routes)],
- exports: [RouterModule],
-})
-export class IamRoutingModule {}
diff --git a/console/src/app/pages/iam/iam.component.spec.ts b/console/src/app/pages/iam/iam.component.spec.ts
deleted file mode 100644
index cb7c8aae19..0000000000
--- a/console/src/app/pages/iam/iam.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
-
-import { IamComponent } from './iam.component';
-
-describe('IamComponent', () => {
- let component: IamComponent;
- let fixture: ComponentFixture
;
-
- beforeEach(waitForAsync(() => {
- TestBed.configureTestingModule({
- declarations: [IamComponent],
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(IamComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/console/src/app/pages/projects/owned-projects/project-roles/project-roles-routing.module.ts b/console/src/app/pages/instance-settings/instance-settings-routing.module.ts
similarity index 56%
rename from console/src/app/pages/projects/owned-projects/project-roles/project-roles-routing.module.ts
rename to console/src/app/pages/instance-settings/instance-settings-routing.module.ts
index fdadc1bf5c..dd7fbd5926 100644
--- a/console/src/app/pages/projects/owned-projects/project-roles/project-roles-routing.module.ts
+++ b/console/src/app/pages/instance-settings/instance-settings-routing.module.ts
@@ -1,13 +1,12 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
-import { ProjectRolesComponent } from './project-roles.component';
+import { InstanceSettingsComponent } from './instance-settings.component';
const routes: Routes = [
{
path: '',
- component: ProjectRolesComponent,
- data: { animation: 'HomePage' },
+ component: InstanceSettingsComponent,
},
];
@@ -15,4 +14,4 @@ const routes: Routes = [
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
-export class ProjectRolesRoutingModule {}
+export class InstanceSettingsRoutingModule {}
diff --git a/console/src/app/pages/instance-settings/instance-settings.component.html b/console/src/app/pages/instance-settings/instance-settings.component.html
new file mode 100644
index 0000000000..5256753af6
--- /dev/null
+++ b/console/src/app/pages/instance-settings/instance-settings.component.html
@@ -0,0 +1,16 @@
+
+
+
+
+
{{ 'SETTINGS.INSTANCE.TITLE' | translate }}
+
+
{{ 'SETTINGS.INSTANCE.DESCRIPTION' | translate }}
+
+
+
+
+
diff --git a/console/src/app/pages/instance-settings/instance-settings.component.scss b/console/src/app/pages/instance-settings/instance-settings.component.scss
new file mode 100644
index 0000000000..ba889aa838
--- /dev/null
+++ b/console/src/app/pages/instance-settings/instance-settings.component.scss
@@ -0,0 +1,34 @@
+.settings-top-view {
+ display: flex;
+ align-items: center;
+ padding-top: 2rem;
+
+ .settings-title-row {
+ display: flex;
+ align-items: center;
+
+ h1 {
+ margin: 0;
+ }
+
+ a i {
+ font-size: 1.2rem;
+ height: 1.2rem;
+ line-height: 1.2rem;
+ }
+ }
+
+ .fill-space {
+ flex: 1;
+ }
+
+ .actions {
+ display: flex;
+ align-items: center;
+ }
+}
+
+.desc {
+ margin-bottom: 2rem;
+ font-size: 14px;
+}
diff --git a/console/src/app/pages/instance-settings/instance-settings.component.spec.ts b/console/src/app/pages/instance-settings/instance-settings.component.spec.ts
new file mode 100644
index 0000000000..d0fcd2aa9d
--- /dev/null
+++ b/console/src/app/pages/instance-settings/instance-settings.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { InstanceSettingsComponent } from './instance-settings.component';
+
+describe('InstanceSettingsComponent', () => {
+ let component: InstanceSettingsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ InstanceSettingsComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(InstanceSettingsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/console/src/app/pages/instance-settings/instance-settings.component.ts b/console/src/app/pages/instance-settings/instance-settings.component.ts
new file mode 100644
index 0000000000..01fab1cd09
--- /dev/null
+++ b/console/src/app/pages/instance-settings/instance-settings.component.ts
@@ -0,0 +1,60 @@
+import { Component } from '@angular/core';
+import { ActivatedRoute, Params } from '@angular/router';
+import { take } from 'rxjs';
+import { PolicyComponentServiceType } from 'src/app/modules/policies/policy-component-types.enum';
+import { SidenavSetting } from 'src/app/modules/sidenav/sidenav.component';
+import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
+
+import {
+ BRANDING,
+ COMPLEXITY,
+ GENERAL,
+ IDP,
+ LOCKOUT,
+ LOGIN,
+ LOGINTEXTS,
+ MESSAGETEXTS,
+ NOTIFICATIONPROVIDERS,
+ NOTIFICATIONS,
+ PRIVACYPOLICY,
+} from '../../modules/settings-list/settings';
+
+@Component({
+ selector: 'cnsl-instance-settings',
+ templateUrl: './instance-settings.component.html',
+ styleUrls: ['./instance-settings.component.scss'],
+})
+export class InstanceSettingsComponent {
+ public id: string = '';
+ public PolicyComponentServiceType: any = PolicyComponentServiceType;
+ public settingsList: SidenavSetting[] = [
+ GENERAL,
+ LOGIN,
+ COMPLEXITY,
+ LOCKOUT,
+ IDP,
+ NOTIFICATIONS,
+ NOTIFICATIONPROVIDERS,
+ BRANDING,
+ MESSAGETEXTS,
+ LOGINTEXTS,
+ PRIVACYPOLICY,
+ ];
+ constructor(breadcrumbService: BreadcrumbService, activatedRoute: ActivatedRoute) {
+ const breadcrumbs = [
+ new Breadcrumb({
+ type: BreadcrumbType.INSTANCE,
+ name: 'Instance',
+ routerLink: ['/instance'],
+ }),
+ ];
+ breadcrumbService.setBreadcrumb(breadcrumbs);
+
+ activatedRoute.queryParams.pipe(take(1)).subscribe((params: Params) => {
+ const { id } = params;
+ if (id) {
+ this.id = id;
+ }
+ });
+ }
+}
diff --git a/console/src/app/pages/instance-settings/instance-settings.module.ts b/console/src/app/pages/instance-settings/instance-settings.module.ts
new file mode 100644
index 0000000000..aca7e211ca
--- /dev/null
+++ b/console/src/app/pages/instance-settings/instance-settings.module.ts
@@ -0,0 +1,14 @@
+import { CommonModule } from '@angular/common';
+import { NgModule } from '@angular/core';
+import { TranslateModule } from '@ngx-translate/core';
+import { SettingsListModule } from 'src/app/modules/settings-list/settings-list.module';
+import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.module';
+
+import { InstanceSettingsRoutingModule } from './instance-settings-routing.module';
+import { InstanceSettingsComponent } from './instance-settings.component';
+
+@NgModule({
+ declarations: [InstanceSettingsComponent],
+ imports: [CommonModule, InstanceSettingsRoutingModule, SettingsListModule, HasRolePipeModule, TranslateModule],
+})
+export class InstanceSettingsModule {}
diff --git a/console/src/app/pages/iam/iam-members/iam-members-datasource.ts b/console/src/app/pages/instance/instance-members/instance-members-datasource.ts
similarity index 71%
rename from console/src/app/pages/iam/iam-members/iam-members-datasource.ts
rename to console/src/app/pages/instance/instance-members/instance-members-datasource.ts
index 295b86e467..eebcb1efc8 100644
--- a/console/src/app/pages/iam/iam-members/iam-members-datasource.ts
+++ b/console/src/app/pages/instance/instance-members/instance-members-datasource.ts
@@ -10,7 +10,7 @@ import { AdminService } from 'src/app/services/admin.service';
* encapsulate all logic for fetching and manipulating the displayed data
* (including sorting, pagination, and filtering).
*/
-export class IamMembersDataSource extends DataSource {
+export class InstanceMembersDataSource extends DataSource {
public totalResult: number = 0;
public viewTimestamp!: Timestamp.AsObject;
public membersSubject: BehaviorSubject = new BehaviorSubject([]);
@@ -21,28 +21,28 @@ export class IamMembersDataSource extends DataSource {
super();
}
- public loadMembers(
- pageIndex: number, pageSize: number): void {
+ public loadMembers(pageIndex: number, pageSize: number): void {
const offset = pageIndex * pageSize;
this.loadingSubject.next(true);
- from(this.service.listIAMMembers(pageSize, offset)).pipe(
- map(resp => {
- this.totalResult = resp.details?.totalResult || 0;
- if (resp.details?.viewTimestamp) {
- this.viewTimestamp = resp.details?.viewTimestamp;
- }
- return resp.resultList;
- }),
- catchError(() => of([])),
- finalize(() => this.loadingSubject.next(false)),
- ).subscribe(members => {
- this.membersSubject.next(members);
- });
+ from(this.service.listIAMMembers(pageSize, offset))
+ .pipe(
+ map((resp) => {
+ this.totalResult = resp.details?.totalResult || 0;
+ if (resp.details?.viewTimestamp) {
+ this.viewTimestamp = resp.details?.viewTimestamp;
+ }
+ return resp.resultList;
+ }),
+ catchError(() => of([])),
+ finalize(() => this.loadingSubject.next(false)),
+ )
+ .subscribe((members) => {
+ this.membersSubject.next(members);
+ });
}
-
/**
* Connect this data source to the table. The table will only update when
* the returned stream emits new items.
diff --git a/console/src/app/pages/instance/instance-members/instance-members-routing.module.ts b/console/src/app/pages/instance/instance-members/instance-members-routing.module.ts
new file mode 100644
index 0000000000..52f1aabfce
--- /dev/null
+++ b/console/src/app/pages/instance/instance-members/instance-members-routing.module.ts
@@ -0,0 +1,18 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+
+import { InstanceMembersComponent } from './instance-members.component';
+
+const routes: Routes = [
+ {
+ path: '',
+ component: InstanceMembersComponent,
+ data: { animation: 'AddPage' },
+ },
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class IamMembersRoutingModule {}
diff --git a/console/src/app/pages/iam/iam-members/iam-members.component.html b/console/src/app/pages/instance/instance-members/instance-members.component.html
similarity index 100%
rename from console/src/app/pages/iam/iam-members/iam-members.component.html
rename to console/src/app/pages/instance/instance-members/instance-members.component.html
diff --git a/console/src/app/pages/iam/iam-members/iam-members.component.scss b/console/src/app/pages/instance/instance-members/instance-members.component.scss
similarity index 100%
rename from console/src/app/pages/iam/iam-members/iam-members.component.scss
rename to console/src/app/pages/instance/instance-members/instance-members.component.scss
diff --git a/console/src/app/pages/iam/iam-members/iam-members.component.spec.ts b/console/src/app/pages/instance/instance-members/instance-members.component.spec.ts
similarity index 51%
rename from console/src/app/pages/iam/iam-members/iam-members.component.spec.ts
rename to console/src/app/pages/instance/instance-members/instance-members.component.spec.ts
index 8cb43bc408..204bb8803f 100644
--- a/console/src/app/pages/iam/iam-members/iam-members.component.spec.ts
+++ b/console/src/app/pages/instance/instance-members/instance-members.component.spec.ts
@@ -3,23 +3,21 @@ import { MatSortModule } from '@angular/material/sort';
import { MatTableModule } from '@angular/material/table';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
-import { IamMembersComponent } from './iam-members.component';
+import { InstanceMembersComponent } from './instance-members.component';
describe('IamMembersComponent', () => {
- let component: IamMembersComponent;
- let fixture: ComponentFixture;
+ let component: InstanceMembersComponent;
+ let fixture: ComponentFixture;
- beforeEach(
- waitForAsync(() => {
- TestBed.configureTestingModule({
- declarations: [IamMembersComponent],
- imports: [NoopAnimationsModule, MatSortModule, MatTableModule],
- }).compileComponents();
- }),
- );
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [InstanceMembersComponent],
+ imports: [NoopAnimationsModule, MatSortModule, MatTableModule],
+ }).compileComponents();
+ }));
beforeEach(() => {
- fixture = TestBed.createComponent(IamMembersComponent);
+ fixture = TestBed.createComponent(InstanceMembersComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
diff --git a/console/src/app/pages/iam/iam-members/iam-members.component.ts b/console/src/app/pages/instance/instance-members/instance-members.component.ts
similarity index 88%
rename from console/src/app/pages/iam/iam-members/iam-members.component.ts
rename to console/src/app/pages/instance/instance-members/instance-members.component.ts
index 79f340f3c8..3d51c74d72 100644
--- a/console/src/app/pages/iam/iam-members/iam-members.component.ts
+++ b/console/src/app/pages/instance/instance-members/instance-members.component.ts
@@ -9,16 +9,16 @@ import { AdminService } from 'src/app/services/admin.service';
import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
import { ToastService } from 'src/app/services/toast.service';
-import { IamMembersDataSource } from './iam-members-datasource';
+import { InstanceMembersDataSource } from './instance-members-datasource';
@Component({
- selector: 'cnsl-iam-members',
- templateUrl: './iam-members.component.html',
- styleUrls: ['./iam-members.component.scss'],
+ selector: 'cnsl-instance-members',
+ templateUrl: './instance-members.component.html',
+ styleUrls: ['./instance-members.component.scss'],
})
-export class IamMembersComponent {
+export class InstanceMembersComponent {
public INITIALPAGESIZE: number = 25;
- public dataSource!: IamMembersDataSource;
+ public dataSource!: InstanceMembersDataSource;
public memberRoleOptions: string[] = [];
public changePageFactory!: Function;
@@ -34,14 +34,14 @@ export class IamMembersComponent {
) {
const breadcrumbs = [
new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'System',
- routerLink: ['/system'],
+ type: BreadcrumbType.INSTANCE,
+ name: 'Instance',
+ routerLink: ['/instance'],
}),
];
breadcrumbService.setBreadcrumb(breadcrumbs);
- this.dataSource = new IamMembersDataSource(this.adminService);
+ this.dataSource = new InstanceMembersDataSource(this.adminService);
this.dataSource.loadMembers(0, 25);
this.getRoleOptions();
diff --git a/console/src/app/pages/iam/iam-members/iam-members.module.ts b/console/src/app/pages/instance/instance-members/instance-members.module.ts
similarity index 83%
rename from console/src/app/pages/iam/iam-members/iam-members.module.ts
rename to console/src/app/pages/instance/instance-members/instance-members.module.ts
index 1b46a04074..de280caeb3 100644
--- a/console/src/app/pages/iam/iam-members/iam-members.module.ts
+++ b/console/src/app/pages/instance/instance-members/instance-members.module.ts
@@ -11,11 +11,11 @@ import { DetailLayoutModule } from 'src/app/modules/detail-layout/detail-layout.
import { MembersTableModule } from 'src/app/modules/members-table/members-table.module';
import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.module';
-import { IamMembersRoutingModule } from './iam-members-routing.module';
-import { IamMembersComponent } from './iam-members.component';
+import { IamMembersRoutingModule } from './instance-members-routing.module';
+import { InstanceMembersComponent } from './instance-members.component';
@NgModule({
- declarations: [IamMembersComponent],
+ declarations: [InstanceMembersComponent],
imports: [
IamMembersRoutingModule,
DetailLayoutModule,
@@ -31,4 +31,4 @@ import { IamMembersComponent } from './iam-members.component';
MemberCreateDialogModule,
],
})
-export class IamMembersModule {}
+export class InstanceMembersModule {}
diff --git a/console/src/app/pages/instance/instance-routing.module.ts b/console/src/app/pages/instance/instance-routing.module.ts
new file mode 100644
index 0000000000..4408506a77
--- /dev/null
+++ b/console/src/app/pages/instance/instance-routing.module.ts
@@ -0,0 +1,55 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+import { AuthGuard } from 'src/app/guards/auth.guard';
+import { RoleGuard } from 'src/app/guards/role.guard';
+import { PolicyComponentServiceType } from 'src/app/modules/policies/policy-component-types.enum';
+
+import { InstanceComponent } from './instance.component';
+
+const routes: Routes = [
+ {
+ path: '',
+ component: InstanceComponent,
+ canActivate: [AuthGuard, RoleGuard],
+ data: {
+ roles: ['iam.read'],
+ },
+ },
+ {
+ path: 'members',
+ loadChildren: () => import('./instance-members/instance-members.module').then((m) => m.InstanceMembersModule),
+ canActivate: [AuthGuard, RoleGuard],
+ data: {
+ roles: ['iam.member.read'],
+ },
+ },
+ {
+ path: 'idp',
+ children: [
+ {
+ path: 'create',
+ loadChildren: () => import('src/app/modules/idp-create/idp-create.module').then((m) => m.IdpCreateModule),
+ canActivate: [AuthGuard, RoleGuard],
+ data: {
+ roles: ['iam.idp.write'],
+ serviceType: PolicyComponentServiceType.ADMIN,
+ },
+ },
+ {
+ path: ':id',
+ loadChildren: () => import('src/app/modules/idp/idp.module').then((m) => m.IdpModule),
+ canActivate: [AuthGuard, RoleGuard],
+ data: {
+ roles: ['iam.idp.read'],
+ serviceType: PolicyComponentServiceType.ADMIN,
+ },
+ },
+ ],
+ },
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class IamRoutingModule {}
diff --git a/console/src/app/pages/iam/iam.component.html b/console/src/app/pages/instance/instance.component.html
similarity index 62%
rename from console/src/app/pages/iam/iam.component.html
rename to console/src/app/pages/instance/instance.component.html
index 58cc711a74..a85555d2b5 100644
--- a/console/src/app/pages/iam/iam.component.html
+++ b/console/src/app/pages/instance/instance.component.html
@@ -3,9 +3,9 @@
-
{{ 'IAM.POLICIES.TITLE' | translate }}
+ {{ 'IAM.TITLE' | translate }}
-
{{ 'IAM.POLICIES.DESCRIPTION' | translate }}
+
{{ 'IAM.DESCRIPTION' | translate }}
-
+
{{ 'ORG.LIST.TITLE' | translate }}
+
+
{{ 'ORG.LIST.DESCRIPTION' | translate }}
+
+
+
+
diff --git a/console/src/app/pages/iam/iam.component.scss b/console/src/app/pages/instance/instance.component.scss
similarity index 90%
rename from console/src/app/pages/iam/iam.component.scss
rename to console/src/app/pages/instance/instance.component.scss
index c1acb552c7..69494c47e3 100644
--- a/console/src/app/pages/iam/iam.component.scss
+++ b/console/src/app/pages/instance/instance.component.scss
@@ -1,6 +1,6 @@
@use '@angular/material' as mat;
-@mixin iam-detail-theme($theme) {
+@mixin instance-detail-theme($theme) {
$foreground: map-get($theme, foreground);
$is-dark-theme: map-get($theme, is-dark);
$background: map-get($theme, background);
@@ -46,9 +46,13 @@
}
}
-.iam-subtitle {
+.org-table-title {
font-size: 1.2rem;
letter-spacing: 0.05em;
text-transform: uppercase;
margin-top: 2rem;
}
+
+.org-table-desc {
+ font-size: 14px;
+}
diff --git a/console/src/app/pages/instance/instance.component.spec.ts b/console/src/app/pages/instance/instance.component.spec.ts
new file mode 100644
index 0000000000..5da6bf265a
--- /dev/null
+++ b/console/src/app/pages/instance/instance.component.spec.ts
@@ -0,0 +1,24 @@
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+
+import { InstanceComponent } from './instance.component';
+
+describe('IamComponent', () => {
+ let component: InstanceComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [InstanceComponent],
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(InstanceComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/console/src/app/pages/iam/iam.component.ts b/console/src/app/pages/instance/instance.component.ts
similarity index 87%
rename from console/src/app/pages/iam/iam.component.ts
rename to console/src/app/pages/instance/instance.component.ts
index a86de480aa..2901d084fb 100644
--- a/console/src/app/pages/iam/iam.component.ts
+++ b/console/src/app/pages/instance/instance.component.ts
@@ -12,11 +12,11 @@ import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/
import { ToastService } from 'src/app/services/toast.service';
@Component({
- selector: 'cnsl-iam',
- templateUrl: './iam.component.html',
- styleUrls: ['./iam.component.scss'],
+ selector: 'cnsl-instance',
+ templateUrl: './instance.component.html',
+ styleUrls: ['./instance.component.scss'],
})
-export class IamComponent {
+export class InstanceComponent {
public PolicyComponentServiceType: any = PolicyComponentServiceType;
private loadingSubject: BehaviorSubject = new BehaviorSubject(false);
public loading$: Observable = this.loadingSubject.asObservable();
@@ -27,19 +27,18 @@ export class IamComponent {
public adminService: AdminService,
private dialog: MatDialog,
private toast: ToastService,
- private breadcrumbService: BreadcrumbService,
+ breadcrumbService: BreadcrumbService,
private router: Router,
) {
this.loadMembers();
- const breadcrumbs = [
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'System',
- routerLink: ['/system'],
- }),
- ];
- this.breadcrumbService.setBreadcrumb(breadcrumbs);
+ const instanceBread = new Breadcrumb({
+ type: BreadcrumbType.INSTANCE,
+ name: 'Instance',
+ routerLink: ['/instance'],
+ });
+
+ breadcrumbService.setBreadcrumb([instanceBread]);
}
public loadMembers(): void {
@@ -99,6 +98,6 @@ export class IamComponent {
}
public showDetail(): void {
- this.router.navigate(['/system', 'members']);
+ this.router.navigate(['/instance', 'members']);
}
}
diff --git a/console/src/app/pages/iam/iam.module.ts b/console/src/app/pages/instance/instance.module.ts
similarity index 85%
rename from console/src/app/pages/iam/iam.module.ts
rename to console/src/app/pages/instance/instance.module.ts
index 5d4a317383..3d7e301c89 100644
--- a/console/src/app/pages/iam/iam.module.ts
+++ b/console/src/app/pages/instance/instance.module.ts
@@ -18,18 +18,19 @@ import { ChangesModule } from 'src/app/modules/changes/changes.module';
import { ContributorsModule } from 'src/app/modules/contributors/contributors.module';
import { InputModule } from 'src/app/modules/input/input.module';
import { MetaLayoutModule } from 'src/app/modules/meta-layout/meta-layout.module';
-import { PolicyGridModule } from 'src/app/modules/policy-grid/policy-grid.module';
+import { OrgTableModule } from 'src/app/modules/org-table/org-table.module';
import { RefreshTableModule } from 'src/app/modules/refresh-table/refresh-table.module';
+import { SettingsGridModule } from 'src/app/modules/settings-grid/settings-grid.module';
import { SharedModule } from 'src/app/modules/shared/shared.module';
import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.module';
import { LocalizedDatePipeModule } from 'src/app/pipes/localized-date-pipe/localized-date-pipe.module';
import { TimestampToDatePipeModule } from 'src/app/pipes/timestamp-to-date-pipe/timestamp-to-date-pipe.module';
-import { IamRoutingModule } from './iam-routing.module';
-import { IamComponent } from './iam.component';
+import { IamRoutingModule } from './instance-routing.module';
+import { InstanceComponent } from './instance.component';
@NgModule({
- declarations: [IamComponent],
+ declarations: [InstanceComponent],
imports: [
CommonModule,
IamRoutingModule,
@@ -50,6 +51,7 @@ import { IamComponent } from './iam.component';
MatProgressSpinnerModule,
FormsModule,
TranslateModule,
+ OrgTableModule,
MatDialogModule,
ContributorsModule,
LocalizedDatePipeModule,
@@ -58,7 +60,7 @@ import { IamComponent } from './iam.component';
RefreshTableModule,
HasRolePipeModule,
MatSortModule,
- PolicyGridModule,
+ SettingsGridModule,
],
})
-export class IamModule {}
+export class InstanceModule {}
diff --git a/console/src/app/pages/org-create/org-create.component.ts b/console/src/app/pages/org-create/org-create.component.ts
index 5e794601a8..a6ae9020c6 100644
--- a/console/src/app/pages/org-create/org-create.component.ts
+++ b/console/src/app/pages/org-create/org-create.component.ts
@@ -114,7 +114,7 @@ export class OrgCreateComponent {
this.adminService
.SetUpOrg(createOrgRequest, humanRequest)
.then((resp) => {
- this.router.navigate(['/org/overview']);
+ this.router.navigate(['/orgs']);
// const orgResp = org.getOrg();
// if (orgResp) {
@@ -211,7 +211,7 @@ export class OrgCreateComponent {
this.mgmtService
.addOrg(this.name.value)
.then(() => {
- this.router.navigate(['/org/overview']);
+ this.router.navigate(['/orgs']);
})
.catch((error) => {
this.toast.showError(error);
diff --git a/console/src/app/pages/orgs/org-list/org-list-routing.module.ts b/console/src/app/pages/org-list/org-list-routing.module.ts
similarity index 100%
rename from console/src/app/pages/orgs/org-list/org-list-routing.module.ts
rename to console/src/app/pages/org-list/org-list-routing.module.ts
diff --git a/console/src/app/pages/org-list/org-list.component.html b/console/src/app/pages/org-list/org-list.component.html
new file mode 100644
index 0000000000..b30cc46d08
--- /dev/null
+++ b/console/src/app/pages/org-list/org-list.component.html
@@ -0,0 +1,8 @@
+
+
+
{{ 'ORG.PAGES.LIST' | translate }}
+
{{ 'ORG.PAGES.LISTDESCRIPTION' | translate }}
+
+
+
+
diff --git a/console/src/app/pages/org-list/org-list.component.scss b/console/src/app/pages/org-list/org-list.component.scss
new file mode 100644
index 0000000000..1735498b9f
--- /dev/null
+++ b/console/src/app/pages/org-list/org-list.component.scss
@@ -0,0 +1,7 @@
+h1 {
+ margin: 0;
+}
+
+.org-desc {
+ font-size: 14px;
+}
diff --git a/console/src/app/pages/orgs/org-list/org-list.component.spec.ts b/console/src/app/pages/org-list/org-list.component.spec.ts
similarity index 100%
rename from console/src/app/pages/orgs/org-list/org-list.component.spec.ts
rename to console/src/app/pages/org-list/org-list.component.spec.ts
diff --git a/console/src/app/pages/org-list/org-list.component.ts b/console/src/app/pages/org-list/org-list.component.ts
new file mode 100644
index 0000000000..bc397fedef
--- /dev/null
+++ b/console/src/app/pages/org-list/org-list.component.ts
@@ -0,0 +1,21 @@
+import { Component } from '@angular/core';
+import { enterAnimations } from 'src/app/animations';
+import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
+
+@Component({
+ selector: 'cnsl-org-list',
+ templateUrl: './org-list.component.html',
+ styleUrls: ['./org-list.component.scss'],
+ animations: [enterAnimations],
+})
+export class OrgListComponent {
+ constructor(breadcrumbService: BreadcrumbService) {
+ const iamBread = new Breadcrumb({
+ type: BreadcrumbType.INSTANCE,
+ name: 'Instance',
+ routerLink: ['/instance'],
+ });
+
+ breadcrumbService.setBreadcrumb([iamBread]);
+ }
+}
diff --git a/console/src/app/pages/org-list/org-list.module.ts b/console/src/app/pages/org-list/org-list.module.ts
new file mode 100644
index 0000000000..a7eae0b09d
--- /dev/null
+++ b/console/src/app/pages/org-list/org-list.module.ts
@@ -0,0 +1,13 @@
+import { CommonModule } from '@angular/common';
+import { NgModule } from '@angular/core';
+import { TranslateModule } from '@ngx-translate/core';
+import { OrgTableModule } from 'src/app/modules/org-table/org-table.module';
+
+import { OrgListRoutingModule } from './org-list-routing.module';
+import { OrgListComponent } from './org-list.component';
+
+@NgModule({
+ declarations: [OrgListComponent],
+ imports: [CommonModule, OrgListRoutingModule, OrgTableModule, TranslateModule],
+})
+export class OrgListModule {}
diff --git a/console/src/app/pages/projects/owned-projects/project-grants/project-grants-routing.module.ts b/console/src/app/pages/org-settings/org-settings-routing.module.ts
similarity index 55%
rename from console/src/app/pages/projects/owned-projects/project-grants/project-grants-routing.module.ts
rename to console/src/app/pages/org-settings/org-settings-routing.module.ts
index 86906b1022..9de7c38e11 100644
--- a/console/src/app/pages/projects/owned-projects/project-grants/project-grants-routing.module.ts
+++ b/console/src/app/pages/org-settings/org-settings-routing.module.ts
@@ -1,13 +1,12 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
-import { ProjectGrantsComponent } from './project-grants.component';
+import { OrgSettingsComponent } from './org-settings.component';
const routes: Routes = [
{
path: '',
- component: ProjectGrantsComponent,
- data: { animation: 'HomePage' },
+ component: OrgSettingsComponent,
},
];
@@ -15,4 +14,4 @@ const routes: Routes = [
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
-export class ProjectGrantsRoutingModule {}
+export class OrgSettingsRoutingModule {}
diff --git a/console/src/app/pages/org-settings/org-settings.component.html b/console/src/app/pages/org-settings/org-settings.component.html
new file mode 100644
index 0000000000..beae1ba352
--- /dev/null
+++ b/console/src/app/pages/org-settings/org-settings.component.html
@@ -0,0 +1,16 @@
+
+
+
+
+
{{ 'SETTINGS.ORG.TITLE' | translate }}
+
+
{{ 'SETTINGS.ORG.DESCRIPTION' | translate }}
+
+
+
+
+
diff --git a/console/src/app/pages/org-settings/org-settings.component.scss b/console/src/app/pages/org-settings/org-settings.component.scss
new file mode 100644
index 0000000000..ba889aa838
--- /dev/null
+++ b/console/src/app/pages/org-settings/org-settings.component.scss
@@ -0,0 +1,34 @@
+.settings-top-view {
+ display: flex;
+ align-items: center;
+ padding-top: 2rem;
+
+ .settings-title-row {
+ display: flex;
+ align-items: center;
+
+ h1 {
+ margin: 0;
+ }
+
+ a i {
+ font-size: 1.2rem;
+ height: 1.2rem;
+ line-height: 1.2rem;
+ }
+ }
+
+ .fill-space {
+ flex: 1;
+ }
+
+ .actions {
+ display: flex;
+ align-items: center;
+ }
+}
+
+.desc {
+ margin-bottom: 2rem;
+ font-size: 14px;
+}
diff --git a/console/src/app/pages/org-settings/org-settings.component.spec.ts b/console/src/app/pages/org-settings/org-settings.component.spec.ts
new file mode 100644
index 0000000000..9803c31cd1
--- /dev/null
+++ b/console/src/app/pages/org-settings/org-settings.component.spec.ts
@@ -0,0 +1,24 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { OrgSettingsComponent } from './org-settings.component';
+
+describe('OrgSettingsComponent', () => {
+ let component: OrgSettingsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [OrgSettingsComponent],
+ }).compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(OrgSettingsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/console/src/app/pages/org-settings/org-settings.component.ts b/console/src/app/pages/org-settings/org-settings.component.ts
new file mode 100644
index 0000000000..abf82577e3
--- /dev/null
+++ b/console/src/app/pages/org-settings/org-settings.component.ts
@@ -0,0 +1,58 @@
+import { Component } from '@angular/core';
+import { ActivatedRoute, Params } from '@angular/router';
+import { take } from 'rxjs';
+import { PolicyComponentServiceType } from 'src/app/modules/policies/policy-component-types.enum';
+import { SidenavSetting } from 'src/app/modules/sidenav/sidenav.component';
+import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
+
+import {
+ BRANDING,
+ COMPLEXITY,
+ IDP,
+ LOCKOUT,
+ LOGIN,
+ LOGINTEXTS,
+ MESSAGETEXTS,
+ NOTIFICATIONPROVIDERS,
+ NOTIFICATIONS,
+ PRIVACYPOLICY,
+} from '../../modules/settings-list/settings';
+
+@Component({
+ selector: 'cnsl-org-settings',
+ templateUrl: './org-settings.component.html',
+ styleUrls: ['./org-settings.component.scss'],
+})
+export class OrgSettingsComponent {
+ public id: string = '';
+ public PolicyComponentServiceType: any = PolicyComponentServiceType;
+ public settingsList: SidenavSetting[] = [
+ LOGIN,
+ COMPLEXITY,
+ LOCKOUT,
+ IDP,
+ NOTIFICATIONS,
+ NOTIFICATIONPROVIDERS,
+ BRANDING,
+ MESSAGETEXTS,
+ LOGINTEXTS,
+ PRIVACYPOLICY,
+ ];
+
+ constructor(breadcrumbService: BreadcrumbService, activatedRoute: ActivatedRoute) {
+ const breadcrumbs = [
+ new Breadcrumb({
+ type: BreadcrumbType.ORG,
+ routerLink: ['/org'],
+ }),
+ ];
+ breadcrumbService.setBreadcrumb(breadcrumbs);
+
+ activatedRoute.queryParams.pipe(take(1)).subscribe((params: Params) => {
+ const { id } = params;
+ if (id) {
+ this.id = id;
+ }
+ });
+ }
+}
diff --git a/console/src/app/pages/org-settings/org-settings.module.ts b/console/src/app/pages/org-settings/org-settings.module.ts
new file mode 100644
index 0000000000..0f55322026
--- /dev/null
+++ b/console/src/app/pages/org-settings/org-settings.module.ts
@@ -0,0 +1,14 @@
+import { CommonModule } from '@angular/common';
+import { NgModule } from '@angular/core';
+import { TranslateModule } from '@ngx-translate/core';
+import { SettingsListModule } from 'src/app/modules/settings-list/settings-list.module';
+import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.module';
+
+import { OrgSettingsRoutingModule } from './org-settings-routing.module';
+import { OrgSettingsComponent } from './org-settings.component';
+
+@NgModule({
+ declarations: [OrgSettingsComponent],
+ imports: [CommonModule, OrgSettingsRoutingModule, SettingsListModule, HasRolePipeModule, TranslateModule],
+})
+export class OrgSettingsModule {}
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 987ffd5481..26dc3d525f 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
@@ -25,7 +25,7 @@
-
+
diff --git a/console/src/app/pages/orgs/org-detail/org-detail.component.ts b/console/src/app/pages/orgs/org-detail/org-detail.component.ts
index 7bda4bc8ad..27ed8b88fb 100644
--- a/console/src/app/pages/orgs/org-detail/org-detail.component.ts
+++ b/console/src/app/pages/orgs/org-detail/org-detail.component.ts
@@ -1,7 +1,7 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, OnDestroy, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
-import { Router } from '@angular/router';
-import { BehaviorSubject, from, Observable, of } from 'rxjs';
+import { ActivatedRoute, Router } from '@angular/router';
+import { BehaviorSubject, from, Observable, of, Subject, takeUntil } from 'rxjs';
import { catchError, finalize, map } from 'rxjs/operators';
import { CreationType, MemberCreateDialogComponent } from 'src/app/modules/add-member-dialog/member-create-dialog.component';
import { ChangeType } from 'src/app/modules/changes/changes.component';
@@ -18,7 +18,7 @@ import { ToastService } from 'src/app/services/toast.service';
templateUrl: './org-detail.component.html',
styleUrls: ['./org-detail.component.scss'],
})
-export class OrgDetailComponent implements OnInit {
+export class OrgDetailComponent implements OnInit, OnDestroy {
public org!: Org.AsObject;
public PolicyComponentServiceType: any = PolicyComponentServiceType;
@@ -30,30 +30,35 @@ export class OrgDetailComponent implements OnInit {
public loading$: Observable
= this.loadingSubject.asObservable();
public totalMemberResult: number = 0;
public membersSubject: BehaviorSubject = new BehaviorSubject([]);
-
+ private destroy$: Subject = new Subject();
constructor(
private dialog: MatDialog,
public mgmtService: ManagementService,
private toast: ToastService,
private router: Router,
breadcrumbService: BreadcrumbService,
+ activatedRoute: ActivatedRoute,
) {
- const iamBread = new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- });
const bread: Breadcrumb = {
type: BreadcrumbType.ORG,
routerLink: ['/org'],
};
- breadcrumbService.setBreadcrumb([iamBread, bread]);
+ breadcrumbService.setBreadcrumb([bread]);
+
+ activatedRoute.fragment.pipe(takeUntil(this.destroy$)).subscribe((orgId) => {
+ this.getData();
+ });
}
public ngOnInit(): void {
this.getData();
}
+ public ngOnDestroy(): void {
+ this.destroy$.next();
+ this.destroy$.complete();
+ }
+
private async getData(): Promise {
this.mgmtService
.getMyOrg()
diff --git a/console/src/app/pages/orgs/org-list/org-list.component.html b/console/src/app/pages/orgs/org-list/org-list.component.html
deleted file mode 100644
index 1c480fc5e7..0000000000
--- a/console/src/app/pages/orgs/org-list/org-list.component.html
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
{{ 'ORG.PAGES.LIST' | translate }}
-
{{'ORG.PAGES.LISTDESCRIPTION' | translate}}
-
-
-
-
-
-
-
-
- add
- {{ 'ACTIONS.NEW' | translate }}
-
-
-
-
-
-
-
-
- {{'ORG.PAGES.ACTIVE' | translate}}
- |
-
-
-
- |
-
-
-
- {{ 'ORG.PAGES.ID' | translate }} |
- {{org.id}} |
-
-
-
- {{ 'ORG.PAGES.PRIMARYDOMAIN' | translate }} |
- {{org.primaryDomain}}
-
- |
-
-
-
-
- {{ 'ORG.PAGES.NAME' | translate }}
- |
- {{org.name}} |
-
-
-
- {{ 'ORG.PAGES.STATE' | translate }} |
-
- {{'ORG.STATE.'+org.state | translate}}
- |
-
-
-
-
- {{ 'ORG.PAGES.CREATIONDATE' | translate }}
- |
-
- {{org.details?.creationDate | timestampToDate | localizedDate: 'fromNow'}}
- |
-
-
-
-
- {{ 'ORG.PAGES.DATECHANGED' | translate }}
- |
-
- {{org.details?.changeDate | timestampToDate | localizedDate: 'fromNow'}}
- |
-
-
-
-
-
-
-
-
-
\ No newline at end of file
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 52defebf0b..eabeba6e60 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
@@ -35,16 +35,11 @@ export class OrgMembersComponent {
private toast: ToastService,
breadcrumbService: BreadcrumbService,
) {
- const iamBread = new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- });
const bread: Breadcrumb = {
type: BreadcrumbType.ORG,
routerLink: ['/org'],
};
- breadcrumbService.setBreadcrumb([iamBread, bread]);
+ breadcrumbService.setBreadcrumb([bread]);
this.mgmtService.getMyOrg().then((resp) => {
if (resp.org) {
diff --git a/console/src/app/pages/orgs/org-routing.module.ts b/console/src/app/pages/orgs/org-routing.module.ts
new file mode 100644
index 0000000000..b6ae84a4ee
--- /dev/null
+++ b/console/src/app/pages/orgs/org-routing.module.ts
@@ -0,0 +1,46 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+import { RoleGuard } from 'src/app/guards/role.guard';
+import { PolicyComponentServiceType } from 'src/app/modules/policies/policy-component-types.enum';
+
+import { OrgDetailComponent } from './org-detail/org-detail.component';
+
+const routes: Routes = [
+ {
+ path: 'idp',
+ children: [
+ {
+ path: 'create',
+ loadChildren: () => import('src/app/modules/idp-create/idp-create.module').then((m) => m.IdpCreateModule),
+ canActivate: [RoleGuard],
+ data: {
+ roles: ['org.idp.write'],
+ serviceType: PolicyComponentServiceType.MGMT,
+ },
+ },
+ {
+ path: ':id',
+ loadChildren: () => import('src/app/modules/idp/idp.module').then((m) => m.IdpModule),
+ canActivate: [RoleGuard],
+ data: {
+ roles: ['org.idp.read'],
+ serviceType: PolicyComponentServiceType.MGMT,
+ },
+ },
+ ],
+ },
+ {
+ path: 'members',
+ loadChildren: () => import('./org-members/org-members.module').then((m) => m.OrgMembersModule),
+ },
+ {
+ path: '',
+ component: OrgDetailComponent,
+ },
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class OrgRoutingModule {}
diff --git a/console/src/app/pages/orgs/orgs.module.ts b/console/src/app/pages/orgs/org.module.ts
similarity index 91%
rename from console/src/app/pages/orgs/orgs.module.ts
rename to console/src/app/pages/orgs/org.module.ts
index 86f128598b..e8fc9e3eff 100644
--- a/console/src/app/pages/orgs/orgs.module.ts
+++ b/console/src/app/pages/orgs/org.module.ts
@@ -18,7 +18,7 @@ import { InfoRowModule } from 'src/app/modules/info-row/info-row.module';
import { InfoSectionModule } from 'src/app/modules/info-section/info-section.module';
import { InputModule } from 'src/app/modules/input/input.module';
import { MetaLayoutModule } from 'src/app/modules/meta-layout/meta-layout.module';
-import { PolicyGridModule } from 'src/app/modules/policy-grid/policy-grid.module';
+import { SettingsGridModule } from 'src/app/modules/settings-grid/settings-grid.module';
import { SharedModule } from 'src/app/modules/shared/shared.module';
import { TopViewModule } from 'src/app/modules/top-view/top-view.module';
import { WarnDialogModule } from 'src/app/modules/warn-dialog/warn-dialog.module';
@@ -26,14 +26,14 @@ import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.mod
import { ChangesModule } from '../../modules/changes/changes.module';
import { OrgDetailComponent } from './org-detail/org-detail.component';
-import { OrgsRoutingModule } from './orgs-routing.module';
+import { OrgRoutingModule } from './org-routing.module';
@NgModule({
declarations: [OrgDetailComponent],
imports: [
CommonModule,
HasRolePipeModule,
- OrgsRoutingModule,
+ OrgRoutingModule,
FormsModule,
InfoRowModule,
HasRoleModule,
@@ -55,9 +55,9 @@ import { OrgsRoutingModule } from './orgs-routing.module';
MatProgressSpinnerModule,
TranslateModule,
SharedModule,
+ SettingsGridModule,
ContributorsModule,
CopyToClipboardModule,
- PolicyGridModule,
],
})
-export class OrgsModule {}
+export class OrgModule {}
diff --git a/console/src/app/pages/orgs/orgs-routing.module.ts b/console/src/app/pages/orgs/orgs-routing.module.ts
deleted file mode 100644
index 4e9f7199f1..0000000000
--- a/console/src/app/pages/orgs/orgs-routing.module.ts
+++ /dev/null
@@ -1,135 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import { RoleGuard } from 'src/app/guards/role.guard';
-import { PolicyComponentServiceType, PolicyComponentType } from 'src/app/modules/policies/policy-component-types.enum';
-
-import { OrgDetailComponent } from './org-detail/org-detail.component';
-
-const routes: Routes = [
- {
- path: 'idp',
- children: [
- {
- path: 'create',
- loadChildren: () => import('src/app/modules/idp-create/idp-create.module').then((m) => m.IdpCreateModule),
- canActivate: [RoleGuard],
- data: {
- roles: ['org.idp.write'],
- serviceType: PolicyComponentServiceType.MGMT,
- },
- },
- {
- path: ':id',
- loadChildren: () => import('src/app/modules/idp/idp.module').then((m) => m.IdpModule),
- canActivate: [RoleGuard],
- data: {
- roles: ['org.idp.read'],
- serviceType: PolicyComponentServiceType.MGMT,
- },
- },
- ],
- },
- {
- path: 'policy',
- children: [
- {
- path: PolicyComponentType.AGE,
- data: {
- serviceType: PolicyComponentServiceType.MGMT,
- },
- loadChildren: () =>
- import('src/app/modules/policies/password-age-policy/password-age-policy.module').then(
- (m) => m.PasswordAgePolicyModule,
- ),
- },
- {
- path: PolicyComponentType.LOCKOUT,
- data: {
- serviceType: PolicyComponentServiceType.MGMT,
- },
- loadChildren: () =>
- import('src/app/modules/policies/password-lockout-policy/password-lockout-policy.module').then(
- (m) => m.PasswordLockoutPolicyModule,
- ),
- },
- {
- path: PolicyComponentType.PRIVATELABEL,
- data: {
- serviceType: PolicyComponentServiceType.MGMT,
- },
- loadChildren: () =>
- import('src/app/modules/policies/private-labeling-policy/private-labeling-policy.module').then(
- (m) => m.PrivateLabelingPolicyModule,
- ),
- },
- {
- path: PolicyComponentType.COMPLEXITY,
- data: {
- serviceType: PolicyComponentServiceType.MGMT,
- },
- loadChildren: () =>
- import('src/app/modules/policies/password-complexity-policy/password-complexity-policy.module').then(
- (m) => m.PasswordComplexityPolicyModule,
- ),
- },
- {
- path: PolicyComponentType.IAM,
- data: {
- serviceType: PolicyComponentServiceType.MGMT,
- },
- loadChildren: () =>
- import('src/app/modules/policies/org-iam-policy/org-iam-policy.module').then((m) => m.OrgIamPolicyModule),
- },
- {
- path: PolicyComponentType.LOGIN,
- data: {
- serviceType: PolicyComponentServiceType.MGMT,
- },
- loadChildren: () =>
- import('src/app/modules/policies/login-policy/login-policy.module').then((m) => m.LoginPolicyModule),
- },
- {
- path: PolicyComponentType.MESSAGETEXTS,
- data: {
- serviceType: PolicyComponentServiceType.MGMT,
- },
- loadChildren: () =>
- import('src/app/modules/policies/message-texts/message-texts.module').then((m) => m.MessageTextsPolicyModule),
- },
- {
- path: PolicyComponentType.LOGINTEXTS,
- data: {
- serviceType: PolicyComponentServiceType.MGMT,
- },
- loadChildren: () =>
- import('src/app/modules/policies/login-texts/login-texts.module').then((m) => m.LoginTextsPolicyModule),
- },
- {
- path: PolicyComponentType.PRIVACYPOLICY,
- data: {
- serviceType: PolicyComponentServiceType.MGMT,
- },
- loadChildren: () =>
- import('src/app/modules/policies/privacy-policy/privacy-policy.module').then((m) => m.PrivacyPolicyModule),
- },
- ],
- },
- {
- path: 'members',
- loadChildren: () => import('./org-members/org-members.module').then((m) => m.OrgMembersModule),
- },
- {
- path: '',
- component: OrgDetailComponent,
- },
- {
- path: 'overview',
- loadChildren: () => import('./org-list/org-list.module').then((m) => m.OrgListModule),
- },
-];
-
-@NgModule({
- imports: [RouterModule.forChild(routes)],
- exports: [RouterModule],
-})
-export class OrgsRoutingModule {}
diff --git a/console/src/app/pages/projects/apps/app-create/app-create.component.ts b/console/src/app/pages/projects/apps/app-create/app-create.component.ts
index 41bb02df7a..268b6c3e70 100644
--- a/console/src/app/pages/projects/apps/app-create/app-create.component.ts
+++ b/console/src/app/pages/projects/apps/app-create/app-create.component.ts
@@ -9,17 +9,17 @@ import { Subject, Subscription } from 'rxjs';
import { debounceTime, takeUntil } from 'rxjs/operators';
import { RadioItemAuthType } from 'src/app/modules/app-radio/app-auth-method-radio/app-auth-method-radio.component';
import {
- APIAuthMethodType,
- OIDCAppType,
- OIDCAuthMethodType,
- OIDCGrantType,
- OIDCResponseType,
+ APIAuthMethodType,
+ OIDCAppType,
+ OIDCAuthMethodType,
+ OIDCGrantType,
+ OIDCResponseType,
} from 'src/app/proto/generated/zitadel/app_pb';
import {
- AddAPIAppRequest,
- AddAPIAppResponse,
- AddOIDCAppRequest,
- AddOIDCAppResponse,
+ AddAPIAppRequest,
+ AddAPIAppResponse,
+ AddOIDCAppRequest,
+ AddOIDCAppResponse,
} from 'src/app/proto/generated/zitadel/management_pb';
import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
import { ManagementService } from 'src/app/services/mgmt.service';
@@ -27,13 +27,13 @@ import { ToastService } from 'src/app/services/toast.service';
import { AppSecretDialogComponent } from '../app-secret-dialog/app-secret-dialog.component';
import {
- BASIC_AUTH_METHOD,
- CODE_METHOD,
- getPartialConfigFromAuthMethod,
- IMPLICIT_METHOD,
- PK_JWT_METHOD,
- PKCE_METHOD,
- POST_METHOD,
+ BASIC_AUTH_METHOD,
+ CODE_METHOD,
+ getPartialConfigFromAuthMethod,
+ IMPLICIT_METHOD,
+ PK_JWT_METHOD,
+ PKCE_METHOD,
+ POST_METHOD,
} from '../authmethods';
import { API_TYPE, AppCreateType, NATIVE_TYPE, RadioItemAppType, USER_AGENT_TYPE, WEB_TYPE } from '../authtypes';
@@ -199,11 +199,6 @@ export class AppCreateComponent implements OnInit, OnDestroy {
const projectId = this.route.snapshot.paramMap.get('projectid');
if (projectId) {
const breadcrumbs = [
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
diff --git a/console/src/app/pages/projects/apps/app-detail/app-detail.component.ts b/console/src/app/pages/projects/apps/app-detail/app-detail.component.ts
index 25c2a1436e..f0c548e012 100644
--- a/console/src/app/pages/projects/apps/app-detail/app-detail.component.ts
+++ b/console/src/app/pages/projects/apps/app-detail/app-detail.component.ts
@@ -19,21 +19,21 @@ import { NameDialogComponent } from 'src/app/modules/name-dialog/name-dialog.com
import { SidenavSetting } from 'src/app/modules/sidenav/sidenav.component';
import { WarnDialogComponent } from 'src/app/modules/warn-dialog/warn-dialog.component';
import {
- APIAuthMethodType,
- APIConfig,
- App,
- AppState,
- OIDCAppType,
- OIDCAuthMethodType,
- OIDCConfig,
- OIDCGrantType,
- OIDCResponseType,
- OIDCTokenType,
+ APIAuthMethodType,
+ APIConfig,
+ App,
+ AppState,
+ OIDCAppType,
+ OIDCAuthMethodType,
+ OIDCConfig,
+ OIDCGrantType,
+ OIDCResponseType,
+ OIDCTokenType,
} from 'src/app/proto/generated/zitadel/app_pb';
import {
- GetOIDCInformationResponse,
- UpdateAPIAppConfigRequest,
- UpdateOIDCAppConfigRequest,
+ GetOIDCInformationResponse,
+ UpdateAPIAppConfigRequest,
+ UpdateOIDCAppConfigRequest,
} from 'src/app/proto/generated/zitadel/management_pb';
import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
import { GrpcAuthService } from 'src/app/services/grpc-auth.service';
@@ -42,15 +42,15 @@ import { ToastService } from 'src/app/services/toast.service';
import { AppSecretDialogComponent } from '../app-secret-dialog/app-secret-dialog.component';
import {
- BASIC_AUTH_METHOD,
- CODE_METHOD,
- CUSTOM_METHOD,
- getAuthMethodFromPartialConfig,
- getPartialConfigFromAuthMethod,
- IMPLICIT_METHOD,
- PK_JWT_METHOD,
- PKCE_METHOD,
- POST_METHOD,
+ BASIC_AUTH_METHOD,
+ CODE_METHOD,
+ CUSTOM_METHOD,
+ getAuthMethodFromPartialConfig,
+ getPartialConfigFromAuthMethod,
+ IMPLICIT_METHOD,
+ PK_JWT_METHOD,
+ PKCE_METHOD,
+ POST_METHOD,
} from '../authmethods';
@Component({
@@ -253,11 +253,6 @@ export class AppDetailComponent implements OnInit, OnDestroy {
this.app = app.app;
const breadcrumbs = [
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
diff --git a/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.ts b/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.ts
index 1f7672d8e4..6bec120bbb 100644
--- a/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.ts
+++ b/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.ts
@@ -64,11 +64,6 @@ export class GrantedProjectDetailComponent implements OnInit, OnDestroy {
this.grantId = grantId;
const breadcrumbs = [
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.html b/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.html
index 110074d61f..f297673cd4 100644
--- a/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.html
+++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.html
@@ -1,20 +1,24 @@
-
+
-
-
- {{ app.name.charAt(0)}}
+
+
+ {{ app.name.charAt(0) }}
@@ -22,19 +26,24 @@
- {{app.name}}
+ {{ app.name }}
- {{'APP.OIDC.APPTYPE.'+app.oidcConfig?.appType | translate}}
+ {{ 'APP.OIDC.APPTYPE.' + app.oidcConfig?.appType | translate }}
API
-
+
add
{{ 'ACTIONS.NEW' | translate }}
-
\ No newline at end of file
+
diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.scss b/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.scss
index fb677ee77f..41e789672d 100644
--- a/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.scss
+++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.scss
@@ -1,14 +1,14 @@
-h3 {
+.app-grid-h2 {
font-weight: 400;
font-size: 16px;
text-transform: uppercase;
letter-spacing: 0.05em;
+ margin: 2rem 0 1rem 0;
}
.app-grid-header {
display: flex;
align-items: center;
- padding-top: 1rem;
.fill-space {
flex: 1;
@@ -18,7 +18,7 @@ h3 {
.app-container {
display: flex;
flex-wrap: wrap;
- margin: 0 -1rem;
+ margin-left: -1rem;
padding-bottom: 2rem;
.sp-container {
diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.ts b/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.ts
index fa095649c5..2abb61aafb 100644
--- a/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.ts
+++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/application-grid/application-grid.component.ts
@@ -18,22 +18,24 @@ export class ApplicationGridComponent implements OnInit {
public loading$: Observable
= this.loadingSubject.asObservable();
public OIDCAppType: any = OIDCAppType;
- constructor(private mgmtService: ManagementService) { }
+ constructor(private mgmtService: ManagementService) {}
- public ngOnInit(): void {
+ ngOnInit(): void {
this.loadApps();
}
public loadApps(): void {
- from(this.mgmtService.listApps(this.projectId, 100, 0)).pipe(
- map(resp => {
- return resp.resultList;
- }),
- // catchError(() => of([])),
- finalize(() => this.loadingSubject.next(false)),
- ).subscribe((apps) => {
- this.appsSubject.next(apps as App.AsObject[]);
- });
+ from(this.mgmtService.listApps(this.projectId, 100, 0))
+ .pipe(
+ map((resp) => {
+ return resp.resultList;
+ }),
+ // catchError(() => of([])),
+ finalize(() => this.loadingSubject.next(false)),
+ )
+ .subscribe((apps) => {
+ this.appsSubject.next(apps as App.AsObject[]);
+ });
}
public closeView(): void {
diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/applications/applications.component.ts b/console/src/app/pages/projects/owned-projects/owned-project-detail/applications/applications.component.ts
index b8cad98256..ac82015965 100644
--- a/console/src/app/pages/projects/owned-projects/owned-project-detail/applications/applications.component.ts
+++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/applications/applications.component.ts
@@ -26,7 +26,7 @@ export class ApplicationsComponent implements AfterViewInit, OnInit {
public AppState: any = AppState;
constructor(private mgmtService: ManagementService) {}
- public ngOnInit(): void {
+ ngOnInit(): void {
this.dataSource = new ProjectApplicationsDataSource(this.mgmtService);
this.dataSource.loadApps(this.projectId, 0, 25);
}
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 d56c597a2a..faabf3a5e2 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
@@ -1,105 +1,179 @@
-
-
+ [isInactive]="project?.state === ProjectState.PROJECT_STATE_INACTIVE"
+ [hasContributors]="true"
+ stateTooltip="{{ 'PROJECT.STATE.' + project?.state | translate }}"
+ [hasActions]="true"
+>
+
-
-
-
-
-
+
- {{'PROJECT.PAGES.ZITADELPROJECT' | translate}}
+ {{ 'PROJECT.PAGES.ZITADELPROJECT' | translate }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{'PROJECT.PAGES.PRIVATELABEL.TITLE' | translate}}
-
- {{'PROJECT.PAGES.PRIVATELABEL.'+project.privateLabelingSetting+'.TITLE' |
- translate}}
-
-
-
-
- {{'PROJECT.ROLE.ASSERTION' | translate}}
- {{'PROJECT.ROLE.ASSERTION_DESCRIPTION' | translate}}
-
- {{'PROJECT.ROLE.CHECK' | translate}}
- {{'PROJECT.ROLE.CHECK_DESCRIPTION' | translate}}
-
- {{'PROJECT.HAS_PROJECT' | translate}}
- {{'PROJECT.HAS_PROJECT_DESCRIPTION' | translate}}
-
-
-
{{'ACTIONS.SAVE' | translate}}
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
{{ 'PROJECT.PAGES.PRIVATELABEL.TITLE' | translate }}
+
+ {{
+ 'PROJECT.PAGES.PRIVATELABEL.' + project.privateLabelingSetting + '.TITLE' | translate
+ }}
+
+
+
+
+
+
+ {{ 'PROJECT.ROLE.ASSERTION' | translate }}
+ {{ 'PROJECT.ROLE.ASSERTION_DESCRIPTION' | translate }}
+
+ {{ 'PROJECT.ROLE.CHECK' | translate }}
+ {{ 'PROJECT.ROLE.CHECK_DESCRIPTION' | translate }}
+
+ {{ 'PROJECT.HAS_PROJECT' | translate }}
+ {{ 'PROJECT.HAS_PROJECT_DESCRIPTION' | translate }}
+
+
+ {{ 'ACTIONS.SAVE' | translate }}
+
+
+
+
+
+
+
+ {{ 'PROJECT.ROLE.TITLE' | translate }}
+ {{ 'PROJECT.ROLE.DESCRIPTION' | translate }}
+
+
+
+
+
+ {{ 'PROJECT.GRANT.TITLE' | translate }}
+ {{ 'PROJECT.GRANT.DESCRIPTION' | translate }}
+
+
+
+ {{ 'GRANTS.TITLE' | translate }}
+ {{ 'GRANTS.DESC' | translate }}
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.scss b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.scss
index a2a2374b65..7b553d91f4 100644
--- a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.scss
+++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.scss
@@ -12,6 +12,14 @@
color: $warn-color;
}
+ .section-h2 {
+ font-weight: 400;
+ font-size: 16px;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ margin: 2rem 0 1rem 0;
+ }
+
.project-detail-privatelabel-info {
display: flex;
flex-direction: column;
diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.ts b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.ts
index 26c0b9736a..0c336580d7 100644
--- a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.ts
+++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.ts
@@ -5,12 +5,13 @@ import { MatTableDataSource } from '@angular/material/table';
import { ActivatedRoute, Params, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { BehaviorSubject, from, Observable, of } from 'rxjs';
-import { catchError, finalize, map } from 'rxjs/operators';
+import { catchError, finalize, map, take } from 'rxjs/operators';
import { CreationType, MemberCreateDialogComponent } from 'src/app/modules/add-member-dialog/member-create-dialog.component';
import { ChangeType } from 'src/app/modules/changes/changes.component';
import {
- ProjectPrivateLabelingDialogComponent,
+ ProjectPrivateLabelingDialogComponent,
} from 'src/app/modules/project-private-labeling-dialog/project-private-labeling-dialog.component';
+import { SidenavSetting } from 'src/app/modules/sidenav/sidenav.component';
import { UserGrantContext } from 'src/app/modules/user-grants/user-grants-datasource';
import { WarnDialogComponent } from 'src/app/modules/warn-dialog/warn-dialog.component';
import { App } from 'src/app/proto/generated/zitadel/app_pb';
@@ -26,6 +27,11 @@ import { NameDialogComponent } from '../../../../modules/name-dialog/name-dialog
const ROUTEPARAM = 'projectid';
+const GENERAL: SidenavSetting = { id: 'general', i18nKey: 'USER.SETTINGS.GENERAL' };
+const ROLES: SidenavSetting = { id: 'roles', i18nKey: 'MENU.ROLES' };
+const PROJECTGRANTS: SidenavSetting = { id: 'projectgrants', i18nKey: 'MENU.PROJECTGRANTS' };
+const GRANTS: SidenavSetting = { id: 'grants', i18nKey: 'MENU.GRANTS' };
+
@Component({
selector: 'cnsl-owned-project-detail',
templateUrl: './owned-project-detail.component.html',
@@ -56,6 +62,8 @@ export class OwnedProjectDetailComponent implements OnInit {
public loading$: Observable = this.loadingSubject.asObservable();
public refreshChanges$: EventEmitter = new EventEmitter();
+ public settingsList: SidenavSetting[] = [GENERAL, ROLES, PROJECTGRANTS, GRANTS];
+ public currentSetting: string | undefined = '';
constructor(
public translate: TranslateService,
private route: ActivatedRoute,
@@ -65,7 +73,14 @@ export class OwnedProjectDetailComponent implements OnInit {
private dialog: MatDialog,
private router: Router,
private breadcrumbService: BreadcrumbService,
- ) {}
+ ) {
+ route.queryParams.pipe(take(1)).subscribe((params: Params) => {
+ const { id } = params;
+ if (id) {
+ this.currentSetting = id;
+ }
+ });
+ }
public ngOnInit(): void {
const projectId = this.route.snapshot.paramMap.get(ROUTEPARAM);
@@ -120,11 +135,6 @@ export class OwnedProjectDetailComponent implements OnInit {
this.isZitadel = iam.iamProjectId === this.projectId;
const breadcrumbs = [
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.module.ts b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.module.ts
index 4aac078646..98c899479a 100644
--- a/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.module.ts
+++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.module.ts
@@ -24,6 +24,7 @@ import { MetaLayoutModule } from 'src/app/modules/meta-layout/meta-layout.module
import { PaginatorModule } from 'src/app/modules/paginator/paginator.module';
import { ProjectRolesTableModule } from 'src/app/modules/project-roles-table/project-roles-table.module';
import { RefreshTableModule } from 'src/app/modules/refresh-table/refresh-table.module';
+import { SidenavModule } from 'src/app/modules/sidenav/sidenav.module';
import { TopViewModule } from 'src/app/modules/top-view/top-view.module';
import { UserGrantsModule } from 'src/app/modules/user-grants/user-grants.module';
import { WarnDialogModule } from 'src/app/modules/warn-dialog/warn-dialog.module';
@@ -31,6 +32,8 @@ import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.mod
import { LocalizedDatePipeModule } from 'src/app/pipes/localized-date-pipe/localized-date-pipe.module';
import { TimestampToDatePipeModule } from 'src/app/pipes/timestamp-to-date-pipe/timestamp-to-date-pipe.module';
+import { ProjectGrantsModule } from '../project-grants/project-grants.module';
+import { ProjectRolesModule } from '../project-roles/project-roles.module';
import { ApplicationGridComponent } from './application-grid/application-grid.component';
import { ApplicationsComponent } from './applications/applications.component';
import { OwnedProjectDetailRoutingModule } from './owned-project-detail-routing.module';
@@ -54,14 +57,17 @@ import { OwnedProjectDetailComponent } from './owned-project-detail.component';
WarnDialogModule,
MatTooltipModule,
ProjectRolesTableModule,
+ ProjectRolesModule,
HasRolePipeModule,
UserGrantsModule,
TimestampToDatePipeModule,
+ SidenavModule,
MatTableModule,
InputModule,
CardModule,
PaginatorModule,
MatRippleModule,
+ ProjectGrantsModule,
TopViewModule,
MatCheckboxModule,
MatSelectModule,
diff --git a/console/src/app/pages/projects/owned-projects/owned-projects-routing.module.ts b/console/src/app/pages/projects/owned-projects/owned-projects-routing.module.ts
index a4dc63da8d..382cbaa01a 100644
--- a/console/src/app/pages/projects/owned-projects/owned-projects-routing.module.ts
+++ b/console/src/app/pages/projects/owned-projects/owned-projects-routing.module.ts
@@ -2,7 +2,6 @@ import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { RoleGuard } from 'src/app/guards/role.guard';
import { ProjectType } from 'src/app/modules/project-members/project-members-datasource';
-import { UserGrantContext } from 'src/app/modules/user-grants/user-grants-datasource';
const routes: Routes = [
{
@@ -44,15 +43,6 @@ const routes: Routes = [
(m) => m.ProjectGrantsModule,
),
},
- {
- path: 'grants',
- loadChildren: () => import('src/app/pages/grants/grants.module').then((m) => m.GrantsModule),
- canActivate: [RoleGuard],
- data: {
- roles: ['user.grant.read'],
- context: UserGrantContext.OWNED_PROJECT,
- },
- },
{
path: 'roles',
loadChildren: () =>
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 5ae29b8439..2ec2e29736 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
@@ -11,8 +11,8 @@ import { ManagementService } from 'src/app/services/mgmt.service';
import { ToastService } from 'src/app/services/toast.service';
import {
- ProjectGrantMembersCreateDialogComponent,
- ProjectGrantMembersCreateDialogExportType,
+ ProjectGrantMembersCreateDialogComponent,
+ ProjectGrantMembersCreateDialogExportType,
} from './project-grant-members-create-dialog/project-grant-members-create-dialog.component';
import { ProjectGrantMembersDataSource } from './project-grant-members-datasource';
@@ -74,11 +74,6 @@ export class ProjectGrantDetailComponent {
this.grant = resp.projectGrant;
const breadcrumbs = [
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
diff --git a/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.html b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.html
index ef24b0a5fb..b8bcb74e5c 100644
--- a/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.html
+++ b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.html
@@ -1,85 +1,117 @@
-
{{'PROJECT.GRANT.TITLE' | translate}}
-
{{'PROJECT.GRANT.DESCRIPTION' | translate}}
-
-
-
+
-
+ [indeterminate]="selection.hasValue() && !isAllSelected()"
+ >
|
+ [disabled]="(['project.grant.write$', 'project.grant.write:' + projectId] | hasRole | async) === false"
+ color="primary"
+ (click)="$event.stopPropagation()"
+ (change)="$event ? selection.toggle(row) : null"
+ [checked]="selection.isSelected(row)"
+ >
|
- {{ 'PROJECT.GRANT.GRANTEDORG' | translate }} |
-
- {{grant.grantedOrgName}} |
+ {{ 'PROJECT.GRANT.GRANTEDORG' | translate }} |
+
+ {{ grant.grantedOrgName }}
+ |
- {{'PROJECT.GRANT.CREATIONDATE' | translate}} |
-
- {{grant.details.creationDate | timestampToDate | localizedDate: 'dd. MMM, HH:mm' }}
+ | {{ 'PROJECT.GRANT.CREATIONDATE' | translate }} |
+
+ {{ grant.details.creationDate | timestampToDate | localizedDate: 'dd. MMM, HH:mm' }}
|
- {{ 'PROJECT.GRANT.CHANGEDATE' | translate }} |
-
- {{grant.details.changeDate | timestampToDate | localizedDate: 'dd. MMM, HH:mm' }}
+ | {{ 'PROJECT.GRANT.CHANGEDATE' | translate }} |
+
+ {{ grant.details.changeDate | timestampToDate | localizedDate: 'dd. MMM, HH:mm' }}
|
- {{ 'PROJECT.GRANT.STATE' | translate }} |
-
-
- {{ 'PROJECT.GRANT.STATES.'+grant.state | translate }}
+ | {{ 'PROJECT.GRANT.STATE' | translate }} |
+
+
+ {{ 'PROJECT.GRANT.STATES.' + grant.state | translate }}
|
- {{ 'PROJECT.GRANT.ROLENAMESLIST' | translate }}
- |
+ {{ 'PROJECT.GRANT.ROLENAMESLIST' | translate }} |
- {{ role }}
+ {{ role }}
|
@@ -89,10 +121,14 @@
|
-
+ mat-icon-button
+ color="warn"
+ matTooltip="{{ 'ACTIONS.DELETE' | translate }}"
+ (click)="deleteGrant(grant)"
+ >
@@ -100,21 +136,26 @@
|
-
-
+
- {{'PROJECT.GRANT.EMPTY' | translate}}
+ {{ 'PROJECT.GRANT.EMPTY' | translate }}
-
+
-
\ No newline at end of file
+
diff --git a/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.scss b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.scss
index 07ecb2c398..a79d61a54d 100644
--- a/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.scss
+++ b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.scss
@@ -1,6 +1,4 @@
.project-grants-wrapper {
- padding-top: 2rem;
-
h1 {
margin: 0;
}
@@ -11,8 +9,6 @@
}
.project-grants {
- padding-top: 2rem;
-
.role {
display: inline-block;
border-radius: 0.5rem;
diff --git a/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.ts b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.ts
index c4681e98a6..f044ffdb50 100644
--- a/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.ts
+++ b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.ts
@@ -1,15 +1,14 @@
import { animate, state, style, transition, trigger } from '@angular/animations';
import { SelectionModel } from '@angular/cdk/collections';
-import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';
+import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { MatSelectChange } from '@angular/material/select';
import { MatTable } from '@angular/material/table';
-import { ActivatedRoute, Router } from '@angular/router';
+import { Router } from '@angular/router';
import { tap } from 'rxjs/operators';
import { PaginatorComponent } from 'src/app/modules/paginator/paginator.component';
import { WarnDialogComponent } from 'src/app/modules/warn-dialog/warn-dialog.component';
import { GrantedProject, ProjectGrantState, Role } from 'src/app/proto/generated/zitadel/project_pb';
-import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
import { ManagementService } from 'src/app/services/mgmt.service';
import { ToastService } from 'src/app/services/toast.service';
@@ -30,7 +29,7 @@ const ROUTEPARAM = 'projectid';
],
})
export class ProjectGrantsComponent implements OnInit, AfterViewInit {
- public projectId: string = '';
+ @Input() public projectId: string = '';
@ViewChild(PaginatorComponent) public paginator!: PaginatorComponent;
@ViewChild(MatTable) public table!: MatTable
;
public dataSource!: ProjectGrantsDataSource;
@@ -43,35 +42,9 @@ export class ProjectGrantsComponent implements OnInit, AfterViewInit {
constructor(
private mgmtService: ManagementService,
private toast: ToastService,
- private route: ActivatedRoute,
private dialog: MatDialog,
- private breadcrumbService: BreadcrumbService,
private router: Router,
- ) {
- const projectId = this.route.snapshot.paramMap.get(ROUTEPARAM);
- if (projectId) {
- this.projectId = projectId;
-
- const breadcrumbs = [
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
- new Breadcrumb({
- type: BreadcrumbType.ORG,
- routerLink: ['/org'],
- }),
- new Breadcrumb({
- type: BreadcrumbType.PROJECT,
- name: '',
- param: { key: ROUTEPARAM, value: projectId },
- routerLink: ['/projects', projectId],
- }),
- ];
- this.breadcrumbService.setBreadcrumb(breadcrumbs);
- }
- }
+ ) {}
public gotoRouterLink(rL: any) {
this.router.navigate(rL);
diff --git a/console/src/app/pages/projects/owned-projects/project-grants/project-grants.module.ts b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.module.ts
index 9f06881a4a..56adbb0fa9 100644
--- a/console/src/app/pages/projects/owned-projects/project-grants/project-grants.module.ts
+++ b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.module.ts
@@ -7,6 +7,7 @@ import { MatIconModule } from '@angular/material/icon';
import { MatSelectModule } from '@angular/material/select';
import { MatTableModule } from '@angular/material/table';
import { MatTooltipModule } from '@angular/material/tooltip';
+import { RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { ActionKeysModule } from 'src/app/modules/action-keys/action-keys.module';
import { InputModule } from 'src/app/modules/input/input.module';
@@ -18,7 +19,6 @@ import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.mod
import { LocalizedDatePipeModule } from 'src/app/pipes/localized-date-pipe/localized-date-pipe.module';
import { TimestampToDatePipeModule } from 'src/app/pipes/timestamp-to-date-pipe/timestamp-to-date-pipe.module';
-import { ProjectGrantsRoutingModule } from './project-grants-routing.module';
import { ProjectGrantsComponent } from './project-grants.component';
@NgModule({
@@ -26,12 +26,12 @@ import { ProjectGrantsComponent } from './project-grants.component';
imports: [
CommonModule,
FormsModule,
- ProjectGrantsRoutingModule,
TimestampToDatePipeModule,
TableActionsModule,
MatTooltipModule,
MatCheckboxModule,
RefreshTableModule,
+ RouterModule,
LocalizedDatePipeModule,
ProjectRoleChipModule,
MatButtonModule,
@@ -44,5 +44,6 @@ import { ProjectGrantsComponent } from './project-grants.component';
MatSelectModule,
PaginatorModule,
],
+ exports: [ProjectGrantsComponent],
})
export class ProjectGrantsModule {}
diff --git a/console/src/app/pages/projects/owned-projects/project-roles/project-role-detail/project-role-detail.component.spec.ts b/console/src/app/pages/projects/owned-projects/project-roles/project-role-detail/project-role-detail.component.spec.ts
deleted file mode 100644
index 52aa291f50..0000000000
--- a/console/src/app/pages/projects/owned-projects/project-roles/project-role-detail/project-role-detail.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
-
-import { ProjectRoleDetailComponent } from './project-role-detail.component';
-
-describe('ProjectRoleDetailComponent', () => {
- let component: ProjectRoleDetailComponent;
- let fixture: ComponentFixture;
-
- beforeEach(waitForAsync(() => {
- TestBed.configureTestingModule({
- declarations: [ProjectRoleDetailComponent],
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(ProjectRoleDetailComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/console/src/app/pages/projects/owned-projects/project-roles/project-roles.component.html b/console/src/app/pages/projects/owned-projects/project-roles/project-roles.component.html
index 88b1f2f64b..9dbaca6489 100644
--- a/console/src/app/pages/projects/owned-projects/project-roles/project-roles.component.html
+++ b/console/src/app/pages/projects/owned-projects/project-roles/project-roles.component.html
@@ -1,11 +1,14 @@
-
{{'PROJECT.ROLE.TITLE' | translate}}
-
{{'PROJECT.ROLE.DESCRIPTION' | translate}}
+
{{ 'PROJECT.ROLE.TITLE' | translate }}
+
{{ 'PROJECT.ROLE.DESCRIPTION' | translate }}
-
+
-
\ No newline at end of file
+
diff --git a/console/src/app/pages/projects/owned-projects/project-roles/project-roles.component.ts b/console/src/app/pages/projects/owned-projects/project-roles/project-roles.component.ts
index 784faa1d5f..99eb7e6b83 100644
--- a/console/src/app/pages/projects/owned-projects/project-roles/project-roles.component.ts
+++ b/console/src/app/pages/projects/owned-projects/project-roles/project-roles.component.ts
@@ -1,5 +1,4 @@
-import { Component } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
+import { Component, Input } from '@angular/core';
import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
const ROUTEPARAM = 'projectid';
@@ -10,31 +9,21 @@ const ROUTEPARAM = 'projectid';
styleUrls: ['./project-roles.component.scss'],
})
export class ProjectRolesComponent {
- public projectId: string = '';
+ @Input() public projectId: string = '';
- constructor(private route: ActivatedRoute, private breadcrumbService: BreadcrumbService) {
- const projectId = this.route.snapshot.paramMap.get(ROUTEPARAM);
- if (projectId) {
- this.projectId = projectId;
-
- const breadcrumbs = [
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
- new Breadcrumb({
- type: BreadcrumbType.ORG,
- routerLink: ['/org'],
- }),
- new Breadcrumb({
- type: BreadcrumbType.PROJECT,
- name: '',
- param: { key: ROUTEPARAM, value: projectId },
- routerLink: ['/projects', projectId],
- }),
- ];
- this.breadcrumbService.setBreadcrumb(breadcrumbs);
- }
+ constructor(private breadcrumbService: BreadcrumbService) {
+ const breadcrumbs = [
+ new Breadcrumb({
+ type: BreadcrumbType.ORG,
+ routerLink: ['/org'],
+ }),
+ new Breadcrumb({
+ type: BreadcrumbType.PROJECT,
+ name: '',
+ param: { key: ROUTEPARAM, value: this.projectId },
+ routerLink: ['/projects', this.projectId],
+ }),
+ ];
+ this.breadcrumbService.setBreadcrumb(breadcrumbs);
}
}
diff --git a/console/src/app/pages/projects/owned-projects/project-roles/project-roles.module.ts b/console/src/app/pages/projects/owned-projects/project-roles/project-roles.module.ts
index 1279e37e81..823ff89599 100644
--- a/console/src/app/pages/projects/owned-projects/project-roles/project-roles.module.ts
+++ b/console/src/app/pages/projects/owned-projects/project-roles/project-roles.module.ts
@@ -8,15 +8,12 @@ import { InputModule } from 'src/app/modules/input/input.module';
import { ProjectRolesTableModule } from 'src/app/modules/project-roles-table/project-roles-table.module';
import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.module';
-import { ProjectRoleDetailComponent } from './project-role-detail/project-role-detail.component';
-import { ProjectRolesRoutingModule } from './project-roles-routing.module';
import { ProjectRolesComponent } from './project-roles.component';
@NgModule({
- declarations: [ProjectRolesComponent, ProjectRoleDetailComponent],
+ declarations: [ProjectRolesComponent],
imports: [
CommonModule,
- ProjectRolesRoutingModule,
HasRoleModule,
ProjectRolesTableModule,
ReactiveFormsModule,
diff --git a/console/src/app/pages/projects/project-create/project-create.component.ts b/console/src/app/pages/projects/project-create/project-create.component.ts
index 63ffdc32e8..56809860e7 100644
--- a/console/src/app/pages/projects/project-create/project-create.component.ts
+++ b/console/src/app/pages/projects/project-create/project-create.component.ts
@@ -21,16 +21,11 @@ export class ProjectCreateComponent {
private _location: Location,
breadcrumbService: BreadcrumbService,
) {
- const iambread = new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- });
const bread: Breadcrumb = {
type: BreadcrumbType.ORG,
routerLink: ['/org'],
};
- breadcrumbService.setBreadcrumb([iambread, bread]);
+ breadcrumbService.setBreadcrumb([bread]);
}
public createSteps: number = 1;
@@ -40,7 +35,7 @@ export class ProjectCreateComponent {
this.mgmtService
.addProject(this.project)
.then((resp: AddProjectResponse.AsObject) => {
- this.toast.showInfo('PROJECT.TOAST.CREATED', true)
+ this.toast.showInfo('PROJECT.TOAST.CREATED', true);
this.router.navigate(['projects', resp.id]);
})
.catch((error) => {
diff --git a/console/src/app/pages/projects/projects.component.ts b/console/src/app/pages/projects/projects.component.ts
index 3a7e700ad0..f308a6bb65 100644
--- a/console/src/app/pages/projects/projects.component.ts
+++ b/console/src/app/pages/projects/projects.component.ts
@@ -34,16 +34,11 @@ export class ProjectsComponent {
this.zitadelProjectId = iam.iamProjectId;
});
- const iambread = new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- });
const bread: Breadcrumb = {
type: BreadcrumbType.ORG,
routerLink: ['/org'],
};
- breadcrumbService.setBreadcrumb([iambread, bread]);
+ breadcrumbService.setBreadcrumb([bread]);
}
public addProject(): void {
diff --git a/console/src/app/pages/user-grant-create/user-grant-create.component.ts b/console/src/app/pages/user-grant-create/user-grant-create.component.ts
index fbda919ff2..a2e9e16f42 100644
--- a/console/src/app/pages/user-grant-create/user-grant-create.component.ts
+++ b/console/src/app/pages/user-grant-create/user-grant-create.component.ts
@@ -50,11 +50,6 @@ export class UserGrantCreateComponent implements OnDestroy {
breadcrumbService: BreadcrumbService,
) {
breadcrumbService.setBreadcrumb([
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
@@ -122,7 +117,7 @@ export class UserGrantCreateComponent implements OnDestroy {
const prom = this.userIds.map((id) => this.userService.addUserGrant(id, this.rolesList, this.project.id));
Promise.all(prom)
.then(() => {
- this.toast.showInfo('PROJECT.GRANT.TOAST.PROJECTGRANTADDED', true);
+ this.toast.showInfo('GRANTS.TOAST.UPDATED', true);
this.close();
})
.catch((error: any) => {
@@ -136,7 +131,7 @@ export class UserGrantCreateComponent implements OnDestroy {
);
Promise.all(promp)
.then(() => {
- this.toast.showInfo('PROJECT.GRANT.TOAST.PROJECTGRANTUSERGRANTADDED', true);
+ this.toast.showInfo('GRANTS.TOAST.UPDATED', true);
this.close();
})
.catch((error: any) => {
@@ -156,7 +151,7 @@ export class UserGrantCreateComponent implements OnDestroy {
);
Promise.all(promu)
.then(() => {
- this.toast.showInfo('PROJECT.GRANT.TOAST.PROJECTGRANTUSERGRANTADDED', true);
+ this.toast.showInfo('GRANTS.TOAST.UPDATED', true);
this.close();
})
.catch((error: any) => {
@@ -181,7 +176,7 @@ export class UserGrantCreateComponent implements OnDestroy {
);
Promise.all(promn)
.then(() => {
- this.toast.showInfo('PROJECT.GRANT.TOAST.PROJECTGRANTUSERGRANTADDED', true);
+ this.toast.showInfo('GRANTS.TOAST.UPDATED', true);
this.close();
})
.catch((error: any) => {
diff --git a/console/src/app/pages/users/user-create-machine/user-create-machine.component.ts b/console/src/app/pages/users/user-create-machine/user-create-machine.component.ts
index 29c2c5286f..f14eac765b 100644
--- a/console/src/app/pages/users/user-create-machine/user-create-machine.component.ts
+++ b/console/src/app/pages/users/user-create-machine/user-create-machine.component.ts
@@ -27,11 +27,6 @@ export class UserCreateMachineComponent implements OnDestroy {
breadcrumbService: BreadcrumbService,
) {
breadcrumbService.setBreadcrumb([
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
diff --git a/console/src/app/pages/users/user-create/user-create.component.ts b/console/src/app/pages/users/user-create/user-create.component.ts
index 86b7ec2222..9761f796a6 100644
--- a/console/src/app/pages/users/user-create/user-create.component.ts
+++ b/console/src/app/pages/users/user-create/user-create.component.ts
@@ -66,11 +66,6 @@ export class UserCreateComponent implements OnDestroy {
breadcrumbService: BreadcrumbService,
) {
breadcrumbService.setBreadcrumb([
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
diff --git a/console/src/app/pages/users/user-detail/password/password.component.ts b/console/src/app/pages/users/user-detail/password/password.component.ts
index ef987dac4e..529bf119bf 100644
--- a/console/src/app/pages/users/user-detail/password/password.component.ts
+++ b/console/src/app/pages/users/user-detail/password/password.component.ts
@@ -51,11 +51,6 @@ export class PasswordComponent implements OnDestroy {
this.userId = id;
breadcrumbService.setBreadcrumb([
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
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 43eb162033..4be40ed66d 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
@@ -22,10 +22,10 @@ import { ResendEmailDialogComponent } from '../auth-user-detail/resend-email-dia
const GENERAL: SidenavSetting = { id: 'general', i18nKey: 'USER.SETTINGS.GENERAL' };
const GRANTS: SidenavSetting = { id: 'grants', i18nKey: 'USER.SETTINGS.USERGRANTS' };
-const METADATA: SidenavSetting = { id: 'metadata', i18nKey: 'USER.SETTINGS.METADATA'};
+const METADATA: SidenavSetting = { id: 'metadata', i18nKey: 'USER.SETTINGS.METADATA' };
const IDP: SidenavSetting = { id: 'idp', i18nKey: 'USER.SETTINGS.IDP' };
const PASSWORDLESS: SidenavSetting = { id: 'passwordless', i18nKey: 'USER.SETTINGS.PASSWORDLESS' };
-const MFA: SidenavSetting = { id: 'mfa', i18nKey: 'USER.SETTINGS.MFA'};
+const MFA: SidenavSetting = { id: 'mfa', i18nKey: 'USER.SETTINGS.MFA' };
const PERSONALACCESSTOKEN: SidenavSetting = { id: 'pat', i18nKey: 'USER.SETTINGS.PAT' };
const KEYS: SidenavSetting = { id: 'keys', i18nKey: 'USER.SETTINGS.KEYS' };
const MEMBERSHIPS: SidenavSetting = { id: 'memberships', i18nKey: 'USER.SETTINGS.MEMBERSHIPS' };
@@ -69,11 +69,6 @@ export class UserDetailComponent implements OnInit {
breadcrumbService: BreadcrumbService,
) {
breadcrumbService.setBreadcrumb([
- new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- }),
new Breadcrumb({
type: BreadcrumbType.ORG,
routerLink: ['/org'],
diff --git a/console/src/app/pages/users/user-list/user-list.component.ts b/console/src/app/pages/users/user-list/user-list.component.ts
index 37a1ae9905..51151ffa1b 100644
--- a/console/src/app/pages/users/user-list/user-list.component.ts
+++ b/console/src/app/pages/users/user-list/user-list.component.ts
@@ -24,15 +24,10 @@ export class UserListComponent {
}
});
- const iambread = new Breadcrumb({
- type: BreadcrumbType.IAM,
- name: 'IAM',
- routerLink: ['/system'],
- });
const bread: Breadcrumb = {
type: BreadcrumbType.ORG,
routerLink: ['/org'],
};
- breadcrumbService.setBreadcrumb([iambread, bread]);
+ breadcrumbService.setBreadcrumb([bread]);
}
}
diff --git a/console/src/app/services/admin.service.ts b/console/src/app/services/admin.service.ts
index 8b3d9e6500..1b7e71c3a0 100644
--- a/console/src/app/services/admin.service.ts
+++ b/console/src/app/services/admin.service.ts
@@ -39,6 +39,8 @@ import {
GetDefaultDomainClaimedMessageTextResponse,
GetDefaultInitMessageTextRequest,
GetDefaultInitMessageTextResponse,
+ GetDefaultLanguageRequest,
+ GetDefaultLanguageResponse,
GetDefaultLoginTextsRequest,
GetDefaultLoginTextsResponse,
GetDefaultPasswordlessRegistrationMessageTextRequest,
@@ -120,6 +122,8 @@ import {
SetDefaultDomainClaimedMessageTextResponse,
SetDefaultInitMessageTextRequest,
SetDefaultInitMessageTextResponse,
+ SetDefaultLanguageRequest,
+ SetDefaultLanguageResponse,
SetDefaultPasswordlessRegistrationMessageTextRequest,
SetDefaultPasswordlessRegistrationMessageTextResponse,
SetDefaultPasswordResetMessageTextRequest,
@@ -415,6 +419,20 @@ export class AdminService {
return this.grpcService.admin.updatePasswordAgePolicy(req, null).then((resp) => resp.toObject());
}
+ /* default language */
+
+ public getDefaultLanguage(): Promise {
+ const req = new GetDefaultLanguageRequest();
+ return this.grpcService.admin.getDefaultLanguage(req, null).then((resp) => resp.toObject());
+ }
+
+ public setDefaultLanguage(language: string): Promise {
+ const req = new SetDefaultLanguageRequest();
+ req.setLanguage(language);
+
+ return this.grpcService.admin.setDefaultLanguage(req, null).then((resp) => resp.toObject());
+ }
+
/* lockout */
public getLockoutPolicy(): Promise {
diff --git a/console/src/app/services/breadcrumb.service.ts b/console/src/app/services/breadcrumb.service.ts
index 39bdeaa1a8..3a87c64ca3 100644
--- a/console/src/app/services/breadcrumb.service.ts
+++ b/console/src/app/services/breadcrumb.service.ts
@@ -4,7 +4,7 @@ import { BehaviorSubject, combineLatest, map } from 'rxjs';
import { ManagementService } from './mgmt.service';
export enum BreadcrumbType {
- IAM,
+ INSTANCE,
ORG,
PROJECT,
GRANTEDPROJECT,
diff --git a/console/src/app/services/keyboard-shortcuts/keyboard-shortcuts.service.ts b/console/src/app/services/keyboard-shortcuts/keyboard-shortcuts.service.ts
index f725dc8fd6..103baa4eb9 100644
--- a/console/src/app/services/keyboard-shortcuts/keyboard-shortcuts.service.ts
+++ b/console/src/app/services/keyboard-shortcuts/keyboard-shortcuts.service.ts
@@ -9,11 +9,11 @@ import {
ACTIONS,
DOMAINS,
HOME,
+ INSTANCE,
KeyboardShortcut,
ME,
ORG,
PROJECTS,
- SYSTEM,
USERGRANTS,
USERS,
} from './keyboard-shortcuts';
@@ -59,8 +59,8 @@ export class KeyboardShortcutsService implements OnDestroy {
}
}
if (firstKey.code === 'KeyG' && secondKey.code === 'KeyS') {
- if (this.hasPermission(SYSTEM)) {
- this.router.navigate(SYSTEM.link);
+ if (this.hasPermission(INSTANCE)) {
+ this.router.navigate(INSTANCE.link);
}
}
if (firstKey.code === 'KeyG' && secondKey.code === 'KeyO') {
diff --git a/console/src/app/services/keyboard-shortcuts/keyboard-shortcuts.ts b/console/src/app/services/keyboard-shortcuts/keyboard-shortcuts.ts
index 101b190444..b0ca9d863a 100644
--- a/console/src/app/services/keyboard-shortcuts/keyboard-shortcuts.ts
+++ b/console/src/app/services/keyboard-shortcuts/keyboard-shortcuts.ts
@@ -11,9 +11,9 @@ export const HOME: KeyboardShortcut = {
keyboardKeys: ['g', 'h'],
};
-export const SYSTEM: KeyboardShortcut = {
+export const INSTANCE: KeyboardShortcut = {
i18nKey: 'KEYBOARDSHORTCUTS.SHORTCUTS.SYSTEM',
- link: ['/system'],
+ link: ['/instance'],
keyboardKeys: ['g', 's'],
permissions: ['iam.read'],
};
@@ -66,7 +66,7 @@ export const DOMAINS: KeyboardShortcut = {
permissions: ['org.read'],
};
-export const SIDEWIDESHORTCUTS = [ME, HOME, SYSTEM, ORG, PROJECTS, USERS, USERGRANTS, ACTIONS, DOMAINS];
+export const SIDEWIDESHORTCUTS = [ME, HOME, INSTANCE, ORG, PROJECTS, USERS, USERGRANTS, ACTIONS, DOMAINS];
export const ORGSWITCHER: KeyboardShortcut = {
i18nKey: 'KEYBOARDSHORTCUTS.SHORTCUTS.ORGSWITCHER',
diff --git a/console/src/app/services/mgmt.service.ts b/console/src/app/services/mgmt.service.ts
index ce928f1fc5..1d6e19a06f 100644
--- a/console/src/app/services/mgmt.service.ts
+++ b/console/src/app/services/mgmt.service.ts
@@ -10,423 +10,423 @@ import { KeyType } from '../proto/generated/zitadel/auth_n_key_pb';
import { ChangeQuery } from '../proto/generated/zitadel/change_pb';
import { IDPOwnerType } from '../proto/generated/zitadel/idp_pb';
import {
- ActionQuery,
- ActivateCustomLabelPolicyRequest,
- ActivateCustomLabelPolicyResponse,
- AddAPIAppRequest,
- AddAPIAppResponse,
- AddAppKeyRequest,
- AddAppKeyResponse,
- AddCustomLabelPolicyRequest,
- AddCustomLabelPolicyResponse,
- AddCustomLockoutPolicyRequest,
- AddCustomLockoutPolicyResponse,
- AddCustomLoginPolicyRequest,
- AddCustomLoginPolicyResponse,
- AddCustomPasswordAgePolicyRequest,
- AddCustomPasswordAgePolicyResponse,
- AddCustomPasswordComplexityPolicyRequest,
- AddCustomPasswordComplexityPolicyResponse,
- AddCustomPrivacyPolicyRequest,
- AddCustomPrivacyPolicyResponse,
- AddHumanUserRequest,
- AddHumanUserResponse,
- AddIDPToLoginPolicyRequest,
- AddIDPToLoginPolicyResponse,
- AddMachineKeyRequest,
- AddMachineKeyResponse,
- AddMachineUserRequest,
- AddMachineUserResponse,
- AddMultiFactorToLoginPolicyRequest,
- AddMultiFactorToLoginPolicyResponse,
- AddOIDCAppRequest,
- AddOIDCAppResponse,
- AddOrgDomainRequest,
- AddOrgDomainResponse,
- AddOrgJWTIDPRequest,
- AddOrgJWTIDPResponse,
- AddOrgMemberRequest,
- AddOrgMemberResponse,
- AddOrgOIDCIDPRequest,
- AddOrgOIDCIDPResponse,
- AddOrgRequest,
- AddOrgResponse,
- AddPersonalAccessTokenRequest,
- AddPersonalAccessTokenResponse,
- AddProjectGrantMemberRequest,
- AddProjectGrantMemberResponse,
- AddProjectGrantRequest,
- AddProjectGrantResponse,
- AddProjectMemberRequest,
- AddProjectMemberResponse,
- AddProjectRequest,
- AddProjectResponse,
- AddProjectRoleRequest,
- AddProjectRoleResponse,
- AddSecondFactorToLoginPolicyRequest,
- AddSecondFactorToLoginPolicyResponse,
- AddUserGrantRequest,
- AddUserGrantResponse,
- BulkAddProjectRolesRequest,
- BulkAddProjectRolesResponse,
- BulkRemoveUserGrantRequest,
- BulkRemoveUserGrantResponse,
- BulkSetUserMetadataRequest,
- BulkSetUserMetadataResponse,
- ClearFlowRequest,
- ClearFlowResponse,
- CreateActionRequest,
- CreateActionResponse,
- DeactivateActionRequest,
- DeactivateActionResponse,
- DeactivateAppRequest,
- DeactivateAppResponse,
- DeactivateOrgIDPRequest,
- DeactivateOrgIDPResponse,
- DeactivateOrgRequest,
- DeactivateOrgResponse,
- DeactivateProjectGrantRequest,
- DeactivateProjectGrantResponse,
- DeactivateProjectRequest,
- DeactivateProjectResponse,
- DeactivateUserRequest,
- DeactivateUserResponse,
- DeleteActionRequest,
- DeleteActionResponse,
- GenerateOrgDomainValidationRequest,
- GenerateOrgDomainValidationResponse,
- GetActionRequest,
- GetActionResponse,
- GetAppByIDRequest,
- GetAppByIDResponse,
- GetCustomDomainClaimedMessageTextRequest,
- GetCustomDomainClaimedMessageTextResponse,
- GetCustomInitMessageTextRequest,
- GetCustomInitMessageTextResponse,
- GetCustomLoginTextsRequest,
- GetCustomLoginTextsResponse,
- GetCustomPasswordlessRegistrationMessageTextRequest,
- GetCustomPasswordlessRegistrationMessageTextResponse,
- GetCustomPasswordResetMessageTextRequest,
- GetCustomPasswordResetMessageTextResponse,
- GetCustomVerifyEmailMessageTextRequest,
- GetCustomVerifyEmailMessageTextResponse,
- GetCustomVerifyPhoneMessageTextRequest,
- GetCustomVerifyPhoneMessageTextResponse,
- GetDefaultDomainClaimedMessageTextRequest,
- GetDefaultDomainClaimedMessageTextResponse,
- GetDefaultInitMessageTextRequest,
- GetDefaultInitMessageTextResponse,
- GetDefaultLabelPolicyRequest,
- GetDefaultLabelPolicyResponse,
- GetDefaultLoginTextsRequest,
- GetDefaultLoginTextsResponse,
- GetDefaultPasswordComplexityPolicyRequest,
- GetDefaultPasswordComplexityPolicyResponse,
- GetDefaultPasswordlessRegistrationMessageTextRequest,
- GetDefaultPasswordlessRegistrationMessageTextResponse,
- GetDefaultPasswordResetMessageTextRequest,
- GetDefaultPasswordResetMessageTextResponse,
- GetDefaultVerifyEmailMessageTextRequest,
- GetDefaultVerifyEmailMessageTextResponse,
- GetDefaultVerifyPhoneMessageTextRequest,
- GetDefaultVerifyPhoneMessageTextResponse,
- GetFlowRequest,
- GetFlowResponse,
- GetGrantedProjectByIDRequest,
- GetGrantedProjectByIDResponse,
- GetHumanEmailRequest,
- GetHumanEmailResponse,
- GetHumanPhoneRequest,
- GetHumanPhoneResponse,
- GetHumanProfileRequest,
- GetHumanProfileResponse,
- GetIAMRequest,
- GetIAMResponse,
- GetLabelPolicyRequest,
- GetLabelPolicyResponse,
- GetLockoutPolicyRequest,
- GetLockoutPolicyResponse,
- GetLoginPolicyRequest,
- GetLoginPolicyResponse,
- GetMyOrgRequest,
- GetMyOrgResponse,
- GetOIDCInformationRequest,
- GetOIDCInformationResponse,
- GetOrgByDomainGlobalRequest,
- GetOrgByDomainGlobalResponse,
- GetOrgIAMPolicyRequest,
- GetOrgIAMPolicyResponse,
- GetOrgIDPByIDRequest,
- GetOrgIDPByIDResponse,
- GetPasswordAgePolicyRequest,
- GetPasswordAgePolicyResponse,
- GetPasswordComplexityPolicyRequest,
- GetPasswordComplexityPolicyResponse,
- GetPreviewLabelPolicyRequest,
- GetPreviewLabelPolicyResponse,
- GetPrivacyPolicyRequest,
- GetPrivacyPolicyResponse,
- GetProjectByIDRequest,
- GetProjectByIDResponse,
- GetProjectGrantByIDRequest,
- GetProjectGrantByIDResponse,
- GetSupportedLanguagesRequest,
- GetSupportedLanguagesResponse,
- GetUserByIDRequest,
- GetUserByIDResponse,
- GetUserByLoginNameGlobalRequest,
- GetUserByLoginNameGlobalResponse,
- GetUserGrantByIDRequest,
- GetUserGrantByIDResponse,
- GetUserMetadataRequest,
- GetUserMetadataResponse,
- IDPQuery,
- ListActionsRequest,
- ListActionsResponse,
- ListAppChangesRequest,
- ListAppChangesResponse,
- ListAppKeysRequest,
- ListAppKeysResponse,
- ListAppsRequest,
- ListAppsResponse,
- ListGrantedProjectRolesRequest,
- ListGrantedProjectRolesResponse,
- ListGrantedProjectsRequest,
- ListGrantedProjectsResponse,
- ListHumanAuthFactorsRequest,
- ListHumanAuthFactorsResponse,
- ListHumanLinkedIDPsRequest,
- ListHumanLinkedIDPsResponse,
- ListHumanPasswordlessRequest,
- ListHumanPasswordlessResponse,
- ListLoginPolicyIDPsRequest,
- ListLoginPolicyIDPsResponse,
- ListLoginPolicyMultiFactorsRequest,
- ListLoginPolicyMultiFactorsResponse,
- ListLoginPolicySecondFactorsResponse,
- ListMachineKeysRequest,
- ListMachineKeysResponse,
- ListOrgChangesRequest,
- ListOrgChangesResponse,
- ListOrgDomainsRequest,
- ListOrgDomainsResponse,
- ListOrgIDPsRequest,
- ListOrgIDPsResponse,
- ListOrgMemberRolesRequest,
- ListOrgMemberRolesResponse,
- ListOrgMembersRequest,
- ListOrgMembersResponse,
- ListPersonalAccessTokensRequest,
- ListPersonalAccessTokensResponse,
- ListProjectChangesRequest,
- ListProjectChangesResponse,
- ListProjectGrantMemberRolesRequest,
- ListProjectGrantMemberRolesResponse,
- ListProjectGrantMembersRequest,
- ListProjectGrantMembersResponse,
- ListProjectGrantsRequest,
- ListProjectGrantsResponse,
- ListProjectMemberRolesRequest,
- ListProjectMemberRolesResponse,
- ListProjectMembersRequest,
- ListProjectMembersResponse,
- ListProjectRolesRequest,
- ListProjectRolesResponse,
- ListProjectsRequest,
- ListProjectsResponse,
- ListUserChangesRequest,
- ListUserChangesResponse,
- ListUserGrantRequest,
- ListUserGrantResponse,
- ListUserMembershipsRequest,
- ListUserMembershipsResponse,
- ListUserMetadataRequest,
- ListUserMetadataResponse,
- ListUsersRequest,
- ListUsersResponse,
- ReactivateActionRequest,
- ReactivateActionResponse,
- ReactivateAppRequest,
- ReactivateAppResponse,
- ReactivateOrgIDPRequest,
- ReactivateOrgIDPResponse,
- ReactivateOrgRequest,
- ReactivateOrgResponse,
- ReactivateProjectGrantRequest,
- ReactivateProjectGrantResponse,
- ReactivateProjectRequest,
- ReactivateProjectResponse,
- ReactivateUserRequest,
- ReactivateUserResponse,
- RegenerateAPIClientSecretRequest,
- RegenerateAPIClientSecretResponse,
- RegenerateOIDCClientSecretRequest,
- RegenerateOIDCClientSecretResponse,
- RemoveAppKeyRequest,
- RemoveAppKeyResponse,
- RemoveAppRequest,
- RemoveAppResponse,
- RemoveCustomLabelPolicyFontRequest,
- RemoveCustomLabelPolicyFontResponse,
- RemoveCustomLabelPolicyIconDarkRequest,
- RemoveCustomLabelPolicyIconDarkResponse,
- RemoveCustomLabelPolicyIconRequest,
- RemoveCustomLabelPolicyIconResponse,
- RemoveCustomLabelPolicyLogoDarkRequest,
- RemoveCustomLabelPolicyLogoDarkResponse,
- RemoveCustomLabelPolicyLogoRequest,
- RemoveCustomLabelPolicyLogoResponse,
- RemoveHumanAuthFactorOTPRequest,
- RemoveHumanAuthFactorOTPResponse,
- RemoveHumanAuthFactorU2FRequest,
- RemoveHumanAuthFactorU2FResponse,
- RemoveHumanLinkedIDPRequest,
- RemoveHumanLinkedIDPResponse,
- RemoveHumanPasswordlessRequest,
- RemoveHumanPasswordlessResponse,
- RemoveHumanPhoneRequest,
- RemoveHumanPhoneResponse,
- RemoveIDPFromLoginPolicyRequest,
- RemoveIDPFromLoginPolicyResponse,
- RemoveMachineKeyRequest,
- RemoveMachineKeyResponse,
- RemoveMultiFactorFromLoginPolicyRequest,
- RemoveMultiFactorFromLoginPolicyResponse,
- RemoveOrgDomainRequest,
- RemoveOrgDomainResponse,
- RemoveOrgIDPRequest,
- RemoveOrgIDPResponse,
- RemoveOrgMemberRequest,
- RemoveOrgMemberResponse,
- RemovePersonalAccessTokenRequest,
- RemovePersonalAccessTokenResponse,
- RemoveProjectGrantMemberRequest,
- RemoveProjectGrantMemberResponse,
- RemoveProjectGrantRequest,
- RemoveProjectGrantResponse,
- RemoveProjectMemberRequest,
- RemoveProjectMemberResponse,
- RemoveProjectRequest,
- RemoveProjectResponse,
- RemoveProjectRoleRequest,
- RemoveProjectRoleResponse,
- RemoveSecondFactorFromLoginPolicyRequest,
- RemoveSecondFactorFromLoginPolicyResponse,
- RemoveUserGrantRequest,
- RemoveUserGrantResponse,
- RemoveUserMetadataRequest,
- RemoveUserMetadataResponse,
- RemoveUserRequest,
- RemoveUserResponse,
- ResendHumanEmailVerificationRequest,
- ResendHumanInitializationRequest,
- ResendHumanInitializationResponse,
- ResendHumanPhoneVerificationRequest,
- ResetCustomDomainClaimedMessageTextToDefaultRequest,
- ResetCustomDomainClaimedMessageTextToDefaultResponse,
- ResetCustomInitMessageTextToDefaultRequest,
- ResetCustomInitMessageTextToDefaultResponse,
- ResetCustomLoginTextsToDefaultRequest,
- ResetCustomLoginTextsToDefaultResponse,
- ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest,
- ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse,
- ResetCustomPasswordResetMessageTextToDefaultRequest,
- ResetCustomPasswordResetMessageTextToDefaultResponse,
- ResetCustomVerifyEmailMessageTextToDefaultRequest,
- ResetCustomVerifyEmailMessageTextToDefaultResponse,
- ResetCustomVerifyPhoneMessageTextToDefaultRequest,
- ResetCustomVerifyPhoneMessageTextToDefaultResponse,
- ResetLabelPolicyToDefaultRequest,
- ResetLabelPolicyToDefaultResponse,
- ResetLockoutPolicyToDefaultRequest,
- ResetLockoutPolicyToDefaultResponse,
- ResetLoginPolicyToDefaultRequest,
- ResetLoginPolicyToDefaultResponse,
- ResetPasswordAgePolicyToDefaultRequest,
- ResetPasswordAgePolicyToDefaultResponse,
- ResetPasswordComplexityPolicyToDefaultRequest,
- ResetPasswordComplexityPolicyToDefaultResponse,
- ResetPrivacyPolicyToDefaultRequest,
- ResetPrivacyPolicyToDefaultResponse,
- SendHumanResetPasswordNotificationRequest,
- SendPasswordlessRegistrationRequest,
- SendPasswordlessRegistrationResponse,
- SetCustomDomainClaimedMessageTextRequest,
- SetCustomDomainClaimedMessageTextResponse,
- SetCustomInitMessageTextRequest,
- SetCustomInitMessageTextResponse,
- SetCustomLoginTextsRequest,
- SetCustomLoginTextsResponse,
- SetCustomPasswordlessRegistrationMessageTextRequest,
- SetCustomPasswordlessRegistrationMessageTextResponse,
- SetCustomPasswordResetMessageTextRequest,
- SetCustomPasswordResetMessageTextResponse,
- SetCustomVerifyEmailMessageTextRequest,
- SetCustomVerifyEmailMessageTextResponse,
- SetCustomVerifyPhoneMessageTextRequest,
- SetCustomVerifyPhoneMessageTextResponse,
- SetHumanInitialPasswordRequest,
- SetPrimaryOrgDomainRequest,
- SetPrimaryOrgDomainResponse,
- SetTriggerActionsRequest,
- SetTriggerActionsResponse,
- SetUserMetadataRequest,
- SetUserMetadataResponse,
- UnlockUserRequest,
- UnlockUserResponse,
- UpdateActionRequest,
- UpdateActionResponse,
- UpdateAPIAppConfigRequest,
- UpdateAPIAppConfigResponse,
- UpdateAppRequest,
- UpdateAppResponse,
- UpdateCustomLabelPolicyRequest,
- UpdateCustomLabelPolicyResponse,
- UpdateCustomLockoutPolicyRequest,
- UpdateCustomLockoutPolicyResponse,
- UpdateCustomLoginPolicyRequest,
- UpdateCustomLoginPolicyResponse,
- UpdateCustomPasswordAgePolicyRequest,
- UpdateCustomPasswordAgePolicyResponse,
- UpdateCustomPasswordComplexityPolicyRequest,
- UpdateCustomPasswordComplexityPolicyResponse,
- UpdateCustomPrivacyPolicyRequest,
- UpdateCustomPrivacyPolicyResponse,
- UpdateHumanEmailRequest,
- UpdateHumanEmailResponse,
- UpdateHumanPhoneRequest,
- UpdateHumanPhoneResponse,
- UpdateHumanProfileRequest,
- UpdateHumanProfileResponse,
- UpdateMachineRequest,
- UpdateMachineResponse,
- UpdateOIDCAppConfigRequest,
- UpdateOIDCAppConfigResponse,
- UpdateOrgIDPJWTConfigRequest,
- UpdateOrgIDPJWTConfigResponse,
- UpdateOrgIDPOIDCConfigRequest,
- UpdateOrgIDPOIDCConfigResponse,
- UpdateOrgIDPRequest,
- UpdateOrgIDPResponse,
- UpdateOrgMemberRequest,
- UpdateOrgMemberResponse,
- UpdateProjectGrantMemberRequest,
- UpdateProjectGrantMemberResponse,
- UpdateProjectGrantRequest,
- UpdateProjectGrantResponse,
- UpdateProjectMemberRequest,
- UpdateProjectMemberResponse,
- UpdateProjectRequest,
- UpdateProjectResponse,
- UpdateProjectRoleRequest,
- UpdateProjectRoleResponse,
- UpdateUserGrantRequest,
- UpdateUserGrantResponse,
- UpdateUserNameRequest,
- UpdateUserNameResponse,
- ValidateOrgDomainRequest,
- ValidateOrgDomainResponse,
+ ActionQuery,
+ ActivateCustomLabelPolicyRequest,
+ ActivateCustomLabelPolicyResponse,
+ AddAPIAppRequest,
+ AddAPIAppResponse,
+ AddAppKeyRequest,
+ AddAppKeyResponse,
+ AddCustomLabelPolicyRequest,
+ AddCustomLabelPolicyResponse,
+ AddCustomLockoutPolicyRequest,
+ AddCustomLockoutPolicyResponse,
+ AddCustomLoginPolicyRequest,
+ AddCustomLoginPolicyResponse,
+ AddCustomPasswordAgePolicyRequest,
+ AddCustomPasswordAgePolicyResponse,
+ AddCustomPasswordComplexityPolicyRequest,
+ AddCustomPasswordComplexityPolicyResponse,
+ AddCustomPrivacyPolicyRequest,
+ AddCustomPrivacyPolicyResponse,
+ AddHumanUserRequest,
+ AddHumanUserResponse,
+ AddIDPToLoginPolicyRequest,
+ AddIDPToLoginPolicyResponse,
+ AddMachineKeyRequest,
+ AddMachineKeyResponse,
+ AddMachineUserRequest,
+ AddMachineUserResponse,
+ AddMultiFactorToLoginPolicyRequest,
+ AddMultiFactorToLoginPolicyResponse,
+ AddOIDCAppRequest,
+ AddOIDCAppResponse,
+ AddOrgDomainRequest,
+ AddOrgDomainResponse,
+ AddOrgJWTIDPRequest,
+ AddOrgJWTIDPResponse,
+ AddOrgMemberRequest,
+ AddOrgMemberResponse,
+ AddOrgOIDCIDPRequest,
+ AddOrgOIDCIDPResponse,
+ AddOrgRequest,
+ AddOrgResponse,
+ AddPersonalAccessTokenRequest,
+ AddPersonalAccessTokenResponse,
+ AddProjectGrantMemberRequest,
+ AddProjectGrantMemberResponse,
+ AddProjectGrantRequest,
+ AddProjectGrantResponse,
+ AddProjectMemberRequest,
+ AddProjectMemberResponse,
+ AddProjectRequest,
+ AddProjectResponse,
+ AddProjectRoleRequest,
+ AddProjectRoleResponse,
+ AddSecondFactorToLoginPolicyRequest,
+ AddSecondFactorToLoginPolicyResponse,
+ AddUserGrantRequest,
+ AddUserGrantResponse,
+ BulkAddProjectRolesRequest,
+ BulkAddProjectRolesResponse,
+ BulkRemoveUserGrantRequest,
+ BulkRemoveUserGrantResponse,
+ BulkSetUserMetadataRequest,
+ BulkSetUserMetadataResponse,
+ ClearFlowRequest,
+ ClearFlowResponse,
+ CreateActionRequest,
+ CreateActionResponse,
+ DeactivateActionRequest,
+ DeactivateActionResponse,
+ DeactivateAppRequest,
+ DeactivateAppResponse,
+ DeactivateOrgIDPRequest,
+ DeactivateOrgIDPResponse,
+ DeactivateOrgRequest,
+ DeactivateOrgResponse,
+ DeactivateProjectGrantRequest,
+ DeactivateProjectGrantResponse,
+ DeactivateProjectRequest,
+ DeactivateProjectResponse,
+ DeactivateUserRequest,
+ DeactivateUserResponse,
+ DeleteActionRequest,
+ DeleteActionResponse,
+ GenerateOrgDomainValidationRequest,
+ GenerateOrgDomainValidationResponse,
+ GetActionRequest,
+ GetActionResponse,
+ GetAppByIDRequest,
+ GetAppByIDResponse,
+ GetCustomDomainClaimedMessageTextRequest,
+ GetCustomDomainClaimedMessageTextResponse,
+ GetCustomInitMessageTextRequest,
+ GetCustomInitMessageTextResponse,
+ GetCustomLoginTextsRequest,
+ GetCustomLoginTextsResponse,
+ GetCustomPasswordlessRegistrationMessageTextRequest,
+ GetCustomPasswordlessRegistrationMessageTextResponse,
+ GetCustomPasswordResetMessageTextRequest,
+ GetCustomPasswordResetMessageTextResponse,
+ GetCustomVerifyEmailMessageTextRequest,
+ GetCustomVerifyEmailMessageTextResponse,
+ GetCustomVerifyPhoneMessageTextRequest,
+ GetCustomVerifyPhoneMessageTextResponse,
+ GetDefaultDomainClaimedMessageTextRequest,
+ GetDefaultDomainClaimedMessageTextResponse,
+ GetDefaultInitMessageTextRequest,
+ GetDefaultInitMessageTextResponse,
+ GetDefaultLabelPolicyRequest,
+ GetDefaultLabelPolicyResponse,
+ GetDefaultLoginTextsRequest,
+ GetDefaultLoginTextsResponse,
+ GetDefaultPasswordComplexityPolicyRequest,
+ GetDefaultPasswordComplexityPolicyResponse,
+ GetDefaultPasswordlessRegistrationMessageTextRequest,
+ GetDefaultPasswordlessRegistrationMessageTextResponse,
+ GetDefaultPasswordResetMessageTextRequest,
+ GetDefaultPasswordResetMessageTextResponse,
+ GetDefaultVerifyEmailMessageTextRequest,
+ GetDefaultVerifyEmailMessageTextResponse,
+ GetDefaultVerifyPhoneMessageTextRequest,
+ GetDefaultVerifyPhoneMessageTextResponse,
+ GetFlowRequest,
+ GetFlowResponse,
+ GetGrantedProjectByIDRequest,
+ GetGrantedProjectByIDResponse,
+ GetHumanEmailRequest,
+ GetHumanEmailResponse,
+ GetHumanPhoneRequest,
+ GetHumanPhoneResponse,
+ GetHumanProfileRequest,
+ GetHumanProfileResponse,
+ GetIAMRequest,
+ GetIAMResponse,
+ GetLabelPolicyRequest,
+ GetLabelPolicyResponse,
+ GetLockoutPolicyRequest,
+ GetLockoutPolicyResponse,
+ GetLoginPolicyRequest,
+ GetLoginPolicyResponse,
+ GetMyOrgRequest,
+ GetMyOrgResponse,
+ GetOIDCInformationRequest,
+ GetOIDCInformationResponse,
+ GetOrgByDomainGlobalRequest,
+ GetOrgByDomainGlobalResponse,
+ GetOrgIAMPolicyRequest,
+ GetOrgIAMPolicyResponse,
+ GetOrgIDPByIDRequest,
+ GetOrgIDPByIDResponse,
+ GetPasswordAgePolicyRequest,
+ GetPasswordAgePolicyResponse,
+ GetPasswordComplexityPolicyRequest,
+ GetPasswordComplexityPolicyResponse,
+ GetPreviewLabelPolicyRequest,
+ GetPreviewLabelPolicyResponse,
+ GetPrivacyPolicyRequest,
+ GetPrivacyPolicyResponse,
+ GetProjectByIDRequest,
+ GetProjectByIDResponse,
+ GetProjectGrantByIDRequest,
+ GetProjectGrantByIDResponse,
+ GetSupportedLanguagesRequest,
+ GetSupportedLanguagesResponse,
+ GetUserByIDRequest,
+ GetUserByIDResponse,
+ GetUserByLoginNameGlobalRequest,
+ GetUserByLoginNameGlobalResponse,
+ GetUserGrantByIDRequest,
+ GetUserGrantByIDResponse,
+ GetUserMetadataRequest,
+ GetUserMetadataResponse,
+ IDPQuery,
+ ListActionsRequest,
+ ListActionsResponse,
+ ListAppChangesRequest,
+ ListAppChangesResponse,
+ ListAppKeysRequest,
+ ListAppKeysResponse,
+ ListAppsRequest,
+ ListAppsResponse,
+ ListGrantedProjectRolesRequest,
+ ListGrantedProjectRolesResponse,
+ ListGrantedProjectsRequest,
+ ListGrantedProjectsResponse,
+ ListHumanAuthFactorsRequest,
+ ListHumanAuthFactorsResponse,
+ ListHumanLinkedIDPsRequest,
+ ListHumanLinkedIDPsResponse,
+ ListHumanPasswordlessRequest,
+ ListHumanPasswordlessResponse,
+ ListLoginPolicyIDPsRequest,
+ ListLoginPolicyIDPsResponse,
+ ListLoginPolicyMultiFactorsRequest,
+ ListLoginPolicyMultiFactorsResponse,
+ ListLoginPolicySecondFactorsResponse,
+ ListMachineKeysRequest,
+ ListMachineKeysResponse,
+ ListOrgChangesRequest,
+ ListOrgChangesResponse,
+ ListOrgDomainsRequest,
+ ListOrgDomainsResponse,
+ ListOrgIDPsRequest,
+ ListOrgIDPsResponse,
+ ListOrgMemberRolesRequest,
+ ListOrgMemberRolesResponse,
+ ListOrgMembersRequest,
+ ListOrgMembersResponse,
+ ListPersonalAccessTokensRequest,
+ ListPersonalAccessTokensResponse,
+ ListProjectChangesRequest,
+ ListProjectChangesResponse,
+ ListProjectGrantMemberRolesRequest,
+ ListProjectGrantMemberRolesResponse,
+ ListProjectGrantMembersRequest,
+ ListProjectGrantMembersResponse,
+ ListProjectGrantsRequest,
+ ListProjectGrantsResponse,
+ ListProjectMemberRolesRequest,
+ ListProjectMemberRolesResponse,
+ ListProjectMembersRequest,
+ ListProjectMembersResponse,
+ ListProjectRolesRequest,
+ ListProjectRolesResponse,
+ ListProjectsRequest,
+ ListProjectsResponse,
+ ListUserChangesRequest,
+ ListUserChangesResponse,
+ ListUserGrantRequest,
+ ListUserGrantResponse,
+ ListUserMembershipsRequest,
+ ListUserMembershipsResponse,
+ ListUserMetadataRequest,
+ ListUserMetadataResponse,
+ ListUsersRequest,
+ ListUsersResponse,
+ ReactivateActionRequest,
+ ReactivateActionResponse,
+ ReactivateAppRequest,
+ ReactivateAppResponse,
+ ReactivateOrgIDPRequest,
+ ReactivateOrgIDPResponse,
+ ReactivateOrgRequest,
+ ReactivateOrgResponse,
+ ReactivateProjectGrantRequest,
+ ReactivateProjectGrantResponse,
+ ReactivateProjectRequest,
+ ReactivateProjectResponse,
+ ReactivateUserRequest,
+ ReactivateUserResponse,
+ RegenerateAPIClientSecretRequest,
+ RegenerateAPIClientSecretResponse,
+ RegenerateOIDCClientSecretRequest,
+ RegenerateOIDCClientSecretResponse,
+ RemoveAppKeyRequest,
+ RemoveAppKeyResponse,
+ RemoveAppRequest,
+ RemoveAppResponse,
+ RemoveCustomLabelPolicyFontRequest,
+ RemoveCustomLabelPolicyFontResponse,
+ RemoveCustomLabelPolicyIconDarkRequest,
+ RemoveCustomLabelPolicyIconDarkResponse,
+ RemoveCustomLabelPolicyIconRequest,
+ RemoveCustomLabelPolicyIconResponse,
+ RemoveCustomLabelPolicyLogoDarkRequest,
+ RemoveCustomLabelPolicyLogoDarkResponse,
+ RemoveCustomLabelPolicyLogoRequest,
+ RemoveCustomLabelPolicyLogoResponse,
+ RemoveHumanAuthFactorOTPRequest,
+ RemoveHumanAuthFactorOTPResponse,
+ RemoveHumanAuthFactorU2FRequest,
+ RemoveHumanAuthFactorU2FResponse,
+ RemoveHumanLinkedIDPRequest,
+ RemoveHumanLinkedIDPResponse,
+ RemoveHumanPasswordlessRequest,
+ RemoveHumanPasswordlessResponse,
+ RemoveHumanPhoneRequest,
+ RemoveHumanPhoneResponse,
+ RemoveIDPFromLoginPolicyRequest,
+ RemoveIDPFromLoginPolicyResponse,
+ RemoveMachineKeyRequest,
+ RemoveMachineKeyResponse,
+ RemoveMultiFactorFromLoginPolicyRequest,
+ RemoveMultiFactorFromLoginPolicyResponse,
+ RemoveOrgDomainRequest,
+ RemoveOrgDomainResponse,
+ RemoveOrgIDPRequest,
+ RemoveOrgIDPResponse,
+ RemoveOrgMemberRequest,
+ RemoveOrgMemberResponse,
+ RemovePersonalAccessTokenRequest,
+ RemovePersonalAccessTokenResponse,
+ RemoveProjectGrantMemberRequest,
+ RemoveProjectGrantMemberResponse,
+ RemoveProjectGrantRequest,
+ RemoveProjectGrantResponse,
+ RemoveProjectMemberRequest,
+ RemoveProjectMemberResponse,
+ RemoveProjectRequest,
+ RemoveProjectResponse,
+ RemoveProjectRoleRequest,
+ RemoveProjectRoleResponse,
+ RemoveSecondFactorFromLoginPolicyRequest,
+ RemoveSecondFactorFromLoginPolicyResponse,
+ RemoveUserGrantRequest,
+ RemoveUserGrantResponse,
+ RemoveUserMetadataRequest,
+ RemoveUserMetadataResponse,
+ RemoveUserRequest,
+ RemoveUserResponse,
+ ResendHumanEmailVerificationRequest,
+ ResendHumanInitializationRequest,
+ ResendHumanInitializationResponse,
+ ResendHumanPhoneVerificationRequest,
+ ResetCustomDomainClaimedMessageTextToDefaultRequest,
+ ResetCustomDomainClaimedMessageTextToDefaultResponse,
+ ResetCustomInitMessageTextToDefaultRequest,
+ ResetCustomInitMessageTextToDefaultResponse,
+ ResetCustomLoginTextsToDefaultRequest,
+ ResetCustomLoginTextsToDefaultResponse,
+ ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest,
+ ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse,
+ ResetCustomPasswordResetMessageTextToDefaultRequest,
+ ResetCustomPasswordResetMessageTextToDefaultResponse,
+ ResetCustomVerifyEmailMessageTextToDefaultRequest,
+ ResetCustomVerifyEmailMessageTextToDefaultResponse,
+ ResetCustomVerifyPhoneMessageTextToDefaultRequest,
+ ResetCustomVerifyPhoneMessageTextToDefaultResponse,
+ ResetLabelPolicyToDefaultRequest,
+ ResetLabelPolicyToDefaultResponse,
+ ResetLockoutPolicyToDefaultRequest,
+ ResetLockoutPolicyToDefaultResponse,
+ ResetLoginPolicyToDefaultRequest,
+ ResetLoginPolicyToDefaultResponse,
+ ResetPasswordAgePolicyToDefaultRequest,
+ ResetPasswordAgePolicyToDefaultResponse,
+ ResetPasswordComplexityPolicyToDefaultRequest,
+ ResetPasswordComplexityPolicyToDefaultResponse,
+ ResetPrivacyPolicyToDefaultRequest,
+ ResetPrivacyPolicyToDefaultResponse,
+ SendHumanResetPasswordNotificationRequest,
+ SendPasswordlessRegistrationRequest,
+ SendPasswordlessRegistrationResponse,
+ SetCustomDomainClaimedMessageTextRequest,
+ SetCustomDomainClaimedMessageTextResponse,
+ SetCustomInitMessageTextRequest,
+ SetCustomInitMessageTextResponse,
+ SetCustomLoginTextsRequest,
+ SetCustomLoginTextsResponse,
+ SetCustomPasswordlessRegistrationMessageTextRequest,
+ SetCustomPasswordlessRegistrationMessageTextResponse,
+ SetCustomPasswordResetMessageTextRequest,
+ SetCustomPasswordResetMessageTextResponse,
+ SetCustomVerifyEmailMessageTextRequest,
+ SetCustomVerifyEmailMessageTextResponse,
+ SetCustomVerifyPhoneMessageTextRequest,
+ SetCustomVerifyPhoneMessageTextResponse,
+ SetHumanInitialPasswordRequest,
+ SetPrimaryOrgDomainRequest,
+ SetPrimaryOrgDomainResponse,
+ SetTriggerActionsRequest,
+ SetTriggerActionsResponse,
+ SetUserMetadataRequest,
+ SetUserMetadataResponse,
+ UnlockUserRequest,
+ UnlockUserResponse,
+ UpdateActionRequest,
+ UpdateActionResponse,
+ UpdateAPIAppConfigRequest,
+ UpdateAPIAppConfigResponse,
+ UpdateAppRequest,
+ UpdateAppResponse,
+ UpdateCustomLabelPolicyRequest,
+ UpdateCustomLabelPolicyResponse,
+ UpdateCustomLockoutPolicyRequest,
+ UpdateCustomLockoutPolicyResponse,
+ UpdateCustomLoginPolicyRequest,
+ UpdateCustomLoginPolicyResponse,
+ UpdateCustomPasswordAgePolicyRequest,
+ UpdateCustomPasswordAgePolicyResponse,
+ UpdateCustomPasswordComplexityPolicyRequest,
+ UpdateCustomPasswordComplexityPolicyResponse,
+ UpdateCustomPrivacyPolicyRequest,
+ UpdateCustomPrivacyPolicyResponse,
+ UpdateHumanEmailRequest,
+ UpdateHumanEmailResponse,
+ UpdateHumanPhoneRequest,
+ UpdateHumanPhoneResponse,
+ UpdateHumanProfileRequest,
+ UpdateHumanProfileResponse,
+ UpdateMachineRequest,
+ UpdateMachineResponse,
+ UpdateOIDCAppConfigRequest,
+ UpdateOIDCAppConfigResponse,
+ UpdateOrgIDPJWTConfigRequest,
+ UpdateOrgIDPJWTConfigResponse,
+ UpdateOrgIDPOIDCConfigRequest,
+ UpdateOrgIDPOIDCConfigResponse,
+ UpdateOrgIDPRequest,
+ UpdateOrgIDPResponse,
+ UpdateOrgMemberRequest,
+ UpdateOrgMemberResponse,
+ UpdateProjectGrantMemberRequest,
+ UpdateProjectGrantMemberResponse,
+ UpdateProjectGrantRequest,
+ UpdateProjectGrantResponse,
+ UpdateProjectMemberRequest,
+ UpdateProjectMemberResponse,
+ UpdateProjectRequest,
+ UpdateProjectResponse,
+ UpdateProjectRoleRequest,
+ UpdateProjectRoleResponse,
+ UpdateUserGrantRequest,
+ UpdateUserGrantResponse,
+ UpdateUserNameRequest,
+ UpdateUserNameResponse,
+ ValidateOrgDomainRequest,
+ ValidateOrgDomainResponse,
} from '../proto/generated/zitadel/management_pb';
import { SearchQuery } from '../proto/generated/zitadel/member_pb';
import { MetadataQuery } from '../proto/generated/zitadel/metadata_pb';
@@ -435,11 +435,11 @@ import { DomainSearchQuery, DomainValidationType } from '../proto/generated/zita
import { PasswordComplexityPolicy } from '../proto/generated/zitadel/policy_pb';
import { GrantedProject, Project, ProjectQuery, RoleQuery } from '../proto/generated/zitadel/project_pb';
import {
- Gender,
- MembershipQuery,
- SearchQuery as UserSearchQuery,
- UserFieldName,
- UserGrantQuery,
+ Gender,
+ MembershipQuery,
+ SearchQuery as UserSearchQuery,
+ UserFieldName,
+ UserGrantQuery,
} from '../proto/generated/zitadel/user_pb';
import { GrpcService } from './grpc.service';
diff --git a/console/src/assets/environment.json b/console/src/assets/environment.json
index 52a66d6825..f242d6d5f2 100644
--- a/console/src/assets/environment.json
+++ b/console/src/assets/environment.json
@@ -1,5 +1,5 @@
{
- "api": "https://zitadel.cloud",
- "issuer": "https://zitadel.cloud/oauth/v2",
- "clientid": "158502175385846017@zitadel"
+ "api": "https://zitadel.zitadel.cloud",
+ "issuer": "https://zitadel.zitadel.cloud/oauth/v2",
+ "clientid": "158948468591689985@zitadel"
}
diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json
index 64995f2de4..c121a5c1a9 100644
--- a/console/src/assets/i18n/de.json
+++ b/console/src/assets/i18n/de.json
@@ -46,7 +46,8 @@
"DASHBOARD": "Home",
"PERSONAL_INFO": "Persönliche Informationen",
"DOCUMENTATION": "Dokumentation",
- "INSTANCEOVERVIEW": "Instance Übersicht",
+ "INSTANCEOVERVIEW": "Instanz",
+ "ORGS": "Organisationen",
"VIEWS": "Views",
"FAILEDEVENTS": "Failed Events",
"ORGANIZATION": "Organisation",
@@ -66,7 +67,8 @@
"ACTIONS": "Aktionen",
"PRIVACY": "Datenschutz",
"TOS": "AGB",
- "OPENSHORTCUTSTOOLTIP": "Tippe ? um die Tastaturkürzel anzuzeigen"
+ "OPENSHORTCUTSTOOLTIP": "Tippe ? um die Tastaturkürzel anzuzeigen",
+ "SETTINGS": "Einstellungen"
},
"ACTIONS": {
"ACTIONS": "Aktionen",
@@ -669,6 +671,8 @@
}
},
"IAM": {
+ "TITLE": "Instanz",
+ "DESCRIPTION": "Verwalten Sie Ihre Instanzeinstellungen und Organisationen",
"POLICIES": {
"TITLE": "System Administration",
"DESCRIPTION": "Verwalte die globalen Richtlinen und Zugangseinstellungen."
@@ -679,7 +683,7 @@
},
"MEMBER": {
"TITLE": "Manager",
- "DESCRIPTION": "Diese Manager können systemweite Einstellungen vornehmen."
+ "DESCRIPTION": "Diese Manager können instanzweite Einstellungen vornehmen."
},
"VIEWS": {
"TITLE": "Views",
@@ -759,6 +763,10 @@
"USEPASSWORD": "Initiales Passwort setzen",
"USEPASSWORDDESC": "Der Nutzer muss das Passwort bei der Initalisierung nicht setzen."
},
+ "LIST": {
+ "TITLE": "Organisationen",
+ "DESCRIPTION": "Dies sind die Organisationen in Ihrer Instanz"
+ },
"DOMAINS": {
"NEW": "Domain hinzufügen",
"TITLE": "Domains",
@@ -793,6 +801,44 @@
"SETPRIMARY": "Primäre Domain gesetzt."
}
},
+ "SETTINGS": {
+ "INSTANCE": {
+ "TITLE": "Instanz Einstellungen",
+ "DESCRIPTION": "Diese Einstellungen werden auf all Ihren Organisationen angewand sofern die Einstellung nicht überschrieben wurde."
+ },
+ "ORG": {
+ "TITLE": "Organisation Einstellungen",
+ "DESCRIPTION": "Diese Einstellungen erweitern bzw. überschreiben die Einstellungen Ihrer Instanz."
+ },
+ "LIST": {
+ "GENERAL": "Allgemein",
+ "LOGIN": "Loginverhalten und Sicherheit",
+ "LOCKOUT": "Sperrmechanismen",
+ "COMPLEXITY": "Passwordkomplexität",
+ "NOTIFICATIONS": "Benachrichtigungen",
+ "NOTIFICATIONPROVIDERS": "Anbieter und SMTP",
+ "MESSAGETEXTS": "Benachrichtigungstexte",
+ "IDP": "Identity Provider",
+ "LOGINTEXTS": "Login Interface Texte",
+ "BRANDING": "Branding",
+ "PRIVACYPOLICY": "Datenschutzrichtlinie"
+ },
+ "GROUPS": {
+ "NOTIFICATIONS": "Benachrichtigungen",
+ "LOGIN": "Login und Zugriff",
+ "TEXTS": "Texte und Sprachen",
+ "APPEARANCE": "Erscheinungsbild",
+ "OTHER": "Anderes"
+ }
+ },
+ "SETTING": {
+ "DEFAULTLANGUAGE": "Standardsprache",
+ "LANGUAGE": {
+ "de": "Deutsch",
+ "it": "Italiano",
+ "en": "English"
+ }
+ },
"POLICY": {
"TITLE": "Richtlinen entdecken",
"DESCRIPTION": "Vorgefertigte Richtlinien, die Dir Zeit sparen und die Sicherheit erhöhen.",
@@ -965,7 +1011,7 @@
"UPDATED": "Benutzerdefinierte Texte gespeichert."
}
},
- "DEFAULTLABEL": "Die aktuelle Richtlinie entspricht der Instance-Standard Einstellung.",
+ "DEFAULTLABEL": "Die aktuelle Einstellung entspricht der Einstellung Ihrer Instanz.",
"BTN_INSTALL": "Installieren",
"BTN_EDIT": "Modifizieren",
"DATA": {
@@ -994,7 +1040,7 @@
"ERRORMSGPOPUP": "Fehler als Dialog Fenster",
"DISABLEWATERMARK": "Wasserzeichen ausblenden"
},
- "RESET": "Richtlinie zurücksetzen",
+ "RESET": "Auf Instanzeinstellung zurücksetzen",
"CREATECUSTOM": "Benutzerdefinierte Richtlinie erstellen",
"TOAST": {
"SET": "Richtline erfolgreich gesetzt!",
diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json
index 6583b0566b..6be2cae2c2 100644
--- a/console/src/assets/i18n/en.json
+++ b/console/src/assets/i18n/en.json
@@ -46,7 +46,8 @@
"DASHBOARD": "Home",
"PERSONAL_INFO": "Personal Information",
"DOCUMENTATION": "Documentation",
- "INSTANCEOVERVIEW": "Instance Overview",
+ "INSTANCEOVERVIEW": "Instance",
+ "ORGS": "Organizations",
"VIEWS": "Views",
"FAILEDEVENTS": "Failed Events",
"ORGANIZATION": "Organization",
@@ -66,7 +67,8 @@
"ACTIONS": "Actions",
"PRIVACY": "Privacy",
"TOS": "Terms of Service",
- "OPENSHORTCUTSTOOLTIP": "Type ? to show keyboardshortcuts"
+ "OPENSHORTCUTSTOOLTIP": "Type ? to show keyboardshortcuts",
+ "SETTINGS": "Settings"
},
"ACTIONS": {
"ACTIONS": "Actions",
@@ -530,7 +532,7 @@
"6": "Initial"
},
"SEARCH": {
- "ADDITIONAL": "User Name (selected organization)",
+ "ADDITIONAL": "Loginname (current organization)",
"ADDITIONAL-EXTERNAL": "Loginname (external organization)"
},
"TARGET": {
@@ -669,6 +671,8 @@
}
},
"IAM": {
+ "TITLE": "Instance",
+ "DESCRIPTION": "Manage your instance settings and Organizations",
"POLICIES": {
"TITLE": "System Policies and Access Settings",
"DESCRIPTION": "Manage your global Policies and Management Access Settings."
@@ -679,7 +683,7 @@
},
"MEMBER": {
"TITLE": "Managers",
- "DESCRIPTION": "These Managers are allowed to make changes in your system."
+ "DESCRIPTION": "These Managers are allowed to make changes in your instance."
},
"VIEWS": {
"TITLE": "Views",
@@ -759,6 +763,10 @@
"USEPASSWORD": "Set Initial Password",
"USEPASSWORDDESC": "The user does not have to set the password during initialization."
},
+ "LIST": {
+ "TITLE": "Organizations",
+ "DESCRIPTION": "These are the organizations on your instance"
+ },
"DOMAINS": {
"NEW": "Add Domain",
"TITLE": "Domains",
@@ -793,6 +801,44 @@
"SETPRIMARY": "Primary domain set."
}
},
+ "SETTINGS": {
+ "INSTANCE": {
+ "TITLE": "Instance Settings",
+ "DESCRIPTION": "These settings will apply to all your organizations unless they have been overridden."
+ },
+ "ORG": {
+ "TITLE": "Organization Settings",
+ "DESCRIPTION": "These settings extend and overwrite your instance settings."
+ },
+ "LIST": {
+ "GENERAL": "General",
+ "LOGIN": "Login Behaviour and Security",
+ "LOCKOUT": "Lockout",
+ "COMPLEXITY": "Password complexity",
+ "NOTIFICATIONS": "Notifications",
+ "NOTIFICATIONPROVIDERS": "Notification providers and SMTP",
+ "MESSAGETEXTS": "Message Texts",
+ "IDP": "Identity Providers",
+ "LOGINTEXTS": "Login Interface Texts",
+ "BRANDING": "Branding",
+ "PRIVACYPOLICY": "Privacy Policy"
+ },
+ "GROUPS": {
+ "NOTIFICATIONS": "Notifications",
+ "LOGIN": "Login and Access",
+ "TEXTS": "Texts and Languages",
+ "APPEARANCE": "Appearance",
+ "OTHER": "Other"
+ }
+ },
+ "SETTING": {
+ "DEFAULTLANGUAGE": "Default Language",
+ "LANGUAGE": {
+ "de": "Deutsch",
+ "it": "Italiano",
+ "en": "English"
+ }
+ },
"POLICY": {
"TITLE": "Explore Settings",
"DESCRIPTION": "Pre-packaged settings that enhance your security.",
@@ -965,7 +1011,7 @@
"UPDATED": "Custom Texts saved."
}
},
- "DEFAULTLABEL": "The currently set guideline corresponds to the standard setting set by the IAM Administrator.",
+ "DEFAULTLABEL": "The current settings corresponds to the standard of your Instance.",
"BTN_INSTALL": "Setup",
"BTN_EDIT": "Modify",
"DATA": {
@@ -994,7 +1040,7 @@
"ERRORMSGPOPUP": "Show Error in Dialog",
"DISABLEWATERMARK": "Hide Watermark"
},
- "RESET": "Reset Policy",
+ "RESET": "Reset to Instance default",
"CREATECUSTOM": "Create Custom Policy",
"TOAST": {
"SET": "Policy set successfully!",
diff --git a/console/src/assets/i18n/it.json b/console/src/assets/i18n/it.json
index 247aba981c..6909f15e16 100644
--- a/console/src/assets/i18n/it.json
+++ b/console/src/assets/i18n/it.json
@@ -46,7 +46,8 @@
"DASHBOARD": "Pagina iniziale",
"PERSONAL_INFO": "Informazioni personali",
"DOCUMENTATION": "Documentazione",
- "INSTANCEOVERVIEW": "Panoramica Istanza",
+ "INSTANCEOVERVIEW": "Istanza",
+ "ORGS": "Organizzazioni",
"VIEWS": "Views",
"FAILEDEVENTS": "Eventi falliti",
"ORGANIZATION": "Organizzazione",
@@ -66,7 +67,8 @@
"ACTIONS": "Azioni",
"PRIVACY": "Informativa sulla privacy",
"TOS": "Termini di servizio",
- "OPENSHORTCUTSTOOLTIP": "Premi ? per mostrare le scorciatoie da tastiera"
+ "OPENSHORTCUTSTOOLTIP": "Premi ? per mostrare le scorciatoie da tastiera",
+ "SETTINGS": "Impostazioni"
},
"ACTIONS": {
"ACTIONS": "Azioni",
@@ -669,6 +671,8 @@
}
},
"IAM": {
+ "TITLE": "Istanza",
+ "DESCRIPTION": "Gestisci la tua istanza e le tue organizzazioni",
"POLICIES": {
"TITLE": "Impostazioni del Sistema e impostazioni d'accesso",
"DESCRIPTION": "Gestisci le impostazioni del sistema e le impostazioni d'accesso."
@@ -679,7 +683,7 @@
},
"MEMBER": {
"TITLE": "Manager",
- "DESCRIPTION": "Questi manager possono modificare le impostazioni del sistema."
+ "DESCRIPTION": "Questi manager possono modificare le impostazioni dell'istanza."
},
"VIEWS": {
"TITLE": "Views",
@@ -759,6 +763,10 @@
"USEPASSWORD": "Imposta la password iniziale",
"USEPASSWORDDESC": "L'utente non deve impostare la password durante l'inizializzazione."
},
+ "LIST": {
+ "TITLE": "Organizzazioni",
+ "DESCRIPTION": "Queste sono le organizzazioni sulla tua istanza"
+ },
"DOMAINS": {
"NEW": "Aggiungi dominio",
"TITLE": "Domini",
@@ -793,6 +801,40 @@
"SETPRIMARY": "Dominio primario cambiato con successo"
}
},
+ "SETTINGS": {
+ "INSTANCE": {
+ "TITLE": "Impostazioni dell'istanza",
+ "DESCRIPTION": "Queste impostazioni si applicheranno a tutte le tue organizzazioni a meno che l'impostazione non venga sovrascritta."
+ },
+ "LIST": {
+ "GENERAL": "Generale",
+ "LOGIN": "Comportamento login e sicurezza",
+ "LOCKOUT": "Meccanismi di bloccaggio",
+ "COMPLEXITY": "complessità della password",
+ "NOTIFICATIONS": "Notifiche",
+ "NOTIFICATIONPROVIDERS": "Fornitori e SMTP",
+ "MESSAGETEXTS": "Testi di notifica",
+ "IDP": "Identity Providers",
+ "LOGINTEXTS": "Testi dell'interfaccia login",
+ "BRANDING": "Branding",
+ "PRIVACYPOLICY": "Informativa sulla privacy e TOS"
+ },
+ "GROUPS": {
+ "NOTIFICATIONS": "Notifiche",
+ "LOGIN": "Accesso e login",
+ "TEXTS": "Testi e lingue",
+ "APPEARANCE": "Aussehen",
+ "OTHER": "Altro"
+ }
+ },
+ "SETTING": {
+ "DEFAULTLANGUAGE": "Lingua standard",
+ "LANGUAGE": {
+ "de": "Deutsch",
+ "it": "Italiano",
+ "en": "English"
+ }
+ },
"POLICY": {
"TITLE": "Esplora le impostazioni",
"DESCRIPTION": "Impostazioni che migliorano la tua sicurezza.",
@@ -965,7 +1007,7 @@
"UPDATED": "Testi personalizzati salvati."
}
},
- "DEFAULTLABEL": "L'impostazione attuale corrisponde all'impostazione standard IAM.",
+ "DEFAULTLABEL": "L'impostazione attuale corrisponde all'impostazione dell' istanza.",
"BTN_INSTALL": "Impostazione",
"BTN_EDIT": "Modifica",
"DATA": {
@@ -994,7 +1036,7 @@
"ERRORMSGPOPUP": "Mostra l'errore nella finestra di dialogo",
"DISABLEWATERMARK": "Nascondi la filigrana"
},
- "RESET": "Ripristina l'impostazione",
+ "RESET": "Ripristina l'impostazione dell'istanza",
"CREATECUSTOM": "Crea un'impostazione personalizzata",
"TOAST": {
"SET": "Impostazione cambiata con successo!",
diff --git a/console/src/component-themes.scss b/console/src/component-themes.scss
index 5bdf10ab4f..deef8577c2 100644
--- a/console/src/component-themes.scss
+++ b/console/src/component-themes.scss
@@ -32,7 +32,7 @@
@import 'src/app/pages/projects/project-grid/project-grid.component';
@import 'src/app/app.component.scss';
@import './styles/color.scss';
-@import 'src/app/pages/iam/iam.component.scss';
+@import 'src/app/pages/instance/instance.component.scss';
@import 'src/app/modules/refresh-table/refresh-table.component.scss';
@import 'src/app/modules/form-field/form-field.component.scss';
@import 'src/app/modules/label/label.component.scss';
@@ -93,7 +93,7 @@
@include auth-user-detail-theme($theme);
@include edit-text-theme($theme);
@include user-detail-theme($theme);
- @include iam-detail-theme($theme);
+ @include instance-detail-theme($theme);
@include meta-theme($theme);
@include keyboard-shortcuts-theme($theme);
@include project-grant-illustration-theme($theme);
diff --git a/console/src/styles.scss b/console/src/styles.scss
index 8b813edfcb..fa9f141199 100644
--- a/console/src/styles.scss
+++ b/console/src/styles.scss
@@ -238,6 +238,7 @@ $caos-dark-theme-background: (
// set fixed color due to https://github.com/angular/components/pull/14253
// change where a scss mix function can't use a css var
cards: map_get($caos-dark-background, 400),
+ cardhovered: map_get($caos-dark-background, 300),
contributor: map_get($caos-dark-background, 400),
contributor-avatar: map_get($caos-dark-background, 300),
dialog: map_get($caos-dark-background, 500),
@@ -273,6 +274,7 @@ $caos-light-theme-background: (
// set fixed color due to https://github.com/angular/components/pull/14253
// change where a scss mix function can't use a css var
cards: map_get($caos-light-background, 400),
+ cardhovered: map_get($caos-light-background, 300),
dialog: map_get($caos-light-background, 500),
disabled-button: rgba(black, 0.12),
raised-button: white,
@@ -283,7 +285,7 @@ $caos-light-theme-background: (
unselected-chip: map_get($caos-light-background, 300),
disabled-list-option: map_get($caos-light-background, 200),
tooltip: map_get($mat-gray, 700),
- infosection: #e4e4e4,
+ infosection: map_get($caos-light-primary, 100),
warninfosection: #ffc1c1,
successinfosection: #cbf4c9,
toolbar: rgba(map_get($caos-light-background, 500), 0.9),
@@ -427,6 +429,14 @@ $custom-typography: mat.define-typography-config(
border-radius: 6px;
}
+ .mat-option {
+ background-color: map-get($background, cards);
+
+ &:hover {
+ background-color: map-get($background, cardhovered);
+ }
+ }
+
.mat-button-toggle-button {
background-color: mat.get-color-from-palette($background, cards);
transition: background-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
@@ -481,6 +491,14 @@ $custom-typography: mat.define-typography-config(
border-radius: 6px;
}
+ .mat-option {
+ background-color: map-get($background, cards);
+
+ &:hover {
+ background-color: map-get($background, cardhovered);
+ }
+ }
+
.mat-button-toggle-button {
background-color: mat.get-color-from-palette($background, cards);
transition: background-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);