diff --git a/console/src/app/modules/idp-table/idp-table.component.html b/console/src/app/modules/idp-table/idp-table.component.html index a3e620f4d2..4d22549875 100644 --- a/console/src/app/modules/idp-table/idp-table.component.html +++ b/console/src/app/modules/idp-table/idp-table.component.html @@ -59,6 +59,11 @@ Generic JWT +
+ + + GitHub Enterprise Server +
coming soon
diff --git a/console/src/app/modules/idp-table/idp-table.component.ts b/console/src/app/modules/idp-table/idp-table.component.ts index 0322c0d158..f15a3756fd 100644 --- a/console/src/app/modules/idp-table/idp-table.component.ts +++ b/console/src/app/modules/idp-table/idp-table.component.ts @@ -228,6 +228,8 @@ export class IdpTableComponent implements OnInit { switch (row.type) { case ProviderType.PROVIDER_TYPE_OIDC: return [row.owner === IDPOwnerType.IDP_OWNER_TYPE_SYSTEM ? '/instance' : '/org', 'provider', 'oidc', row.id]; + case ProviderType.PROVIDER_TYPE_GITHUB_ES: + return [row.owner === IDPOwnerType.IDP_OWNER_TYPE_SYSTEM ? '/instance' : '/org', 'provider', 'github-es', row.id]; case ProviderType.PROVIDER_TYPE_OAUTH: return [row.owner === IDPOwnerType.IDP_OWNER_TYPE_SYSTEM ? '/instance' : '/org', 'provider', 'oauth', row.id]; case ProviderType.PROVIDER_TYPE_JWT: diff --git a/console/src/app/modules/policies/idp-settings/idp-settings.component.html b/console/src/app/modules/policies/idp-settings/idp-settings.component.html index b37fb9f52d..aa656bb764 100644 --- a/console/src/app/modules/policies/idp-settings/idp-settings.component.html +++ b/console/src/app/modules/policies/idp-settings/idp-settings.component.html @@ -51,6 +51,24 @@ + + + + +
+ GitHub Enterprise Server +
+
+
{{ 'ACTIONS.COMINGSOON' | translate }} diff --git a/console/src/app/modules/providers/provider-github-es/provider-github-es-routing.module.ts b/console/src/app/modules/providers/provider-github-es/provider-github-es-routing.module.ts new file mode 100644 index 0000000000..66e95eb17c --- /dev/null +++ b/console/src/app/modules/providers/provider-github-es/provider-github-es-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { ProviderGithubESComponent } from './provider-github-es.component'; + +const routes: Routes = [ + { + path: '', + component: ProviderGithubESComponent, + data: { animation: 'DetailPage' }, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ProviderGithubESRoutingModule {} diff --git a/console/src/app/modules/providers/provider-github-es/provider-github-es.component.html b/console/src/app/modules/providers/provider-github-es/provider-github-es.component.html new file mode 100644 index 0000000000..03c2edc23b --- /dev/null +++ b/console/src/app/modules/providers/provider-github-es/provider-github-es.component.html @@ -0,0 +1,107 @@ + +
+
+ + + +

{{ 'IDP.CREATE.GITHUBES.TITLE' | translate }}

+ +
+ +

{{ 'IDP.CREATE.GITHUBES.DESCRIPTION' | translate }}

+ +
+ + {{ 'IDP.NAME' | translate }} + + + + + {{ 'IDP.AUTHORIZATIONENDPOINT' | translate }} + + + + + {{ 'IDP.TOKENENDPOINT' | translate }} + + + + + {{ 'IDP.USERENDPOINT' | translate }} + + + +
+ + {{ 'IDP.CLIENTID' | translate }} + + + + {{ + 'IDP.UPDATECLIENTSECRET' | translate + }} + + {{ 'IDP.CLIENTSECRET' | translate }} + + + +
+

{{ 'IDP.OPTIONAL' | translate }}

+ +
+
+
+
+ + {{ 'IDP.SCOPESLIST' | translate }} + + + + +
+ + + + + {{ scope }} cancel + + + +
+ + +
+
+ +
+ +
+
+
+
diff --git a/console/src/app/modules/providers/provider-github-es/provider-github-es.component.scss b/console/src/app/modules/providers/provider-github-es/provider-github-es.component.scss new file mode 100644 index 0000000000..167ce8e736 --- /dev/null +++ b/console/src/app/modules/providers/provider-github-es/provider-github-es.component.scss @@ -0,0 +1,96 @@ +.desc { + font-size: 14px; +} + +@mixin provider-github-es-theme($theme) { + $is-dark-theme: map-get($theme, is-dark); + + .github-es-create-content { + .title-row { + display: flex; + align-items: center; + + .idp-logo { + height: 36px; + width: 36px; + margin-right: 1rem; + flex-shrink: 0; + + &.dark { + display: if($is-dark-theme, block, none); + } + + &.light { + display: if($is-dark-theme, none, block); + } + } + + h1 { + margin: 0 1rem 0 0; + } + } + } + + .formfield { + display: block; + max-width: 400px; + + .mat-chip-input { + width: 100%; + margin: 0; + } + + .chip { + border-radius: 0.5rem; + height: 40px; + } + + @media only screen and (max-width: 450px) { + max-width: none; + } + } + + .github-es-content { + .desc { + margin-bottom: 1rem; + } + + .idp-scopes { + padding-bottom: 0.5rem; + + .flex-line { + display: flex; + align-items: flex-start; + max-width: 400px; + + .formfield { + flex: 1; + } + + .scope-add-button { + margin-top: 1.75rem; + } + } + } + } +} + +.github-es-create-actions { + display: flex; + margin-top: 1rem; + + button[mat-raised-button] { + border-radius: 0.5rem; + margin-right: 1rem; + padding: 0.5rem 4rem; + } +} + +.optional-h-wrapper { + display: flex; + align-items: center; + + h2 { + margin-right: 0.25rem; + } +} diff --git a/console/src/app/modules/providers/provider-github-es/provider-github-es.component.spec.ts b/console/src/app/modules/providers/provider-github-es/provider-github-es.component.spec.ts new file mode 100644 index 0000000000..0086bf0ce3 --- /dev/null +++ b/console/src/app/modules/providers/provider-github-es/provider-github-es.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { ProviderOAuthComponent } from './provider-oauth.component'; + +describe('ProviderOAuthComponent', () => { + let component: ProviderOAuthComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ProviderOAuthComponent], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ProviderOAuthComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/console/src/app/modules/providers/provider-github-es/provider-github-es.component.ts b/console/src/app/modules/providers/provider-github-es/provider-github-es.component.ts new file mode 100644 index 0000000000..740b4b99ec --- /dev/null +++ b/console/src/app/modules/providers/provider-github-es/provider-github-es.component.ts @@ -0,0 +1,288 @@ +import { COMMA, ENTER, SPACE } from '@angular/cdk/keycodes'; +import { Location } from '@angular/common'; +import { Component, Injector, Type } from '@angular/core'; +import { AbstractControl, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms'; +import { MatLegacyChipInputEvent as MatChipInputEvent } from '@angular/material/legacy-chips'; +import { ActivatedRoute } from '@angular/router'; +import { take } from 'rxjs'; +import { + AddGitHubEnterpriseServerProviderRequest as AdminAddGitHubEnterpriseServerProviderRequest, + GetProviderByIDRequest as AdminGetProviderByIDRequest, + UpdateGitHubEnterpriseServerProviderRequest as AdminUpdateGitHubEnterpriseServerProviderRequest, +} from 'src/app/proto/generated/zitadel/admin_pb'; +import { Options, Provider } from 'src/app/proto/generated/zitadel/idp_pb'; +import { + AddGitHubEnterpriseServerProviderRequest as MgmtAddGitHubEnterpriseServerProviderRequest, + GetProviderByIDRequest as MgmtGetProviderByIDRequest, + UpdateGitHubEnterpriseServerProviderRequest as MgmtUpdateGitHubEnterpriseServerProviderRequest, +} from 'src/app/proto/generated/zitadel/management_pb'; +import { AdminService } from 'src/app/services/admin.service'; +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'; + +import { PolicyComponentServiceType } from '../../policies/policy-component-types.enum'; + +@Component({ + selector: 'cnsl-provider-github-es', + templateUrl: './provider-github-es.component.html', + styleUrls: ['./provider-github-es.component.scss'], +}) +export class ProviderGithubESComponent { + public showOptional: boolean = false; + public options: Options = new Options(); + + public id: string | null = ''; + public updateClientSecret: boolean = false; + public serviceType: PolicyComponentServiceType = PolicyComponentServiceType.MGMT; + private service!: ManagementService | AdminService; + public readonly separatorKeysCodes: number[] = [ENTER, COMMA, SPACE]; + public form!: UntypedFormGroup; + + public loading: boolean = false; + + public provider?: Provider.AsObject; + + constructor( + private route: ActivatedRoute, + private toast: ToastService, + private injector: Injector, + private _location: Location, + breadcrumbService: BreadcrumbService, + ) { + this.form = new UntypedFormGroup({ + name: new UntypedFormControl('', [Validators.required]), + clientId: new UntypedFormControl('', [Validators.required]), + clientSecret: new UntypedFormControl('', [Validators.required]), + authorizationEndpoint: new UntypedFormControl('', [Validators.required]), + tokenEndpoint: new UntypedFormControl('', [Validators.required]), + userEndpoint: new UntypedFormControl('', [Validators.required]), + scopesList: new UntypedFormControl(['openid', 'profile', 'email'], []), + }); + + this.route.data.pipe(take(1)).subscribe((data) => { + this.serviceType = data.serviceType; + + switch (this.serviceType) { + case PolicyComponentServiceType.MGMT: + this.service = this.injector.get(ManagementService as Type); + + const bread: Breadcrumb = { + type: BreadcrumbType.ORG, + routerLink: ['/org'], + }; + + breadcrumbService.setBreadcrumb([bread]); + break; + case PolicyComponentServiceType.ADMIN: + this.service = this.injector.get(AdminService as Type); + + const iamBread = new Breadcrumb({ + type: BreadcrumbType.ORG, + name: 'Instance', + routerLink: ['/instance'], + }); + breadcrumbService.setBreadcrumb([iamBread]); + break; + } + + this.id = this.route.snapshot.paramMap.get('id'); + if (this.id) { + this.clientSecret?.setValidators([]); + this.getData(this.id); + } + }); + } + + private getData(id: string): void { + this.loading = true; + const req = + this.serviceType === PolicyComponentServiceType.ADMIN + ? new AdminGetProviderByIDRequest() + : new MgmtGetProviderByIDRequest(); + req.setId(id); + this.service + .getProviderByID(req) + .then((resp) => { + this.provider = resp.idp; + this.loading = false; + if (this.provider?.config?.githubEs) { + this.form.patchValue(this.provider.config.githubEs); + this.name?.setValue(this.provider.name); + } + }) + .catch((error) => { + this.toast.showError(error); + this.loading = false; + }); + } + + public submitForm(): void { + this.provider ? this.updateGenericOAuthProvider() : this.addGenericOAuthProvider(); + } + + public addGenericOAuthProvider(): void { + if (this.serviceType === PolicyComponentServiceType.MGMT) { + const req = new MgmtAddGitHubEnterpriseServerProviderRequest(); + + req.setName(this.name?.value); + req.setAuthorizationEndpoint(this.authorizationEndpoint?.value); + req.setTokenEndpoint(this.tokenEndpoint?.value); + req.setUserEndpoint(this.userEndpoint?.value); + req.setClientId(this.clientId?.value); + req.setClientSecret(this.clientSecret?.value); + req.setScopesList(this.scopesList?.value); + + this.loading = true; + (this.service as ManagementService) + .addGitHubEnterpriseServerProvider(req) + .then((idp) => { + setTimeout(() => { + this.loading = false; + this.close(); + }, 2000); + }) + .catch((error) => { + this.toast.showError(error); + this.loading = false; + }); + } else if (PolicyComponentServiceType.ADMIN) { + const req = new AdminAddGitHubEnterpriseServerProviderRequest(); + req.setName(this.name?.value); + req.setAuthorizationEndpoint(this.authorizationEndpoint?.value); + req.setTokenEndpoint(this.tokenEndpoint?.value); + req.setUserEndpoint(this.userEndpoint?.value); + req.setClientId(this.clientId?.value); + req.setClientSecret(this.clientSecret?.value); + req.setScopesList(this.scopesList?.value); + + this.loading = true; + (this.service as AdminService) + .addGitHubEnterpriseServerProvider(req) + .then((idp) => { + setTimeout(() => { + this.loading = false; + this.close(); + }, 2000); + }) + .catch((error) => { + this.toast.showError(error); + this.loading = false; + }); + } + } + + public updateGenericOAuthProvider(): void { + if (this.provider) { + if (this.serviceType === PolicyComponentServiceType.MGMT) { + const req = new MgmtUpdateGitHubEnterpriseServerProviderRequest(); + req.setId(this.provider.id); + req.setName(this.name?.value); + req.setAuthorizationEndpoint(this.authorizationEndpoint?.value); + req.setTokenEndpoint(this.tokenEndpoint?.value); + req.setUserEndpoint(this.userEndpoint?.value); + req.setClientId(this.clientId?.value); + req.setClientSecret(this.clientSecret?.value); + req.setScopesList(this.scopesList?.value); + + this.loading = true; + (this.service as ManagementService) + .updateGitHubEnterpriseServerProvider(req) + .then((idp) => { + setTimeout(() => { + this.loading = false; + this.close(); + }, 2000); + }) + .catch((error) => { + this.toast.showError(error); + this.loading = false; + }); + } else if (PolicyComponentServiceType.ADMIN) { + const req = new AdminUpdateGitHubEnterpriseServerProviderRequest(); + req.setId(this.provider.id); + req.setName(this.name?.value); + req.setAuthorizationEndpoint(this.authorizationEndpoint?.value); + req.setTokenEndpoint(this.tokenEndpoint?.value); + req.setUserEndpoint(this.userEndpoint?.value); + req.setClientId(this.clientId?.value); + req.setClientSecret(this.clientSecret?.value); + req.setScopesList(this.scopesList?.value); + + this.loading = true; + (this.service as AdminService) + .updateGitHubEnterpriseServerProvider(req) + .then((idp) => { + setTimeout(() => { + this.loading = false; + this.close(); + }, 2000); + }) + .catch((error) => { + this.toast.showError(error); + this.loading = false; + }); + } + } + } + + public close(): void { + this._location.back(); + } + + public addScope(event: MatChipInputEvent): void { + const input = event.chipInput?.inputElement; + const value = event.value.trim(); + + if (value !== '') { + if (this.scopesList?.value) { + this.scopesList.value.push(value); + if (input) { + input.value = ''; + } + } + } + } + + public removeScope(uri: string): void { + if (this.scopesList?.value) { + const index = this.scopesList.value.indexOf(uri); + + if (index !== undefined && index >= 0) { + this.scopesList.value.splice(index, 1); + } + } + } + + public get name(): AbstractControl | null { + return this.form.get('name'); + } + + public get authorizationEndpoint(): AbstractControl | null { + return this.form.get('authorizationEndpoint'); + } + + public get tokenEndpoint(): AbstractControl | null { + return this.form.get('tokenEndpoint'); + } + + public get userEndpoint(): AbstractControl | null { + return this.form.get('userEndpoint'); + } + + public get clientId(): AbstractControl | null { + return this.form.get('clientId'); + } + + public get clientSecret(): AbstractControl | null { + return this.form.get('clientSecret'); + } + + public get issuer(): AbstractControl | null { + return this.form.get('issuer'); + } + + public get scopesList(): AbstractControl | null { + return this.form.get('scopesList'); + } +} diff --git a/console/src/app/modules/providers/provider-github-es/provider-github-es.module.ts b/console/src/app/modules/providers/provider-github-es/provider-github-es.module.ts new file mode 100644 index 0000000000..b334a531f4 --- /dev/null +++ b/console/src/app/modules/providers/provider-github-es/provider-github-es.module.ts @@ -0,0 +1,43 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatIconModule } from '@angular/material/icon'; +import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button'; +import { MatLegacyCheckboxModule as MatCheckboxModule } from '@angular/material/legacy-checkbox'; +import { MatLegacyChipsModule as MatChipsModule } from '@angular/material/legacy-chips'; +import { MatLegacyProgressSpinnerModule } from '@angular/material/legacy-progress-spinner'; +import { MatLegacySelectModule as MatSelectModule } from '@angular/material/legacy-select'; +import { MatLegacyTooltipModule as MatTooltipModule } from '@angular/material/legacy-tooltip'; +import { TranslateModule } from '@ngx-translate/core'; +import { InputModule } from 'src/app/modules/input/input.module'; + +import { CardModule } from '../../card/card.module'; +import { CreateLayoutModule } from '../../create-layout/create-layout.module'; +import { InfoSectionModule } from '../../info-section/info-section.module'; +import { ProviderOptionsModule } from '../../provider-options/provider-options.module'; +import { ProviderGithubESRoutingModule } from './provider-github-es-routing.module'; +import { ProviderGithubESComponent } from './provider-github-es.component'; + +@NgModule({ + declarations: [ProviderGithubESComponent], + imports: [ + ProviderGithubESRoutingModule, + CommonModule, + FormsModule, + ReactiveFormsModule, + CreateLayoutModule, + InfoSectionModule, + InputModule, + MatButtonModule, + MatSelectModule, + MatIconModule, + MatChipsModule, + CardModule, + MatCheckboxModule, + MatTooltipModule, + TranslateModule, + ProviderOptionsModule, + MatLegacyProgressSpinnerModule, + ], +}) +export default class ProviderGithubESModule {} diff --git a/console/src/app/pages/instance/instance-routing.module.ts b/console/src/app/pages/instance/instance-routing.module.ts index 1ba2a043be..4102c3bd14 100644 --- a/console/src/app/pages/instance/instance-routing.module.ts +++ b/console/src/app/pages/instance/instance-routing.module.ts @@ -57,6 +57,19 @@ const routes: Routes = [ }, ], }, + { + path: 'github-es', + children: [ + { + path: 'create', + loadChildren: () => import('src/app/modules/providers/provider-github-es/provider-github-es.module'), + }, + { + path: ':id', + loadChildren: () => import('src/app/modules/providers/provider-github-es/provider-github-es.module'), + }, + ], + }, { path: 'jwt', children: [ diff --git a/console/src/app/pages/orgs/org-routing.module.ts b/console/src/app/pages/orgs/org-routing.module.ts index d4300276a6..810ed0eebb 100644 --- a/console/src/app/pages/orgs/org-routing.module.ts +++ b/console/src/app/pages/orgs/org-routing.module.ts @@ -45,6 +45,19 @@ const routes: Routes = [ }, ], }, + { + path: 'github-es', + children: [ + { + path: 'create', + loadChildren: () => import('src/app/modules/providers/provider-github-es/provider-github-es.module'), + }, + { + path: ':id', + loadChildren: () => import('src/app/modules/providers/provider-github-es/provider-github-es.module'), + }, + ], + }, { path: 'jwt', children: [ diff --git a/console/src/app/services/admin.service.ts b/console/src/app/services/admin.service.ts index 59d4eb2474..7c03d46b3e 100644 --- a/console/src/app/services/admin.service.ts +++ b/console/src/app/services/admin.service.ts @@ -12,6 +12,8 @@ import { AddGenericOAuthProviderResponse, AddGenericOIDCProviderRequest, AddGenericOIDCProviderResponse, + AddGitHubEnterpriseServerProviderRequest, + AddGitHubEnterpriseServerProviderResponse, AddGitHubProviderRequest, AddGitHubProviderResponse, AddGoogleProviderRequest, @@ -202,6 +204,8 @@ import { UpdateGenericOAuthProviderResponse, UpdateGenericOIDCProviderRequest, UpdateGenericOIDCProviderResponse, + UpdateGitHubEnterpriseServerProviderRequest, + UpdateGitHubEnterpriseServerProviderResponse, UpdateGitHubProviderRequest, UpdateGitHubProviderResponse, UpdateGoogleProviderRequest, @@ -946,6 +950,18 @@ export class AdminService { return this.grpcService.admin.updateJWTProvider(req, null).then((resp) => resp.toObject()); } + public addGitHubEnterpriseServerProvider( + req: AddGitHubEnterpriseServerProviderRequest, + ): Promise { + return this.grpcService.admin.addGitHubEnterpriseServerProvider(req, null).then((resp) => resp.toObject()); + } + + public updateGitHubEnterpriseServerProvider( + req: UpdateGitHubEnterpriseServerProviderRequest, + ): Promise { + return this.grpcService.admin.updateGitHubEnterpriseServerProvider(req, null).then((resp) => resp.toObject()); + } + public deleteProvider(req: DeleteProviderRequest): Promise { return this.grpcService.admin.deleteProvider(req, null).then((resp) => resp.toObject()); } diff --git a/console/src/app/services/mgmt.service.ts b/console/src/app/services/mgmt.service.ts index c06459a6f1..af2d200b61 100644 --- a/console/src/app/services/mgmt.service.ts +++ b/console/src/app/services/mgmt.service.ts @@ -33,6 +33,8 @@ import { AddGenericOAuthProviderResponse, AddGenericOIDCProviderRequest, AddGenericOIDCProviderResponse, + AddGitHubEnterpriseServerProviderRequest, + AddGitHubEnterpriseServerProviderResponse, AddGitHubProviderRequest, AddGitHubProviderResponse, AddGoogleProviderRequest, @@ -435,6 +437,8 @@ import { UpdateGenericOAuthProviderResponse, UpdateGenericOIDCProviderRequest, UpdateGenericOIDCProviderResponse, + UpdateGitHubEnterpriseServerProviderRequest, + UpdateGitHubEnterpriseServerProviderResponse, UpdateGitHubProviderRequest, UpdateGitHubProviderResponse, UpdateGoogleProviderRequest, @@ -905,6 +909,18 @@ export class ManagementService { return this.grpcService.mgmt.updateJWTProvider(req, null).then((resp) => resp.toObject()); } + public addGitHubEnterpriseServerProvider( + req: AddGitHubEnterpriseServerProviderRequest, + ): Promise { + return this.grpcService.mgmt.addGitHubEnterpriseServerProvider(req, null).then((resp) => resp.toObject()); + } + + public updateGitHubEnterpriseServerProvider( + req: UpdateGitHubEnterpriseServerProviderRequest, + ): Promise { + return this.grpcService.mgmt.updateGitHubEnterpriseServerProvider(req, null).then((resp) => resp.toObject()); + } + public deleteProvider(req: DeleteProviderRequest): Promise { return this.grpcService.mgmt.deleteProvider(req, null).then((resp) => resp.toObject()); } diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json index 1e922debba..b0b9fd7250 100644 --- a/console/src/assets/i18n/de.json +++ b/console/src/assets/i18n/de.json @@ -1630,6 +1630,10 @@ "TITLE": "Google Provider", "DESCRIPTION": "Geben Sie die erforderlichen Daten für Ihren Google-Identitätsprovider ein." }, + "GITHUBES": { + "TITLE": "GitHub Enterprise Server Provider", + "DESCRIPTION": "Geben Sie die erforderlichen Daten für Ihren GitHub Enterprise Server ein." + }, "GITHUB": { "TITLE": "Github Provider", "DESCRIPTION": "Geben Sie die erforderlichen Daten für Ihren Github-Identitätsprovider ein." @@ -1678,9 +1682,9 @@ "SETAVAILABLE": "verfügbar setzen", "SETUNAVAILABLE": "auf nicht verfügbar setzen", "NAME": "Name", - "AUTHORIZATIONENDPOINT": "Authorization Endpunkt", - "TOKENENDPOINT": "Token Endpunkt", - "USERENDPOINT": "User Endpunkt", + "AUTHORIZATIONENDPOINT": "Authorization Endpoint", + "TOKENENDPOINT": "Token Endpoint", + "USERENDPOINT": "User Endpoint", "IDATTRIBUTE": "ID Attribut", "CONFIG": "Konfiguration", "STATE": "Status", diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index 6ff14a28e8..a30577cb16 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -1635,6 +1635,10 @@ "TITLE": "Google Provider", "DESCRIPTION": "Enter the credentials for your Google Identity Provider" }, + "GITHUBES": { + "TITLE": "GitHub Enterprise Server Provider", + "DESCRIPTION": "Enter the credentials for your GitHub Enterprise Server Identity Provider" + }, "GITHUB": { "TITLE": "Github Provider", "DESCRIPTION": "Enter the credentials for your Github Identity Provider" diff --git a/console/src/assets/i18n/fr.json b/console/src/assets/i18n/fr.json index bc4a21ffe2..1be1c6b7a8 100644 --- a/console/src/assets/i18n/fr.json +++ b/console/src/assets/i18n/fr.json @@ -1634,6 +1634,10 @@ "TITLE": "Fournisseur Google", "DESCRIPTION": "Saisissez les informations d'identification de votre fournisseur d'identité Google" }, + "GITHUBES": { + "TITLE": "Fournisseur GitHub Enterprise Server", + "DESCRIPTION": "Saisissez les informations d'identification de votre fournisseur d'identité GitHub Enterprise Server" + }, "GITHUB": { "TITLE": "Fournisseur Github", "DESCRIPTION": "Saisissez les informations d'identification de votre fournisseur d'identité Github" diff --git a/console/src/assets/i18n/it.json b/console/src/assets/i18n/it.json index ae148e99fd..0ab2621b5c 100644 --- a/console/src/assets/i18n/it.json +++ b/console/src/assets/i18n/it.json @@ -1635,6 +1635,10 @@ "TITLE": "Google Provider", "DESCRIPTION": "Inserisci i dati necessari per il tuo Google provider." }, + "GITHUBES": { + "TITLE": "GitHub Enterprise Server Provider", + "DESCRIPTION": "Inserisci i dati necessari per il tuo GitHub Enterprise Server provider." + }, "GITHUB": { "TITLE": "Github Provider", "DESCRIPTION": "Inserisci i dati necessari per il tuo Github provider." diff --git a/console/src/assets/i18n/pl.json b/console/src/assets/i18n/pl.json index 9ada33c7f2..dca5fefd41 100644 --- a/console/src/assets/i18n/pl.json +++ b/console/src/assets/i18n/pl.json @@ -1634,6 +1634,10 @@ "TITLE": "Google Provider", "DESCRIPTION": "Wprowadź dane dla swojego dostawcy tożsamości Google" }, + "GITHUBES": { + "TITLE": "GitHub Enterprise Server Provider", + "DESCRIPTION": "Wprowadź dane dla swojego dostawcy tożsamości GitHub Enterprise Server" + }, "GITHUB": { "TITLE": "Github Provider", "DESCRIPTION": "Wprowadź dane dla swojego dostawcy tożsamości Github" diff --git a/console/src/assets/i18n/zh.json b/console/src/assets/i18n/zh.json index cbf27fd6c1..05e484cf88 100644 --- a/console/src/assets/i18n/zh.json +++ b/console/src/assets/i18n/zh.json @@ -1633,6 +1633,10 @@ "TITLE": "Google 身份提供者", "DESCRIPTION": "输入您的 Google 身份提供商的凭据" }, + "GITHUBES": { + "TITLE": "Github Enterprise Server 身份提供者", + "DESCRIPTION": "输入您的GitHubEnterpriseServer身份提供者的凭据" + }, "GITHUB": { "TITLE": "Github 身份提供者", "DESCRIPTION": "输入您的 Github 身份提供商的凭据" diff --git a/console/src/component-themes.scss b/console/src/component-themes.scss index eab89c7343..c278dca29c 100644 --- a/console/src/component-themes.scss +++ b/console/src/component-themes.scss @@ -14,6 +14,7 @@ @import 'src/app/modules/nav/nav.component'; @import 'src/app/modules/nav-toggle/nav-toggle.component'; @import './styles/toast.scss'; +@import 'src/app/modules/providers/provider-github-es/provider-github-es.component'; @import 'src/app/modules/table-actions/table-actions.component'; @import 'src/app/modules/org-context/org-context.component.scss'; @import 'src/app/modules/action-keys/action-keys.component.scss'; @@ -89,6 +90,7 @@ @include footer-theme($theme); @include table-theme($theme); @include detail-layout-theme($theme); + @include provider-github-es-theme($theme); @include app-card-theme($theme); @include provider-github-theme($theme); @include login-policy-mfas-theme($theme);