diff --git a/console/src/app/modules/info-row/info-row.component.html b/console/src/app/modules/info-row/info-row.component.html index 292623a8d4..7ebc4c4c85 100644 --- a/console/src/app/modules/info-row/info-row.component.html +++ b/console/src/app/modules/info-row/info-row.component.html @@ -48,6 +48,66 @@ +
+
+

{{ 'IAM.PAGES.STATE' | translate }}

+

+ {{ 'IAM.STATE.' + instance.state | translate }} +

+
+ +
+

{{ 'RESOURCEID' | translate }}

+

{{ instance.id }}

+
+ +
+

{{ 'NAME' | translate }}

+

{{ instance.name }}

+
+ +
+

{{ 'VERSION' | translate }}

+

{{ instance.version }}

+
+ +
+

{{ 'IAM.PAGES.DOMAINLIST' | translate }}

+
+ +
+
+ +
+

{{ 'ORG.PAGES.CREATIONDATE' | translate }}

+

+ {{ instance.details.creationDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }} +

+
+ +
+

{{ 'ORG.PAGES.DATECHANGED' | translate }}

+

+ {{ instance.details.changeDate | timestampToDate | localizedDate: 'dd. MMMM YYYY, HH:mm' }} +

+
+
+

{{ 'ORG.PAGES.STATE' | translate }}

diff --git a/console/src/app/modules/info-row/info-row.component.ts b/console/src/app/modules/info-row/info-row.component.ts index 79ccb4d9b0..0b964af47a 100644 --- a/console/src/app/modules/info-row/info-row.component.ts +++ b/console/src/app/modules/info-row/info-row.component.ts @@ -1,6 +1,7 @@ import { Component, Input } from '@angular/core'; import { App, AppState } from 'src/app/proto/generated/zitadel/app_pb'; import { IDP, IDPState } from 'src/app/proto/generated/zitadel/idp_pb'; +import { InstanceDetail, State } from 'src/app/proto/generated/zitadel/instance_pb'; import { Org, OrgState } from 'src/app/proto/generated/zitadel/org_pb'; import { GrantedProject, Project, ProjectGrantState, ProjectState } from 'src/app/proto/generated/zitadel/project_pb'; import { User, UserState } from 'src/app/proto/generated/zitadel/user_pb'; @@ -13,12 +14,14 @@ import { User, UserState } from 'src/app/proto/generated/zitadel/user_pb'; export class InfoRowComponent { @Input() public user!: User.AsObject; @Input() public org!: Org.AsObject; + @Input() public instance!: InstanceDetail.AsObject; @Input() public app!: App.AsObject; @Input() public idp!: IDP.AsObject; @Input() public project!: Project.AsObject; @Input() public grantedProject!: GrantedProject.AsObject; public UserState: any = UserState; + public State: any = State; public OrgState: any = OrgState; public AppState: any = AppState; public IDPState: any = IDPState; diff --git a/console/src/app/pages/instance/instance.component.html b/console/src/app/pages/instance/instance.component.html index 5ad2bbf290..2e311ff9d9 100644 --- a/console/src/app/pages/instance/instance.component.html +++ b/console/src/app/pages/instance/instance.component.html @@ -1,32 +1,33 @@ -
-
-
-
-
-

{{ 'IAM.TITLE' | translate }}

-
-

{{ 'IAM.DESCRIPTION' | translate }}

-
- - - -
-
-
-
-

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

+ + + -

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

+ +
+ +
+

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

+ +

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

diff --git a/console/src/app/pages/instance/instance.component.scss b/console/src/app/pages/instance/instance.component.scss index 69494c47e3..ea9a2c1a1c 100644 --- a/console/src/app/pages/instance/instance.component.scss +++ b/console/src/app/pages/instance/instance.component.scss @@ -4,55 +4,15 @@ $foreground: map-get($theme, foreground); $is-dark-theme: map-get($theme, is-dark); $background: map-get($theme, background); - - .iam-top { - border-bottom: 1px solid map-get($foreground, divider); - margin: 0 -2rem; - padding: 2rem 2rem 1rem 2rem; - background: map-get($background, metadata-section); - - @media only screen and (max-width: 500px) { - margin: 0 -1rem; - } - - .iam-top-row { - display: flex; - align-items: center; - padding-bottom: 1rem; - - .iam-title-row { - display: flex; - align-items: center; - - .iam-title { - margin: 0; - margin-right: 0.5rem; - } - } - - .iam-sub { - margin: 1rem 0 0 0; - font-size: 14px; - } - - .iam-top-desc { - font-size: 14px; - } - - .fill-space { - flex: 1; - } - } - } } -.org-table-title { +.instance-table-title { font-size: 1.2rem; letter-spacing: 0.05em; text-transform: uppercase; margin-top: 2rem; } -.org-table-desc { +.instance-table-desc { font-size: 14px; } diff --git a/console/src/app/pages/instance/instance.component.ts b/console/src/app/pages/instance/instance.component.ts index ffa5f5d6a7..539826407b 100644 --- a/console/src/app/pages/instance/instance.component.ts +++ b/console/src/app/pages/instance/instance.component.ts @@ -5,6 +5,7 @@ import { BehaviorSubject, from, Observable, of } from 'rxjs'; import { catchError, finalize, map } from 'rxjs/operators'; import { CreationType, MemberCreateDialogComponent } from 'src/app/modules/add-member-dialog/member-create-dialog.component'; import { PolicyComponentServiceType } from 'src/app/modules/policies/policy-component-types.enum'; +import { InstanceDetail, State } from 'src/app/proto/generated/zitadel/instance_pb'; import { Member } from 'src/app/proto/generated/zitadel/member_pb'; import { User } from 'src/app/proto/generated/zitadel/user_pb'; import { AdminService } from 'src/app/services/admin.service'; @@ -17,12 +18,13 @@ import { ToastService } from 'src/app/services/toast.service'; styleUrls: ['./instance.component.scss'], }) export class InstanceComponent { + public instance!: InstanceDetail.AsObject; public PolicyComponentServiceType: any = PolicyComponentServiceType; private loadingSubject: BehaviorSubject = new BehaviorSubject(false); public loading$: Observable = this.loadingSubject.asObservable(); public totalMemberResult: number = 0; public membersSubject: BehaviorSubject = new BehaviorSubject([]); - + public State: any = State; constructor( public adminService: AdminService, private dialog: MatDialog, @@ -39,6 +41,17 @@ export class InstanceComponent { }); breadcrumbService.setBreadcrumb([instanceBread]); + + this.adminService + .getMyInstance() + .then((instanceResp) => { + if (instanceResp.instance) { + this.instance = instanceResp.instance; + } + }) + .catch((error) => { + this.toast.showError(error); + }); } public loadMembers(): void { diff --git a/console/src/app/pages/instance/instance.module.ts b/console/src/app/pages/instance/instance.module.ts index 3d7e301c89..f316b37638 100644 --- a/console/src/app/pages/instance/instance.module.ts +++ b/console/src/app/pages/instance/instance.module.ts @@ -16,12 +16,14 @@ import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { CardModule } from 'src/app/modules/card/card.module'; import { ChangesModule } from 'src/app/modules/changes/changes.module'; import { ContributorsModule } from 'src/app/modules/contributors/contributors.module'; +import { InfoRowModule } from 'src/app/modules/info-row/info-row.module'; import { InputModule } from 'src/app/modules/input/input.module'; import { MetaLayoutModule } from 'src/app/modules/meta-layout/meta-layout.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 { TopViewModule } from 'src/app/modules/top-view/top-view.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'; @@ -43,7 +45,9 @@ import { InstanceComponent } from './instance.component'; MatCheckboxModule, MetaLayoutModule, MatIconModule, + TopViewModule, MatTableModule, + InfoRowModule, InputModule, MatSortModule, MatTooltipModule, diff --git a/console/src/app/services/admin.service.ts b/console/src/app/services/admin.service.ts index 808facaf5a..50a4ba9e4f 100644 --- a/console/src/app/services/admin.service.ts +++ b/console/src/app/services/admin.service.ts @@ -73,6 +73,8 @@ import { GetLoginPolicyResponse, GetLogNotificationProviderRequest, GetLogNotificationProviderResponse, + GetMyInstanceRequest, + GetMyInstanceResponse, GetOIDCSettingsRequest, GetOIDCSettingsResponse, GetPasswordAgePolicyRequest, @@ -404,6 +406,11 @@ export class AdminService { return this.grpcService.admin.removeFailedEvent(req, null).then((resp) => resp.toObject()); } + public getMyInstance(): Promise { + const req = new GetMyInstanceRequest(); + return this.grpcService.admin.getMyInstance(req, null).then((resp) => resp.toObject()); + } + public getPrivacyPolicy(): Promise { const req = new GetPrivacyPolicyRequest(); return this.grpcService.admin.getPrivacyPolicy(req, null).then((resp) => resp.toObject()); diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json index 63fbc0806c..dd17b1d248 100644 --- a/console/src/assets/i18n/de.json +++ b/console/src/assets/i18n/de.json @@ -194,6 +194,8 @@ } }, "RESOURCEID": "Ressourcen-ID", + "NAME": "Name", + "VERSION": "Version", "TABLE": { "NOROWS": "Keine Daten" }, @@ -707,6 +709,17 @@ "TITLE": "Manager", "DESCRIPTION": "Diese Manager können instanzweite Einstellungen vornehmen." }, + "PAGES": { + "STATE": "Status", + "DOMAINLIST": "Domains" + }, + "STATE": { + "0": "Unspezifisch", + "1": "Wird erstellt", + "2": "Aktiv", + "3": "Wird gestoppt", + "4": "Gestoppt" + }, "VIEWS": { "TITLE": "Views", "DESCRIPTION": "Diese Ansicht zeigt die Anzeigen von ZITADEL. Diese können bei Bedarf zurückgesetzt werden.", diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index fce53f87d2..8cfa999c8b 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -194,6 +194,8 @@ } }, "RESOURCEID": "Resource Id", + "NAME": "Name", + "VERSION": "Version", "TABLE": { "NOROWS": "No data" }, @@ -707,6 +709,17 @@ "TITLE": "Managers", "DESCRIPTION": "These Managers are allowed to make changes in your instance." }, + "PAGES": { + "STATE": "Status", + "DOMAINLIST": "Domains" + }, + "STATE": { + "0": "Unspecified", + "1": "Creating", + "2": "Running", + "3": "Stopping", + "4": "Stopped" + }, "VIEWS": { "TITLE": "Views", "DESCRIPTION": "This card shows your ZITADEL views.", diff --git a/console/src/assets/i18n/fr.json b/console/src/assets/i18n/fr.json index e441ec3b8c..6c347e6845 100644 --- a/console/src/assets/i18n/fr.json +++ b/console/src/assets/i18n/fr.json @@ -194,6 +194,8 @@ } }, "RESOURCEID": "Id de la ressource", + "NAME": "Name", + "VERSION": "Version", "TABLE": { "NOROWS": "Pas de données" }, @@ -707,6 +709,17 @@ "TITLE": "Managers", "DESCRIPTION": "Ces gestionnaires sont autorisés à effectuer des changements dans votre instance." }, + "PAGES": { + "STATE": "Statut", + "DOMAINLIST": "Domaines" + }, + "STATE": { + "0": "Inconnu", + "1": "Créer", + "2": "Actif", + "3": "Arrêt", + "4": "Arrêté" + }, "VIEWS": { "TITLE": "Vues", "DESCRIPTION": "Cette carte montre vos vues ZITADEL.", diff --git a/console/src/assets/i18n/it.json b/console/src/assets/i18n/it.json index b8629f3a67..3050fa1763 100644 --- a/console/src/assets/i18n/it.json +++ b/console/src/assets/i18n/it.json @@ -194,6 +194,8 @@ } }, "RESOURCEID": "Resource ID", + "NAME": "Name", + "VERSION": "Versione", "TABLE": { "NOROWS": "Nessun dato" }, @@ -707,6 +709,17 @@ "TITLE": "Manager", "DESCRIPTION": "Questi manager possono modificare le impostazioni dell'istanza." }, + "PAGES": { + "STATE": "Stato", + "DOMAINLIST": "Domini" + }, + "STATE": { + "0": "Non specifico", + "1": "In fase di creazione", + "2": "Attiva", + "3": "In fase di arresto", + "4": "Arrestata" + }, "VIEWS": { "TITLE": "Views", "DESCRIPTION": "Questa carta mostra i tuoi view ZITADEL.",