mirror of
https://github.com/zitadel/zitadel.git
synced 2025-04-22 12:11:32 +00:00
fix(console): Implement generic feature toggle (#9516)
This PR implements a component which is used to render the feature settings in a generic way. All features besides`loginV2` and `improvedPerformance` are rendered. Note: The feature flags are not autogenerated as the console needs descriptions for the respective features and there are multiple types where additional fields like text input is required Closes #9090 --------- Co-authored-by: conblem <mail@conblem.me>
This commit is contained in:
parent
b418ea75bb
commit
83108d1dc3
@ -0,0 +1,40 @@
|
|||||||
|
<div class="feature-row" *ngIf="$any(toggleStates)[toggleStateKey]">
|
||||||
|
<span>{{ 'SETTING.FEATURES.' + toggleStateKey.toUpperCase() | translate }}</span>
|
||||||
|
<div class="row">
|
||||||
|
<mat-button-toggle-group
|
||||||
|
class="theme-toggle"
|
||||||
|
class="buttongroup"
|
||||||
|
[(ngModel)]="$any(toggleStates)[toggleStateKey].state"
|
||||||
|
(change)="onToggleChange()"
|
||||||
|
name="displayview"
|
||||||
|
>
|
||||||
|
<mat-button-toggle [value]="ToggleState.DISABLED">
|
||||||
|
<div class="toggle-row">
|
||||||
|
<span>{{ 'SETTING.FEATURES.STATES.DISABLED' | translate }}</span>
|
||||||
|
|
||||||
|
<div
|
||||||
|
*ngIf="!enabled && isInherited"
|
||||||
|
class="current-dot"
|
||||||
|
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.DISABLED' | translate }}"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</mat-button-toggle>
|
||||||
|
<mat-button-toggle [value]="ToggleState.ENABLED">
|
||||||
|
<div class="toggle-row">
|
||||||
|
<span>{{ 'SETTING.FEATURES.STATES.ENABLED' | translate }}</span>
|
||||||
|
<div
|
||||||
|
*ngIf="enabled && isInherited"
|
||||||
|
class="current-dot"
|
||||||
|
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.ENABLED' | translate }}"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</mat-button-toggle>
|
||||||
|
</mat-button-toggle-group>
|
||||||
|
</div>
|
||||||
|
<ng-content></ng-content>
|
||||||
|
<cnsl-info-section
|
||||||
|
class="feature-info"
|
||||||
|
*ngIf="'SETTING.FEATURES.' + toggleStateKey.toUpperCase() + '_DESCRIPTION' | translate as i18nDescription"
|
||||||
|
>{{ i18nDescription }}</cnsl-info-section
|
||||||
|
>
|
||||||
|
</div>
|
@ -0,0 +1,39 @@
|
|||||||
|
.feature-row {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
|
||||||
|
.row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.buttongroup {
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
|
||||||
|
.toggle-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
i {
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-i {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-dot {
|
||||||
|
height: 8px;
|
||||||
|
width: 8px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
background-color: rgb(59, 128, 247);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||||
|
import { CopyToClipboardModule } from '../../directives/copy-to-clipboard/copy-to-clipboard.module';
|
||||||
|
import { CopyRowComponent } from '../copy-row/copy-row.component';
|
||||||
|
import { InfoSectionModule } from 'src/app/modules/info-section/info-section.module';
|
||||||
|
import { ToggleState, ToggleStateKeys, ToggleStates } from '../features/features.component';
|
||||||
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
||||||
|
import { FormsModule } from '@angular/forms';
|
||||||
|
import { GetInstanceFeaturesResponse } from '@zitadel/proto/zitadel/feature/v2/instance_pb';
|
||||||
|
import { FeatureFlag, Source } from '@zitadel/proto/zitadel/feature/v2/feature_pb';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
standalone: true,
|
||||||
|
selector: 'cnsl-feature-toggle',
|
||||||
|
templateUrl: './feature-toggle.component.html',
|
||||||
|
styleUrls: ['./feature-toggle.component.scss'],
|
||||||
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
FormsModule,
|
||||||
|
TranslateModule,
|
||||||
|
MatButtonModule,
|
||||||
|
InfoSectionModule,
|
||||||
|
MatTooltipModule,
|
||||||
|
CopyToClipboardModule,
|
||||||
|
CopyRowComponent,
|
||||||
|
MatButtonToggleModule,
|
||||||
|
],
|
||||||
|
})
|
||||||
|
export class FeatureToggleComponent {
|
||||||
|
@Input() featureData: Partial<GetInstanceFeaturesResponse> = {};
|
||||||
|
@Input() toggleStates: Partial<ToggleStates> = {};
|
||||||
|
@Input() toggleStateKey: string = '';
|
||||||
|
@Output() toggleChange = new EventEmitter<void>();
|
||||||
|
|
||||||
|
protected ToggleState = ToggleState;
|
||||||
|
protected Source = Source;
|
||||||
|
|
||||||
|
get isInherited(): boolean {
|
||||||
|
const source = this.featureData[this.toggleStateKey as ToggleStateKeys]?.source;
|
||||||
|
return source == Source.SYSTEM || source == Source.UNSPECIFIED;
|
||||||
|
}
|
||||||
|
|
||||||
|
get enabled() {
|
||||||
|
// TODO: remove casting as not all features are a FeatureFlag
|
||||||
|
return (this.featureData[this.toggleStateKey as ToggleStateKeys] as FeatureFlag)?.enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
onToggleChange() {
|
||||||
|
this.toggleChange.emit();
|
||||||
|
}
|
||||||
|
}
|
@ -20,389 +20,13 @@
|
|||||||
|
|
||||||
<cnsl-card *ngIf="toggleStates && featureData">
|
<cnsl-card *ngIf="toggleStates && featureData">
|
||||||
<div class="features">
|
<div class="features">
|
||||||
<div class="feature-row" *ngIf="toggleStates.loginDefaultOrg">
|
<cnsl-feature-toggle
|
||||||
<span>{{ 'SETTING.FEATURES.LOGINDEFAULTORG' | translate }}</span>
|
*ngFor="let key of toggleStateKeys"
|
||||||
<div class="row">
|
[featureData]="featureData"
|
||||||
<mat-button-toggle-group
|
[toggleStates]="toggleStates"
|
||||||
class="theme-toggle"
|
[toggleStateKey]="key"
|
||||||
class="buttongroup"
|
(toggleChange)="validateAndSave()"
|
||||||
[(ngModel)]="toggleStates.loginDefaultOrg.state"
|
></cnsl-feature-toggle>
|
||||||
(change)="validateAndSave()"
|
|
||||||
name="displayview"
|
|
||||||
aria-label="Display View"
|
|
||||||
>
|
|
||||||
<mat-button-toggle [value]="ToggleState.INHERITED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span>{{ 'SETTING.FEATURES.STATES.INHERITED' | translate }}</span>
|
|
||||||
<i
|
|
||||||
class="info-i las la-question-circle"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITED_DESCRIPTION' | translate }}"
|
|
||||||
></i>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!!featureData.loginDefaultOrg?.enabled &&
|
|
||||||
(featureData.loginDefaultOrg?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.loginDefaultOrg?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot enabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.ENABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!featureData.loginDefaultOrg?.enabled &&
|
|
||||||
(featureData.loginDefaultOrg?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.loginDefaultOrg?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot disabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.DISABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.DISABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.DISABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.ENABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.ENABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
</mat-button-toggle-group>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<cnsl-info-section class="feature-info">{{
|
|
||||||
'SETTING.FEATURES.LOGINDEFAULTORG_DESCRIPTION' | translate
|
|
||||||
}}</cnsl-info-section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="feature-row" *ngIf="toggleStates.oidcLegacyIntrospection">
|
|
||||||
<span>{{ 'SETTING.FEATURES.OIDCLEGACYINTROSPECTION' | translate }}</span>
|
|
||||||
<div class="row">
|
|
||||||
<mat-button-toggle-group
|
|
||||||
class="theme-toggle"
|
|
||||||
class="buttongroup"
|
|
||||||
[(ngModel)]="toggleStates.oidcLegacyIntrospection.state"
|
|
||||||
(change)="validateAndSave()"
|
|
||||||
name="displayview"
|
|
||||||
aria-label="Display View"
|
|
||||||
>
|
|
||||||
<mat-button-toggle [value]="ToggleState.INHERITED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span>{{ 'SETTING.FEATURES.STATES.INHERITED' | translate }}</span>
|
|
||||||
<i
|
|
||||||
class="info-i las la-question-circle"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITED_DESCRIPTION' | translate }}"
|
|
||||||
></i>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!!featureData.oidcLegacyIntrospection?.enabled &&
|
|
||||||
(featureData.oidcLegacyIntrospection?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.oidcLegacyIntrospection?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot enabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.ENABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!featureData.oidcLegacyIntrospection?.enabled &&
|
|
||||||
(featureData.oidcLegacyIntrospection?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.oidcLegacyIntrospection?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot disabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.DISABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.DISABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.DISABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.ENABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.ENABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
</mat-button-toggle-group>
|
|
||||||
</div>
|
|
||||||
<cnsl-info-section class="feature-info">{{
|
|
||||||
'SETTING.FEATURES.OIDCLEGACYINTROSPECTION_DESCRIPTION' | translate
|
|
||||||
}}</cnsl-info-section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="feature-row" *ngIf="toggleStates.oidcTokenExchange">
|
|
||||||
<span>{{ 'SETTING.FEATURES.OIDCTOKENEXCHANGE' | translate }}</span>
|
|
||||||
<div class="row">
|
|
||||||
<mat-button-toggle-group
|
|
||||||
class="theme-toggle"
|
|
||||||
class="buttongroup"
|
|
||||||
[(ngModel)]="toggleStates.oidcTokenExchange.state"
|
|
||||||
(change)="validateAndSave()"
|
|
||||||
name="displayview"
|
|
||||||
aria-label="Display View"
|
|
||||||
>
|
|
||||||
<mat-button-toggle [value]="ToggleState.INHERITED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span>{{ 'SETTING.FEATURES.STATES.INHERITED' | translate }}</span>
|
|
||||||
<i
|
|
||||||
class="info-i las la-question-circle"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITED_DESCRIPTION' | translate }}"
|
|
||||||
></i>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!!featureData.oidcTokenExchange?.enabled &&
|
|
||||||
(featureData.oidcTokenExchange?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.oidcTokenExchange?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot enabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.ENABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!featureData.oidcTokenExchange?.enabled &&
|
|
||||||
(featureData.oidcTokenExchange?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.oidcTokenExchange?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot disabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.DISABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.DISABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.DISABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.ENABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.ENABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
</mat-button-toggle-group>
|
|
||||||
</div>
|
|
||||||
<cnsl-info-section class="feature-info">{{
|
|
||||||
'SETTING.FEATURES.OIDCTOKENEXCHANGE_DESCRIPTION' | translate
|
|
||||||
}}</cnsl-info-section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="feature-row" *ngIf="toggleStates.oidcTriggerIntrospectionProjections">
|
|
||||||
<span>{{ 'SETTING.FEATURES.OIDCTRIGGERINTROSPECTIONPROJECTIONS' | translate }}</span>
|
|
||||||
<div class="row">
|
|
||||||
<mat-button-toggle-group
|
|
||||||
class="theme-toggle"
|
|
||||||
class="buttongroup"
|
|
||||||
[(ngModel)]="toggleStates.oidcTriggerIntrospectionProjections.state"
|
|
||||||
(change)="validateAndSave()"
|
|
||||||
name="displayview"
|
|
||||||
aria-label="Display View"
|
|
||||||
>
|
|
||||||
<mat-button-toggle [value]="ToggleState.INHERITED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span>{{ 'SETTING.FEATURES.STATES.INHERITED' | translate }}</span>
|
|
||||||
<i
|
|
||||||
class="info-i las la-question-circle"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITED_DESCRIPTION' | translate }}"
|
|
||||||
></i>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!!featureData.oidcTriggerIntrospectionProjections?.enabled &&
|
|
||||||
(featureData.oidcTriggerIntrospectionProjections?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.oidcTriggerIntrospectionProjections?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot enabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.ENABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!featureData.oidcTriggerIntrospectionProjections?.enabled &&
|
|
||||||
(featureData.oidcTriggerIntrospectionProjections?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.oidcTriggerIntrospectionProjections?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot disabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.DISABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.DISABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.DISABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.ENABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.ENABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
</mat-button-toggle-group>
|
|
||||||
</div>
|
|
||||||
<cnsl-info-section class="feature-info">{{
|
|
||||||
'SETTING.FEATURES.OIDCTRIGGERINTROSPECTIONPROJECTIONS_DESCRIPTION' | translate
|
|
||||||
}}</cnsl-info-section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="feature-row" *ngIf="toggleStates.userSchema">
|
|
||||||
<span>{{ 'SETTING.FEATURES.USERSCHEMA' | translate }}</span>
|
|
||||||
<div class="row">
|
|
||||||
<mat-button-toggle-group
|
|
||||||
class="theme-toggle"
|
|
||||||
class="buttongroup"
|
|
||||||
[(ngModel)]="toggleStates.userSchema.state"
|
|
||||||
(change)="validateAndSave()"
|
|
||||||
name="displayview"
|
|
||||||
aria-label="Display View"
|
|
||||||
>
|
|
||||||
<mat-button-toggle [value]="ToggleState.INHERITED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span>{{ 'SETTING.FEATURES.STATES.INHERITED' | translate }}</span>
|
|
||||||
<i
|
|
||||||
class="info-i las la-question-circle"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITED_DESCRIPTION' | translate }}"
|
|
||||||
></i>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!!featureData.userSchema?.enabled &&
|
|
||||||
(featureData.userSchema?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.userSchema?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot enabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.ENABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!featureData.userSchema?.enabled &&
|
|
||||||
(featureData.userSchema?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.userSchema?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot disabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.DISABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.DISABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.DISABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.ENABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.ENABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
</mat-button-toggle-group>
|
|
||||||
</div>
|
|
||||||
<cnsl-info-section class="feature-info">{{
|
|
||||||
'SETTING.FEATURES.USERSCHEMA_DESCRIPTION' | translate
|
|
||||||
}}</cnsl-info-section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="feature-row" *ngIf="toggleStates.actions">
|
|
||||||
<span>{{ 'SETTING.FEATURES.ACTIONS' | translate }}</span>
|
|
||||||
<div class="row">
|
|
||||||
<mat-button-toggle-group
|
|
||||||
class="theme-toggle"
|
|
||||||
class="buttongroup"
|
|
||||||
[(ngModel)]="toggleStates.actions.state"
|
|
||||||
(change)="validateAndSave()"
|
|
||||||
name="displayview"
|
|
||||||
aria-label="Display View"
|
|
||||||
>
|
|
||||||
<mat-button-toggle [value]="ToggleState.INHERITED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span>{{ 'SETTING.FEATURES.STATES.INHERITED' | translate }}</span>
|
|
||||||
<i
|
|
||||||
class="info-i las la-question-circle"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITED_DESCRIPTION' | translate }}"
|
|
||||||
></i>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!!featureData.actions?.enabled &&
|
|
||||||
(featureData.actions?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.actions?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot enabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.ENABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!featureData.actions?.enabled &&
|
|
||||||
(featureData.actions?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.actions?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot disabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.DISABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.DISABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.DISABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.ENABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.ENABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
</mat-button-toggle-group>
|
|
||||||
</div>
|
|
||||||
<cnsl-info-section class="feature-info">{{ 'SETTING.FEATURES.ACTIONS_DESCRIPTION' | translate }}</cnsl-info-section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="feature-row" *ngIf="toggleStates.oidcSingleV1SessionTermination">
|
|
||||||
<span>{{ 'SETTING.FEATURES.OIDCSINGLEV1SESSIONTERMINATION' | translate }}</span>
|
|
||||||
<div class="row">
|
|
||||||
<mat-button-toggle-group
|
|
||||||
class="theme-toggle"
|
|
||||||
class="buttongroup"
|
|
||||||
[(ngModel)]="toggleStates.oidcSingleV1SessionTermination.state"
|
|
||||||
(change)="validateAndSave()"
|
|
||||||
name="displayview"
|
|
||||||
aria-label="Display View"
|
|
||||||
>
|
|
||||||
<mat-button-toggle [value]="ToggleState.INHERITED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span>{{ 'SETTING.FEATURES.STATES.INHERITED' | translate }}</span>
|
|
||||||
<i
|
|
||||||
class="info-i las la-question-circle"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITED_DESCRIPTION' | translate }}"
|
|
||||||
></i>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!!featureData.oidcSingleV1SessionTermination?.enabled &&
|
|
||||||
(featureData.oidcSingleV1SessionTermination?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.oidcSingleV1SessionTermination?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot enabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.ENABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
!featureData.oidcSingleV1SessionTermination?.enabled &&
|
|
||||||
(featureData.oidcSingleV1SessionTermination?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
featureData.oidcSingleV1SessionTermination?.source === Source.SOURCE_UNSPECIFIED)
|
|
||||||
"
|
|
||||||
class="current-dot disabled"
|
|
||||||
matTooltip="{{ 'SETTING.FEATURES.INHERITEDINDICATOR_DESCRIPTION.DISABLED' | translate }}"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.DISABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.DISABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
<mat-button-toggle [value]="ToggleState.ENABLED">
|
|
||||||
<div class="toggle-row">
|
|
||||||
<span> {{ 'SETTING.FEATURES.STATES.ENABLED' | translate }}</span>
|
|
||||||
</div>
|
|
||||||
</mat-button-toggle>
|
|
||||||
</mat-button-toggle-group>
|
|
||||||
</div>
|
|
||||||
<cnsl-info-section class="feature-info">{{
|
|
||||||
'SETTING.FEATURES.OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION' | translate
|
|
||||||
}}</cnsl-info-section>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</cnsl-card>
|
</cnsl-card>
|
||||||
</div>
|
</div>
|
||||||
|
@ -11,30 +11,46 @@ import { HasRoleModule } from 'src/app/directives/has-role/has-role.module';
|
|||||||
import { CardModule } from 'src/app/modules/card/card.module';
|
import { CardModule } from 'src/app/modules/card/card.module';
|
||||||
import { InfoSectionModule } from 'src/app/modules/info-section/info-section.module';
|
import { InfoSectionModule } from 'src/app/modules/info-section/info-section.module';
|
||||||
import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.module';
|
import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.module';
|
||||||
import { Source } from 'src/app/proto/generated/zitadel/feature/v2beta/feature_pb';
|
|
||||||
import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
|
import { Breadcrumb, BreadcrumbService, BreadcrumbType } from 'src/app/services/breadcrumb.service';
|
||||||
import { FeatureService } from 'src/app/services/feature.service';
|
|
||||||
import { ToastService } from 'src/app/services/toast.service';
|
import { ToastService } from 'src/app/services/toast.service';
|
||||||
|
import { FeatureToggleComponent } from '../feature-toggle/feature-toggle.component';
|
||||||
|
import { NewFeatureService } from 'src/app/services/new-feature.service';
|
||||||
import {
|
import {
|
||||||
GetInstanceFeaturesResponse,
|
GetInstanceFeaturesResponse,
|
||||||
SetInstanceFeaturesRequest,
|
SetInstanceFeaturesRequestSchema,
|
||||||
} from 'src/app/proto/generated/zitadel/feature/v2/instance_pb';
|
} from '@zitadel/proto/zitadel/feature/v2/instance_pb';
|
||||||
|
import { FeatureFlag, Source } from '@zitadel/proto/zitadel/feature/v2/feature_pb';
|
||||||
|
import { MessageInitShape } from '@bufbuild/protobuf';
|
||||||
|
|
||||||
enum ToggleState {
|
export enum ToggleState {
|
||||||
ENABLED = 'ENABLED',
|
ENABLED = 'ENABLED',
|
||||||
DISABLED = 'DISABLED',
|
DISABLED = 'DISABLED',
|
||||||
INHERITED = 'INHERITED',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: to add a new feature, add the key here and in the FEATURE_KEYS array
|
||||||
|
const FEATURE_KEYS: ToggleStateKeys[] = [
|
||||||
|
'actions',
|
||||||
|
'consoleUseV2UserApi',
|
||||||
|
'debugOidcParentError',
|
||||||
|
'disableUserTokenEvent',
|
||||||
|
'enableBackChannelLogout',
|
||||||
|
// 'improvedPerformance',
|
||||||
|
'loginDefaultOrg',
|
||||||
|
// 'loginV2',
|
||||||
|
'oidcLegacyIntrospection',
|
||||||
|
'oidcSingleV1SessionTermination',
|
||||||
|
'oidcTokenExchange',
|
||||||
|
'oidcTriggerIntrospectionProjections',
|
||||||
|
'permissionCheckV2',
|
||||||
|
'userSchema',
|
||||||
|
// 'webKey',
|
||||||
|
];
|
||||||
|
|
||||||
type FeatureState = { source: Source; state: ToggleState };
|
type FeatureState = { source: Source; state: ToggleState };
|
||||||
type ToggleStates = {
|
export type ToggleStateKeys = Exclude<keyof GetInstanceFeaturesResponse, 'details' | '$typeName' | '$unknown'>;
|
||||||
loginDefaultOrg?: FeatureState;
|
|
||||||
oidcTriggerIntrospectionProjections?: FeatureState;
|
export type ToggleStates = {
|
||||||
oidcLegacyIntrospection?: FeatureState;
|
[key in ToggleStateKeys]: FeatureState;
|
||||||
userSchema?: FeatureState;
|
|
||||||
oidcTokenExchange?: FeatureState;
|
|
||||||
actions?: FeatureState;
|
|
||||||
oidcSingleV1SessionTermination?: FeatureState;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@ -51,6 +67,7 @@ type ToggleStates = {
|
|||||||
InfoSectionModule,
|
InfoSectionModule,
|
||||||
MatTooltipModule,
|
MatTooltipModule,
|
||||||
HasRoleModule,
|
HasRoleModule,
|
||||||
|
FeatureToggleComponent,
|
||||||
],
|
],
|
||||||
standalone: true,
|
standalone: true,
|
||||||
selector: 'cnsl-features',
|
selector: 'cnsl-features',
|
||||||
@ -58,14 +75,14 @@ type ToggleStates = {
|
|||||||
styleUrls: ['./features.component.scss'],
|
styleUrls: ['./features.component.scss'],
|
||||||
})
|
})
|
||||||
export class FeaturesComponent {
|
export class FeaturesComponent {
|
||||||
protected featureData: GetInstanceFeaturesResponse.AsObject | undefined;
|
protected featureData: GetInstanceFeaturesResponse | undefined;
|
||||||
|
|
||||||
protected toggleStates: ToggleStates | undefined;
|
protected toggleStates: ToggleStates | undefined;
|
||||||
protected Source: any = Source;
|
protected Source: any = Source;
|
||||||
protected ToggleState: any = ToggleState;
|
protected ToggleState: any = ToggleState;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private featureService: FeatureService,
|
private featureService: NewFeatureService,
|
||||||
private breadcrumbService: BreadcrumbService,
|
private breadcrumbService: BreadcrumbService,
|
||||||
private toast: ToastService,
|
private toast: ToastService,
|
||||||
) {
|
) {
|
||||||
@ -78,50 +95,27 @@ export class FeaturesComponent {
|
|||||||
];
|
];
|
||||||
this.breadcrumbService.setBreadcrumb(breadcrumbs);
|
this.breadcrumbService.setBreadcrumb(breadcrumbs);
|
||||||
|
|
||||||
this.getFeatures(true);
|
this.getFeatures();
|
||||||
}
|
}
|
||||||
|
|
||||||
public validateAndSave() {
|
public validateAndSave() {
|
||||||
this.featureService.resetInstanceFeatures().then(() => {
|
const req: MessageInitShape<typeof SetInstanceFeaturesRequestSchema> = {
|
||||||
const req = new SetInstanceFeaturesRequest();
|
actions: this.toggleStates?.actions?.state === ToggleState.ENABLED,
|
||||||
let changed = false;
|
consoleUseV2UserApi: this.toggleStates?.consoleUseV2UserApi?.state === ToggleState.ENABLED,
|
||||||
|
debugOidcParentError: this.toggleStates?.debugOidcParentError?.state === ToggleState.ENABLED,
|
||||||
console.log(this.toggleStates);
|
disableUserTokenEvent: this.toggleStates?.disableUserTokenEvent?.state === ToggleState.ENABLED,
|
||||||
|
enableBackChannelLogout: this.toggleStates?.enableBackChannelLogout?.state === ToggleState.ENABLED,
|
||||||
if (this.toggleStates?.loginDefaultOrg?.state !== ToggleState.INHERITED) {
|
loginDefaultOrg: this.toggleStates?.loginDefaultOrg?.state === ToggleState.ENABLED,
|
||||||
req.setLoginDefaultOrg(this.toggleStates?.loginDefaultOrg?.state === ToggleState.ENABLED);
|
oidcLegacyIntrospection: this.toggleStates?.oidcLegacyIntrospection?.state === ToggleState.ENABLED,
|
||||||
changed = true;
|
oidcSingleV1SessionTermination: this.toggleStates?.oidcSingleV1SessionTermination?.state === ToggleState.ENABLED,
|
||||||
}
|
oidcTokenExchange: this.toggleStates?.oidcTokenExchange?.state === ToggleState.ENABLED,
|
||||||
if (this.toggleStates?.oidcTriggerIntrospectionProjections?.state !== ToggleState.INHERITED) {
|
oidcTriggerIntrospectionProjections:
|
||||||
req.setOidcTriggerIntrospectionProjections(
|
|
||||||
this.toggleStates?.oidcTriggerIntrospectionProjections?.state === ToggleState.ENABLED,
|
this.toggleStates?.oidcTriggerIntrospectionProjections?.state === ToggleState.ENABLED,
|
||||||
);
|
permissionCheckV2: this.toggleStates?.permissionCheckV2?.state === ToggleState.ENABLED,
|
||||||
changed = true;
|
userSchema: this.toggleStates?.userSchema?.state === ToggleState.ENABLED,
|
||||||
}
|
// webKey: this.toggleStates?.webKey?.state === ToggleState.ENABLED,
|
||||||
if (this.toggleStates?.oidcLegacyIntrospection?.state !== ToggleState.INHERITED) {
|
};
|
||||||
req.setOidcLegacyIntrospection(this.toggleStates?.oidcLegacyIntrospection?.state === ToggleState.ENABLED);
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
if (this.toggleStates?.userSchema?.state !== ToggleState.INHERITED) {
|
|
||||||
req.setUserSchema(this.toggleStates?.userSchema?.state === ToggleState.ENABLED);
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
if (this.toggleStates?.oidcTokenExchange?.state !== ToggleState.INHERITED) {
|
|
||||||
req.setOidcTokenExchange(this.toggleStates?.oidcTokenExchange?.state === ToggleState.ENABLED);
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
if (this.toggleStates?.actions?.state !== ToggleState.INHERITED) {
|
|
||||||
req.setActions(this.toggleStates?.actions?.state === ToggleState.ENABLED);
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
if (this.toggleStates?.oidcSingleV1SessionTermination?.state !== ToggleState.INHERITED) {
|
|
||||||
req.setOidcSingleV1SessionTermination(
|
|
||||||
this.toggleStates?.oidcSingleV1SessionTermination?.state === ToggleState.ENABLED,
|
|
||||||
);
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (changed) {
|
|
||||||
this.featureService
|
this.featureService
|
||||||
.setInstanceFeatures(req)
|
.setInstanceFeatures(req)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@ -131,87 +125,27 @@ export class FeaturesComponent {
|
|||||||
this.toast.showError(error);
|
this.toast.showError(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getFeatures() {
|
||||||
|
this.featureService.getInstanceFeatures().then((instanceFeaturesResponse) => {
|
||||||
|
this.featureData = instanceFeaturesResponse;
|
||||||
|
this.toggleStates = this.createToggleStates(this.featureData);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private getFeatures(inheritance: boolean) {
|
private createToggleStates(featureData: GetInstanceFeaturesResponse): ToggleStates {
|
||||||
this.featureService.getInstanceFeatures(inheritance).then((instanceFeaturesResponse) => {
|
const toggleStates: Partial<ToggleStates> = {};
|
||||||
this.featureData = instanceFeaturesResponse.toObject();
|
|
||||||
console.log(this.featureData);
|
|
||||||
|
|
||||||
this.toggleStates = {
|
FEATURE_KEYS.forEach((key) => {
|
||||||
loginDefaultOrg: {
|
// TODO: Fix this type cast as not all keys are present as FeatureFlag
|
||||||
source: this.featureData.loginDefaultOrg?.source || Source.SOURCE_SYSTEM,
|
const feature = featureData[key] as unknown as FeatureFlag;
|
||||||
state:
|
toggleStates[key] = {
|
||||||
this.featureData.loginDefaultOrg?.source === Source.SOURCE_SYSTEM ||
|
source: feature?.source || Source.SYSTEM,
|
||||||
this.featureData.loginDefaultOrg?.source === Source.SOURCE_UNSPECIFIED
|
state: !!feature?.enabled ? ToggleState.ENABLED : ToggleState.DISABLED,
|
||||||
? ToggleState.INHERITED
|
|
||||||
: !!this.featureData.loginDefaultOrg?.enabled
|
|
||||||
? ToggleState.ENABLED
|
|
||||||
: ToggleState.DISABLED,
|
|
||||||
},
|
|
||||||
oidcTriggerIntrospectionProjections: {
|
|
||||||
source: this.featureData.oidcTriggerIntrospectionProjections?.source || Source.SOURCE_SYSTEM,
|
|
||||||
state:
|
|
||||||
this.featureData.oidcTriggerIntrospectionProjections?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
this.featureData.oidcTriggerIntrospectionProjections?.source === Source.SOURCE_UNSPECIFIED
|
|
||||||
? ToggleState.INHERITED
|
|
||||||
: !!this.featureData.oidcTriggerIntrospectionProjections?.enabled
|
|
||||||
? ToggleState.ENABLED
|
|
||||||
: ToggleState.DISABLED,
|
|
||||||
},
|
|
||||||
oidcLegacyIntrospection: {
|
|
||||||
source: this.featureData.oidcLegacyIntrospection?.source || Source.SOURCE_SYSTEM,
|
|
||||||
state:
|
|
||||||
this.featureData.oidcLegacyIntrospection?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
this.featureData.oidcLegacyIntrospection?.source === Source.SOURCE_UNSPECIFIED
|
|
||||||
? ToggleState.INHERITED
|
|
||||||
: !!this.featureData.oidcLegacyIntrospection?.enabled
|
|
||||||
? ToggleState.ENABLED
|
|
||||||
: ToggleState.DISABLED,
|
|
||||||
},
|
|
||||||
userSchema: {
|
|
||||||
source: this.featureData.userSchema?.source || Source.SOURCE_SYSTEM,
|
|
||||||
state:
|
|
||||||
this.featureData.userSchema?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
this.featureData.userSchema?.source === Source.SOURCE_UNSPECIFIED
|
|
||||||
? ToggleState.INHERITED
|
|
||||||
: !!this.featureData.userSchema?.enabled
|
|
||||||
? ToggleState.ENABLED
|
|
||||||
: ToggleState.DISABLED,
|
|
||||||
},
|
|
||||||
oidcTokenExchange: {
|
|
||||||
source: this.featureData.oidcTokenExchange?.source || Source.SOURCE_SYSTEM,
|
|
||||||
state:
|
|
||||||
this.featureData.oidcTokenExchange?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
this.featureData.oidcTokenExchange?.source === Source.SOURCE_UNSPECIFIED
|
|
||||||
? ToggleState.INHERITED
|
|
||||||
: !!this.featureData.oidcTokenExchange?.enabled
|
|
||||||
? ToggleState.ENABLED
|
|
||||||
: ToggleState.DISABLED,
|
|
||||||
},
|
|
||||||
actions: {
|
|
||||||
source: Source.SOURCE_SYSTEM,
|
|
||||||
state:
|
|
||||||
this.featureData.actions?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
this.featureData.actions?.source === Source.SOURCE_UNSPECIFIED
|
|
||||||
? ToggleState.INHERITED
|
|
||||||
: !!this.featureData.actions?.enabled
|
|
||||||
? ToggleState.ENABLED
|
|
||||||
: ToggleState.DISABLED,
|
|
||||||
},
|
|
||||||
oidcSingleV1SessionTermination: {
|
|
||||||
source: this.featureData.oidcSingleV1SessionTermination?.source || Source.SOURCE_SYSTEM,
|
|
||||||
state:
|
|
||||||
this.featureData.oidcSingleV1SessionTermination?.source === Source.SOURCE_SYSTEM ||
|
|
||||||
this.featureData.oidcSingleV1SessionTermination?.source === Source.SOURCE_UNSPECIFIED
|
|
||||||
? ToggleState.INHERITED
|
|
||||||
: !!this.featureData.oidcSingleV1SessionTermination?.enabled
|
|
||||||
? ToggleState.ENABLED
|
|
||||||
: ToggleState.DISABLED,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return toggleStates as ToggleStates;
|
||||||
}
|
}
|
||||||
|
|
||||||
public resetSettings(): void {
|
public resetSettings(): void {
|
||||||
@ -220,11 +154,15 @@ export class FeaturesComponent {
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
this.toast.showInfo('POLICY.TOAST.RESETSUCCESS', true);
|
this.toast.showInfo('POLICY.TOAST.RESETSUCCESS', true);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.getFeatures(true);
|
this.getFeatures();
|
||||||
}, 1000);
|
}, 1000);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this.toast.showError(error);
|
this.toast.showError(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public get toggleStateKeys() {
|
||||||
|
return Object.keys(this.toggleStates ?? {});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { GrpcService } from './grpc.service';
|
|
||||||
|
|
||||||
import {
|
|
||||||
GetOrganizationFeaturesRequest,
|
|
||||||
GetOrganizationFeaturesResponse,
|
|
||||||
} from '../proto/generated/zitadel/feature/v2beta/organization_pb';
|
|
||||||
import { GetUserFeaturesRequest, GetUserFeaturesResponse } from '../proto/generated/zitadel/feature/v2beta/user_pb';
|
|
||||||
import { GetSystemFeaturesRequest, GetSystemFeaturesResponse } from '../proto/generated/zitadel/feature/v2beta/system_pb';
|
|
||||||
import {
|
|
||||||
GetInstanceFeaturesRequest,
|
|
||||||
GetInstanceFeaturesResponse,
|
|
||||||
ResetInstanceFeaturesRequest,
|
|
||||||
SetInstanceFeaturesRequest,
|
|
||||||
SetInstanceFeaturesResponse,
|
|
||||||
} from '../proto/generated/zitadel/feature/v2/instance_pb';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class FeatureService {
|
|
||||||
constructor(private readonly grpcService: GrpcService) {}
|
|
||||||
|
|
||||||
public getInstanceFeatures(inheritance: boolean): Promise<GetInstanceFeaturesResponse> {
|
|
||||||
const req = new GetInstanceFeaturesRequest();
|
|
||||||
req.setInheritance(inheritance);
|
|
||||||
return this.grpcService.feature.getInstanceFeatures(req, null).then((resp) => resp);
|
|
||||||
}
|
|
||||||
|
|
||||||
public setInstanceFeatures(req: SetInstanceFeaturesRequest): Promise<SetInstanceFeaturesResponse> {
|
|
||||||
return this.grpcService.feature.setInstanceFeatures(req, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public resetInstanceFeatures(): Promise<SetInstanceFeaturesResponse> {
|
|
||||||
const req = new ResetInstanceFeaturesRequest();
|
|
||||||
return this.grpcService.feature.resetInstanceFeatures(req, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public getOrganizationFeatures(orgId: string, inheritance: boolean): Promise<GetOrganizationFeaturesResponse> {
|
|
||||||
const req = new GetOrganizationFeaturesRequest();
|
|
||||||
req.setOrganizationId(orgId);
|
|
||||||
req.setInheritance(inheritance);
|
|
||||||
return this.grpcService.feature.getOrganizationFeatures(req, null).then((resp) => resp);
|
|
||||||
}
|
|
||||||
|
|
||||||
public getSystemFeatures(): Promise<GetSystemFeaturesResponse> {
|
|
||||||
const req = new GetSystemFeaturesRequest();
|
|
||||||
return this.grpcService.feature.getSystemFeatures(req, null).then((resp) => resp);
|
|
||||||
}
|
|
||||||
|
|
||||||
public getUserFeatures(userId: string, inheritance: boolean): Promise<GetUserFeaturesResponse> {
|
|
||||||
const req = new GetUserFeaturesRequest();
|
|
||||||
req.setInheritance(inheritance);
|
|
||||||
req.setUserId(userId);
|
|
||||||
return this.grpcService.feature.getUserFeatures(req, null).then((resp) => resp);
|
|
||||||
}
|
|
||||||
}
|
|
@ -22,7 +22,6 @@ import { createFeatureServiceClient, createUserServiceClient } from '@zitadel/cl
|
|||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
import { createAuthServiceClient, createManagementServiceClient } from '@zitadel/client/v1';
|
import { createAuthServiceClient, createManagementServiceClient } from '@zitadel/client/v1';
|
||||||
import { createGrpcWebTransport } from '@connectrpc/connect-web';
|
import { createGrpcWebTransport } from '@connectrpc/connect-web';
|
||||||
import { FeatureServiceClient } from '../proto/generated/zitadel/feature/v2/Feature_serviceServiceClientPb';
|
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
@ -31,7 +30,6 @@ export class GrpcService {
|
|||||||
public auth!: AuthServiceClient;
|
public auth!: AuthServiceClient;
|
||||||
public mgmt!: ManagementServiceClient;
|
public mgmt!: ManagementServiceClient;
|
||||||
public admin!: AdminServiceClient;
|
public admin!: AdminServiceClient;
|
||||||
public feature!: FeatureServiceClient;
|
|
||||||
public user!: UserServiceClient;
|
public user!: UserServiceClient;
|
||||||
public userNew!: ReturnType<typeof createUserServiceClient>;
|
public userNew!: ReturnType<typeof createUserServiceClient>;
|
||||||
public mgmtNew!: ReturnType<typeof createManagementServiceClient>;
|
public mgmtNew!: ReturnType<typeof createManagementServiceClient>;
|
||||||
@ -88,12 +86,6 @@ export class GrpcService {
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
interceptors,
|
interceptors,
|
||||||
);
|
);
|
||||||
this.feature = new FeatureServiceClient(
|
|
||||||
env.api,
|
|
||||||
null,
|
|
||||||
// @ts-ignore
|
|
||||||
interceptors,
|
|
||||||
);
|
|
||||||
this.user = new UserServiceClient(
|
this.user = new UserServiceClient(
|
||||||
env.api,
|
env.api,
|
||||||
null,
|
null,
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { GrpcService } from './grpc.service';
|
import { GrpcService } from './grpc.service';
|
||||||
import { GetInstanceFeaturesResponse } from '@zitadel/proto/zitadel/feature/v2/instance_pb';
|
import {
|
||||||
|
GetInstanceFeaturesResponse,
|
||||||
|
ResetInstanceFeaturesResponse,
|
||||||
|
SetInstanceFeaturesRequest,
|
||||||
|
SetInstanceFeaturesRequestSchema,
|
||||||
|
SetInstanceFeaturesResponse,
|
||||||
|
} from '@zitadel/proto/zitadel/feature/v2/instance_pb';
|
||||||
|
import { MessageInitShape } from '@bufbuild/protobuf';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
@ -11,4 +18,14 @@ export class NewFeatureService {
|
|||||||
public getInstanceFeatures(): Promise<GetInstanceFeaturesResponse> {
|
public getInstanceFeatures(): Promise<GetInstanceFeaturesResponse> {
|
||||||
return this.grpcService.featureNew.getInstanceFeatures({});
|
return this.grpcService.featureNew.getInstanceFeatures({});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public setInstanceFeatures(
|
||||||
|
req: MessageInitShape<typeof SetInstanceFeaturesRequestSchema>,
|
||||||
|
): Promise<SetInstanceFeaturesResponse> {
|
||||||
|
return this.grpcService.featureNew.setInstanceFeatures(req);
|
||||||
|
}
|
||||||
|
|
||||||
|
public resetInstanceFeatures(): Promise<ResetInstanceFeaturesResponse> {
|
||||||
|
return this.grpcService.featureNew.resetInstanceFeatures({});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1492,6 +1492,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Действия v2 позволяват управление на выполнения на данни и цели. Ако флагът е активиран, ще можете да използвате новия API и неговите функции.",
|
"ACTIONS_DESCRIPTION": "Действия v2 позволяват управление на выполнения на данни и цели. Ако флагът е активиран, ще можете да използвате новия API и неговите функции.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Завършване на сесия",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Завършване на сесия",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Ако флагът е активиран, ще можете да прекратите единична сесия от UI за вход, като предоставите id_token с `sid` претенция като id_token_hint на крайната точка на end_session. Имайте предвид, че в момента всички сесии от същия потребителски агент (браузър) се прекратяват в UI за вход. Сесиите, управлявани чрез API на сесията, вече позволяват прекратяването на единични сесии.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Ако флагът е активиран, ще можете да прекратите единична сесия от UI за вход, като предоставите id_token с `sid` претенция като id_token_hint на крайната точка на end_session. Имайте предвид, че в момента всички сесии от същия потребителски агент (браузър) се прекратяват в UI за вход. Сесиите, управлявани чрез API на сесията, вече позволяват прекратяването на единични сесии.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Отстраняване на грешки на OIDC родителя",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Ако флагът е активиран, грешката на OIDC родителя ще бъде записана в конзолата.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Деактивиране на събитие за потребителски токен",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Активиране на Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Back-Channel Logout имплементира OpenID Connect Back-Channel Logout 1.0 и може да се използва за уведомяване на клиентите за прекратяване на сесията при OpenID доставчика.",
|
||||||
|
"PERMISSIONCHECKV2": "Проверка на разрешения V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Ако флагът е активиран, ще можете да използвате новия API и неговите функции.",
|
||||||
|
"WEBKEY": "Уеб ключ",
|
||||||
|
"WEBKEY_DESCRIPTION": "Ако флагът е активиран, ще можете да използвате новия API и неговите функции.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Наследено",
|
"INHERITED": "Наследено",
|
||||||
"ENABLED": "Активирано",
|
"ENABLED": "Активирано",
|
||||||
|
@ -1493,6 +1493,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Akce v2 umožňují správu datových provedení a cílů. Pokud je tento příznak povolen, budete moci používat nové API a jeho funkce.",
|
"ACTIONS_DESCRIPTION": "Akce v2 umožňují správu datových provedení a cílů. Pokud je tento příznak povolen, budete moci používat nové API a jeho funkce.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 ukončení relace",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 ukončení relace",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Pokud je příznak aktivován, budete moci ukončit jedinou relaci z rozhraní pro přihlášení zadáním id_token s nárokem `sid` jako id_token_hint na koncovém bodu end_session. Poznamenejte si, že v současné době jsou v rozhraní pro přihlášení ukončeny všechny relace ze stejného uživatelského agenta (prohlížeče). Relace spravované prostřednictvím rozhraní API relace již umožňují ukončení jednotlivých relací.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Pokud je příznak aktivován, budete moci ukončit jedinou relaci z rozhraní pro přihlášení zadáním id_token s nárokem `sid` jako id_token_hint na koncovém bodu end_session. Poznamenejte si, že v současné době jsou v rozhraní pro přihlášení ukončeny všechny relace ze stejného uživatelského agenta (prohlížeče). Relace spravované prostřednictvím rozhraní API relace již umožňují ukončení jednotlivých relací.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Debugování chyby rodiče OIDC",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Pokud je příznak povolen, chyba rodiče OIDC bude zaznamenána v konzoli.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Zakázat událost uživatelského tokenu",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Povolit Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Back-Channel Logout implementuje OpenID Connect Back-Channel Logout 1.0 a může být použit k informování klientů o ukončení relace u poskytovatele OpenID.",
|
||||||
|
"PERMISSIONCHECKV2": "Kontrola oprávnění V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Pokud je příznak povolen, budete moci používat nový API a jeho funkce.",
|
||||||
|
"WEBKEY": "Webový klíč",
|
||||||
|
"WEBKEY_DESCRIPTION": "Pokud je příznak povolen, budete moci používat nový API a jeho funkce.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Děděno",
|
"INHERITED": "Děděno",
|
||||||
"ENABLED": "Povoleno",
|
"ENABLED": "Povoleno",
|
||||||
|
@ -1493,6 +1493,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Aktionen v2 ermöglichen die Verwaltung von Datenausführungen und Zielen. Wenn das Flag aktiviert ist, können Sie die neue API und ihre Funktionen verwenden.",
|
"ACTIONS_DESCRIPTION": "Aktionen v2 ermöglichen die Verwaltung von Datenausführungen und Zielen. Wenn das Flag aktiviert ist, können Sie die neue API und ihre Funktionen verwenden.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Sitzungsbeendigung",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Sitzungsbeendigung",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Wenn das Flag aktiviert ist, können Sie eine einzelne Sitzung über die Login-Benutzeroberfläche beenden, indem Sie einen id_token mit einem `sid` Claim als id_token_hint am Endpunkt end_session übergeben. Beachten Sie, dass derzeit alle Sitzungen desselben Benutzeragenten (Browser) in der Login-Benutzeroberfläche beendet werden. Sitzungen, die über die Session API verwaltet werden, ermöglichen bereits die Beendigung einzelner Sitzungen.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Wenn das Flag aktiviert ist, können Sie eine einzelne Sitzung über die Login-Benutzeroberfläche beenden, indem Sie einen id_token mit einem `sid` Claim als id_token_hint am Endpunkt end_session übergeben. Beachten Sie, dass derzeit alle Sitzungen desselben Benutzeragenten (Browser) in der Login-Benutzeroberfläche beendet werden. Sitzungen, die über die Session API verwaltet werden, ermöglichen bereits die Beendigung einzelner Sitzungen.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Debug OIDC Parent error",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Wenn die Flagge aktiviert ist, wird der OIDC-Elternfehler in der Konsole protokolliert.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Benutzer-Token-Ereignis deaktivieren",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Backchannel-Logout aktivieren",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Der Back-Channel-Logout implementiert OpenID Connect Back-Channel Logout 1.0 und kann verwendet werden, um Clients über die Beendigung der Sitzung beim OpenID-Provider zu benachrichtigen.",
|
||||||
|
"PERMISSIONCHECKV2": "Berechtigungsprüfung V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Wenn die Flagge aktiviert ist, können Sie die neue API und ihre Funktionen verwenden.",
|
||||||
|
"WEBKEY": "Web-Schlüssel",
|
||||||
|
"WEBKEY_DESCRIPTION": "Wenn die Flagge aktiviert ist, können Sie die neue API und ihre Funktionen verwenden.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Erben",
|
"INHERITED": "Erben",
|
||||||
"ENABLED": "Aktiviert",
|
"ENABLED": "Aktiviert",
|
||||||
|
@ -1493,6 +1493,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Actions v2 allow to manage data executions and targets. If the flag is enabled, you'll be able to use the new API and its features.",
|
"ACTIONS_DESCRIPTION": "Actions v2 allow to manage data executions and targets. If the flag is enabled, you'll be able to use the new API and its features.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Session Termination",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Session Termination",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "If the flag is enabled, you'll be able to terminate a single session from the login UI by providing an id_token with a `sid` claim as id_token_hint on the end_session endpoint. Note that currently all sessions from the same user agent (browser) are terminated in the login UI. Sessions managed through the Session API already allow the termination of single sessions.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "If the flag is enabled, you'll be able to terminate a single session from the login UI by providing an id_token with a `sid` claim as id_token_hint on the end_session endpoint. Note that currently all sessions from the same user agent (browser) are terminated in the login UI. Sessions managed through the Session API already allow the termination of single sessions.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Debug OIDC Parent Error",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "If the flag is enabled, the OIDC parent error will be logged in the console.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Disable User Token Event",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Enable Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "The Back-Channel Logout implements OpenID Connect Back-Channel Logout 1.0 and can be used to notify clients about session termination at the OpenID Provider.",
|
||||||
|
"PERMISSIONCHECKV2": "Permission Check V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "If the flag is enabled, you'll be able to use the new API and its features.",
|
||||||
|
"WEBKEY": "Web Key",
|
||||||
|
"WEBKEY_DESCRIPTION": "If the flag is enabled, you'll be able to use the new API and its features.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Inherit",
|
"INHERITED": "Inherit",
|
||||||
"ENABLED": "Enabled",
|
"ENABLED": "Enabled",
|
||||||
|
@ -1494,6 +1494,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Acciones v2 permite administrar las ejecuciones y objetivos de datos. Si la bandera está habilitada, podrá utilizar la nueva API y sus funciones.",
|
"ACTIONS_DESCRIPTION": "Acciones v2 permite administrar las ejecuciones y objetivos de datos. Si la bandera está habilitada, podrá utilizar la nueva API y sus funciones.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Terminación de sesión",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Terminación de sesión",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Si la bandera está habilitada, podrá terminar una sesión única desde la interfaz de usuario de inicio de sesión proporcionando un id_token con una reclamación `sid` como id_token_hint en el punto final de end_session. Tenga en cuenta que actualmente se terminan todas las sesiones del mismo agente de usuario (navegador) en la interfaz de usuario de inicio de sesión. Las sesiones administradas a través de la API de sesión ya permiten la terminación de sesiones individuales.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Si la bandera está habilitada, podrá terminar una sesión única desde la interfaz de usuario de inicio de sesión proporcionando un id_token con una reclamación `sid` como id_token_hint en el punto final de end_session. Tenga en cuenta que actualmente se terminan todas las sesiones del mismo agente de usuario (navegador) en la interfaz de usuario de inicio de sesión. Las sesiones administradas a través de la API de sesión ya permiten la terminación de sesiones individuales.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Debug OIDC Parent Error",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Si la bandera está habilitada, el error del padre OIDC se registrará en la consola.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Desactivar evento de token de usuario",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Habilitar Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "El Back-Channel Logout implementa OpenID Connect Back-Channel Logout 1.0 y se puede usar para notificar a los clientes sobre la terminación de la sesión en el proveedor de OpenID.",
|
||||||
|
"PERMISSIONCHECKV2": "Verificación de permisos V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Si la bandera está habilitada, podrá usar la nueva API y sus funciones.",
|
||||||
|
"WEBKEY": "Clave web",
|
||||||
|
"WEBKEY_DESCRIPTION": "Si la bandera está habilitada, podrá usar la nueva API y sus funciones.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Heredado",
|
"INHERITED": "Heredado",
|
||||||
"ENABLED": "Habilitado",
|
"ENABLED": "Habilitado",
|
||||||
|
@ -1493,6 +1493,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Les actions v2 permettent de gérer les exécutions et les cibles de données. Si l'indicateur est activé, vous pourrez utiliser la nouvelle API et ses fonctionnalités.",
|
"ACTIONS_DESCRIPTION": "Les actions v2 permettent de gérer les exécutions et les cibles de données. Si l'indicateur est activé, vous pourrez utiliser la nouvelle API et ses fonctionnalités.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Fin de session",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Fin de session",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Si l'indicateur est activé, vous pourrez terminer une seule session à partir de l'interface utilisateur de connexion en fournissant un id_token avec une revendication `sid` en tant que id_token_hint sur le point de terminaison end_session. Notez que toutes les sessions du même agent utilisateur (navigateur) sont actuellement terminées dans l'interface utilisateur de connexion. Les sessions gérées via l'API de session permettent déjà la terminaison de sessions individuelles.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Si l'indicateur est activé, vous pourrez terminer une seule session à partir de l'interface utilisateur de connexion en fournissant un id_token avec une revendication `sid` en tant que id_token_hint sur le point de terminaison end_session. Notez que toutes les sessions du même agent utilisateur (navigateur) sont actuellement terminées dans l'interface utilisateur de connexion. Les sessions gérées via l'API de session permettent déjà la terminaison de sessions individuelles.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Debug OIDC Parent Error",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Si le drapeau est activé, l'erreur parent OIDC sera enregistrée dans la console.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Désactiver l'événement de jeton utilisateur",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Activer le Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Le Back-Channel Logout implémente OpenID Connect Back-Channel Logout 1.0 et peut être utilisé pour notifier les clients de la fin de session chez le fournisseur OpenID.",
|
||||||
|
"PERMISSIONCHECKV2": "Vérification des permissions V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Si le drapeau est activé, vous pourrez utiliser la nouvelle API et ses fonctionnalités.",
|
||||||
|
"WEBKEY": "Clé web",
|
||||||
|
"WEBKEY_DESCRIPTION": "Si le drapeau est activé, vous pourrez utiliser la nouvelle API et ses fonctionnalités.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Hérité",
|
"INHERITED": "Hérité",
|
||||||
"ENABLED": "Activé",
|
"ENABLED": "Activé",
|
||||||
|
@ -1491,6 +1491,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "A Műveletek v2 lehetővé teszik az adat futtatások és célok kezelését. Ha az opció engedélyezve van, használhatod az új API-t és annak funkcióit.",
|
"ACTIONS_DESCRIPTION": "A Műveletek v2 lehetővé teszik az adat futtatások és célok kezelését. Ha az opció engedélyezve van, használhatod az új API-t és annak funkcióit.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Egyedüli V1 Munkamenet Befejezése",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Egyedüli V1 Munkamenet Befejezése",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Ha a zászló engedélyezve van, képes leszel egyetlen munkamenetet megszüntetni a bejelentkezési UI-ben, ha egy id_tokent biztosítasz egy `sid` claim-mel mint id_token_hint az end_session végpontnál. Megjegyzendő, hogy jelenleg az összes munkamenet ugyanabból a felhasználói ügynökből (böngésző) leállításra kerül a bejelentkezési UI-ben. A Session API-val kezelt munkamenetek már lehetővé teszik egyes munkamenetek megszüntetését.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Ha a zászló engedélyezve van, képes leszel egyetlen munkamenetet megszüntetni a bejelentkezési UI-ben, ha egy id_tokent biztosítasz egy `sid` claim-mel mint id_token_hint az end_session végpontnál. Megjegyzendő, hogy jelenleg az összes munkamenet ugyanabból a felhasználói ügynökből (böngésző) leállításra kerül a bejelentkezési UI-ben. A Session API-val kezelt munkamenetek már lehetővé teszik egyes munkamenetek megszüntetését.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Debug OIDC Parent Error",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Ha a zászló engedélyezve van, az OIDC szülő hiba naplózva lesz a konzolban.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Felhasználói token esemény letiltása",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Backchannel Logout engedélyezése",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "A Back-Channel Logout megvalósítja az OpenID Connect Back-Channel Logout 1.0-t, és használható az ügyfelek értesítésére a munkamenet befejezéséről az OpenID szolgáltatónál.",
|
||||||
|
"PERMISSIONCHECKV2": "Engedély ellenőrzés V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Ha a zászló engedélyezve van, használhatja az új API-t és annak funkcióit.",
|
||||||
|
"WEBKEY": "Webkulcs",
|
||||||
|
"WEBKEY_DESCRIPTION": "Ha a zászló engedélyezve van, használhatja az új API-t és annak funkcióit.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Örököl",
|
"INHERITED": "Örököl",
|
||||||
"ENABLED": "Engedélyezve",
|
"ENABLED": "Engedélyezve",
|
||||||
|
@ -1365,6 +1365,15 @@
|
|||||||
"USERSCHEMA_DESCRIPTION": "Skema Pengguna memungkinkan untuk mengelola skema data pengguna. Jika tanda ini diaktifkan, Anda akan dapat menggunakan API baru dan fitur-fiturnya.",
|
"USERSCHEMA_DESCRIPTION": "Skema Pengguna memungkinkan untuk mengelola skema data pengguna. Jika tanda ini diaktifkan, Anda akan dapat menggunakan API baru dan fitur-fiturnya.",
|
||||||
"ACTIONS": "Tindakan",
|
"ACTIONS": "Tindakan",
|
||||||
"ACTIONS_DESCRIPTION": "Tindakan v2 memungkinkan untuk mengelola eksekusi dan target data. Jika tanda ini diaktifkan, Anda akan dapat menggunakan API baru dan fitur-fiturnya.",
|
"ACTIONS_DESCRIPTION": "Tindakan v2 memungkinkan untuk mengelola eksekusi dan target data. Jika tanda ini diaktifkan, Anda akan dapat menggunakan API baru dan fitur-fiturnya.",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "If the flag is enabled, the OIDC parent error will be logged in the console.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Disable User Token Event",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Enable Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "The Back-Channel Logout implements OpenID Connect Back-Channel Logout 1.0 and can be used to notify clients about session termination at the OpenID Provider.",
|
||||||
|
"PERMISSIONCHECKV2": "Permission Check V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "If the flag is enabled, you'll be able to use the new API and its features.",
|
||||||
|
"WEBKEY": "Web Key",
|
||||||
|
"WEBKEY_DESCRIPTION": "If the flag is enabled, you'll be able to use the new API and its features.",
|
||||||
"STATES": { "INHERITED": "Mewarisi", "ENABLED": "Diaktifkan", "DISABLED": "Dengan disabilitas" },
|
"STATES": { "INHERITED": "Mewarisi", "ENABLED": "Diaktifkan", "DISABLED": "Dengan disabilitas" },
|
||||||
"INHERITED_DESCRIPTION": "Ini menetapkan nilai ke nilai default sistem.",
|
"INHERITED_DESCRIPTION": "Ini menetapkan nilai ke nilai default sistem.",
|
||||||
"INHERITEDINDICATOR_DESCRIPTION": {
|
"INHERITEDINDICATOR_DESCRIPTION": {
|
||||||
|
@ -1493,6 +1493,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Le azioni v2 consentono di gestire le esecuzioni e gli obiettivi dei dati. Se l'indicatore è abilitato, potrai utilizzare la nuova API e le sue funzionalità.",
|
"ACTIONS_DESCRIPTION": "Le azioni v2 consentono di gestire le esecuzioni e gli obiettivi dei dati. Se l'indicatore è abilitato, potrai utilizzare la nuova API e le sue funzionalità.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Terminazione sessione",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Terminazione sessione",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Se il flag è abilitato, sarai in grado di terminare una singola sessione dall'interfaccia utente di accesso fornendo un id_token con una richiesta `sid` come id_token_hint nel punto finale di end_session. Tieni presente che attualmente tutte le sessioni dello stesso agente utente (browser) vengono terminate nell'interfaccia utente di accesso. Le sessioni gestite tramite l'API di sessione consentono già la terminazione di singole sessioni.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Se il flag è abilitato, sarai in grado di terminare una singola sessione dall'interfaccia utente di accesso fornendo un id_token con una richiesta `sid` come id_token_hint nel punto finale di end_session. Tieni presente che attualmente tutte le sessioni dello stesso agente utente (browser) vengono terminate nell'interfaccia utente di accesso. Le sessioni gestite tramite l'API di sessione consentono già la terminazione di singole sessioni.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Debug OIDC Parent Error",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Se il flag è abilitato, l'errore del genitore OIDC verrà registrato nella console.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Disabilita evento token utente",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Abilita Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Il Back-Channel Logout implementa OpenID Connect Back-Channel Logout 1.0 e può essere utilizzato per notificare ai client la terminazione della sessione presso il provider OpenID.",
|
||||||
|
"PERMISSIONCHECKV2": "Controllo permessi V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Se il flag è abilitato, potrai utilizzare la nuova API e le sue funzionalità.",
|
||||||
|
"WEBKEY": "Chiave Web",
|
||||||
|
"WEBKEY_DESCRIPTION": "Se il flag è abilitato, potrai utilizzare la nuova API e le sue funzionalità.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Predefinito",
|
"INHERITED": "Predefinito",
|
||||||
"ENABLED": "Abilitato",
|
"ENABLED": "Abilitato",
|
||||||
|
@ -1493,6 +1493,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Actions v2は、データの実行とターゲットを管理できます。フラグが有効になっている場合、新しい APIとその機能を使用できます。",
|
"ACTIONS_DESCRIPTION": "Actions v2は、データの実行とターゲットを管理できます。フラグが有効になっている場合、新しい APIとその機能を使用できます。",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 セッション終了",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 セッション終了",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "フラグが有効になっている場合、id_token を `sid` クレームと共に id_token_hint として end_session エンドポイントに提供することで、ログイン UI から単一のセッションを終了できるようになります。 現在、同じユーザー エージェント (ブラウザ) からのすべてのセッションがログイン UI で終了することに注意してください。 セッション API を通じて管理されるセッションは、すでに単一のセッションの終了を許可しています。",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "フラグが有効になっている場合、id_token を `sid` クレームと共に id_token_hint として end_session エンドポイントに提供することで、ログイン UI から単一のセッションを終了できるようになります。 現在、同じユーザー エージェント (ブラウザ) からのすべてのセッションがログイン UI で終了することに注意してください。 セッション API を通じて管理されるセッションは、すでに単一のセッションの終了を許可しています。",
|
||||||
|
"DEBUGOIDCPARENTERROR": "デバッグ OIDC 親エラー",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "フラグが有効になっている場合、OIDC 親エラーはコンソールに記録されます。",
|
||||||
|
"DISABLEUSERTOKENEVENT": "ユーザートークンイベントを無効にする",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "バックチャネルログアウトを有効にする",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "バックチャネルログアウトは OpenID Connect バックチャネルログアウト 1.0 を実装し、OpenID プロバイダーでのセッション終了についてクライアントに通知するために使用できます。",
|
||||||
|
"PERMISSIONCHECKV2": "権限チェック V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "フラグが有効になっている場合、新しい API とその機能を使用できます。",
|
||||||
|
"WEBKEY": "ウェブキー",
|
||||||
|
"WEBKEY_DESCRIPTION": "フラグが有効になっている場合、新しい API とその機能を使用できます。",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "継承",
|
"INHERITED": "継承",
|
||||||
"ENABLED": "有効",
|
"ENABLED": "有効",
|
||||||
|
@ -1493,6 +1493,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "액션 v2는 데이터 실행 및 대상을 관리할 수 있습니다. 플래그가 활성화되면 새 API 및 기능을 사용할 수 있습니다.",
|
"ACTIONS_DESCRIPTION": "액션 v2는 데이터 실행 및 대상을 관리할 수 있습니다. 플래그가 활성화되면 새 API 및 기능을 사용할 수 있습니다.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC 단일 V1 세션 종료",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC 단일 V1 세션 종료",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "플래그가 활성화되면, `sid` 클레임이 있는 id_token을 사용하여 end_session 엔드포인트에서 로그인 UI의 단일 세션을 종료할 수 있습니다. 현재 동일한 사용자 에이전트(브라우저)에서 모든 세션이 로그인 UI에서 종료됩니다. Session API를 통해 관리된 세션은 이미 단일 세션 종료를 허용합니다.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "플래그가 활성화되면, `sid` 클레임이 있는 id_token을 사용하여 end_session 엔드포인트에서 로그인 UI의 단일 세션을 종료할 수 있습니다. 현재 동일한 사용자 에이전트(브라우저)에서 모든 세션이 로그인 UI에서 종료됩니다. Session API를 통해 관리된 세션은 이미 단일 세션 종료를 허용합니다.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "디버그 OIDC 부모 오류",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "플래그가 활성화되면 OIDC 부모 오류가 콘솔에 기록됩니다.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "사용자 토큰 이벤트 비활성화",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "백채널 로그아웃 활성화",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "백채널 로그아웃은 OpenID Connect 백채널 로그아웃 1.0을 구현하며, OpenID 제공자에서 세션 종료에 대해 클라이언트에게 알리는 데 사용할 수 있습니다.",
|
||||||
|
"PERMISSIONCHECKV2": "권한 확인 V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "플래그가 활성화되면 새로운 API와 그 기능을 사용할 수 있습니다.",
|
||||||
|
"WEBKEY": "웹 키",
|
||||||
|
"WEBKEY_DESCRIPTION": "플래그가 활성화되면 새로운 API와 그 기능을 사용할 수 있습니다.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "상속",
|
"INHERITED": "상속",
|
||||||
"ENABLED": "활성화됨",
|
"ENABLED": "활성화됨",
|
||||||
|
@ -1494,6 +1494,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Акциите v2 овозможуваат управување со извршување на податоци и цели. Ако знамето е овозможено, ќе можете да го користите новиот API и неговите функции.",
|
"ACTIONS_DESCRIPTION": "Акциите v2 овозможуваат управување со извршување на податоци и цели. Ако знамето е овозможено, ќе можете да го користите новиот API и неговите функции.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Завршување на сесија",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Завршување на сесија",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Ако ознаката е активирана, ќе можете да ја завршите единечна сесија од корисничкиот интерфејс за најава, со обезбедување id_token со `sid` побарување како id_token_hint на крајната точка на end_session. Имајте предвид дека во моментов сите сесии од истиот кориснички агент (прелистувач) се завршуваат во корисничкиот интерфејс за најава. Сесиите управувани преку API на сесија веќе дозволуваат завршување на единечни сесии.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Ако ознаката е активирана, ќе можете да ја завршите единечна сесија од корисничкиот интерфејс за најава, со обезбедување id_token со `sid` побарување како id_token_hint на крајната точка на end_session. Имајте предвид дека во моментов сите сесии од истиот кориснички агент (прелистувач) се завршуваат во корисничкиот интерфејс за најава. Сесиите управувани преку API на сесија веќе дозволуваат завршување на единечни сесии.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Дебагирање на OIDC родителска грешка",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Ако знамето е овозможено, грешката на OIDC родителот ќе биде регистрирана во конзолата.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Оневозможи настан за кориснички токен",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Овозможи Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Back-Channel Logout имплементира OpenID Connect Back-Channel Logout 1.0 и може да се користи за известување на клиентите за завршување на сесијата кај OpenID провајдерот.",
|
||||||
|
"PERMISSIONCHECKV2": "Проверка на дозволи V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Ако знамето е овозможено, ќе можете да ја користите новата API и нејзините функции.",
|
||||||
|
"WEBKEY": "Веб клуч",
|
||||||
|
"WEBKEY_DESCRIPTION": "Ако знамето е овозможено, ќе можете да ја користите новата API и нејзините функции.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Наследи",
|
"INHERITED": "Наследи",
|
||||||
"ENABLED": "Овозможено",
|
"ENABLED": "Овозможено",
|
||||||
|
@ -1493,6 +1493,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Actions v2 maken het mogelijk om data-uitvoeringen en doelen te beheren. Als de vlag is ingeschakeld, kunt u de nieuwe API en zijn functies gebruiken.",
|
"ACTIONS_DESCRIPTION": "Actions v2 maken het mogelijk om data-uitvoeringen en doelen te beheren. Als de vlag is ingeschakeld, kunt u de nieuwe API en zijn functies gebruiken.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Sessiebeëindiging",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Sessiebeëindiging",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Als het vlagje is ingeschakeld, kunt u een enkele sessie beëindigen via de login-gebruikersinterface door een id_token met een `sid`-claim als id_token_hint op het eindpunt end_session te verstrekken. Houd er rekening mee dat momenteel alle sessies van dezelfde gebruikersagent (browser) worden beëindigd in de login-gebruikersinterface. Sessies die worden beheerd via de Session API staan al toe om individuele sessies te beëindigen.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Als het vlagje is ingeschakeld, kunt u een enkele sessie beëindigen via de login-gebruikersinterface door een id_token met een `sid`-claim als id_token_hint op het eindpunt end_session te verstrekken. Houd er rekening mee dat momenteel alle sessies van dezelfde gebruikersagent (browser) worden beëindigd in de login-gebruikersinterface. Sessies die worden beheerd via de Session API staan al toe om individuele sessies te beëindigen.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Debug OIDC Ouderfout",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Als de vlag is ingeschakeld, wordt de OIDC-ouderfout in de console geregistreerd.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Gebruikerstokengebeurtenis uitschakelen",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Backchannel Logout inschakelen",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "De Back-Channel Logout implementeert OpenID Connect Back-Channel Logout 1.0 en kan worden gebruikt om clients te informeren over het beëindigen van de sessie bij de OpenID-provider.",
|
||||||
|
"PERMISSIONCHECKV2": "Permissiecontrole V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Als de vlag is ingeschakeld, kunt u de nieuwe API en de bijbehorende functies gebruiken.",
|
||||||
|
"WEBKEY": "Websleutel",
|
||||||
|
"WEBKEY_DESCRIPTION": "Als de vlag is ingeschakeld, kunt u de nieuwe API en de bijbehorende functies gebruiken.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Overgenomen",
|
"INHERITED": "Overgenomen",
|
||||||
"ENABLED": "Ingeschakeld",
|
"ENABLED": "Ingeschakeld",
|
||||||
|
@ -1492,6 +1492,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Akcje v2 umożliwiają zarządzanie wykonaniami danych i celami. Jeżeli flaga jest włączona, będziesz mógł korzystać z nowego interfejsu API i jego funkcji.",
|
"ACTIONS_DESCRIPTION": "Akcje v2 umożliwiają zarządzanie wykonaniami danych i celami. Jeżeli flaga jest włączona, będziesz mógł korzystać z nowego interfejsu API i jego funkcji.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Zakończenie sesji",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Zakończenie sesji",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Jeśli flaga jest włączona, będziesz mógł zakończyć pojedynczą sesję z interfejsu użytkownika logowania, podając id_token z roszczeniem `sid` jako id_token_hint w punkcie końcowym end_session. Należy pamiętać, że obecnie wszystkie sesje z tego samego agenta użytkownika (przeglądarki) są kończone w interfejsie użytkownika logowania. Sesje zarządzane za pomocą interfejsu API sesji już pozwalają na zakończenie pojedynczych sesji.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Jeśli flaga jest włączona, będziesz mógł zakończyć pojedynczą sesję z interfejsu użytkownika logowania, podając id_token z roszczeniem `sid` jako id_token_hint w punkcie końcowym end_session. Należy pamiętać, że obecnie wszystkie sesje z tego samego agenta użytkownika (przeglądarki) są kończone w interfejsie użytkownika logowania. Sesje zarządzane za pomocą interfejsu API sesji już pozwalają na zakończenie pojedynczych sesji.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Debug OIDC Błąd nadrzędny",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Jeśli flaga jest włączona, błąd nadrzędny OIDC zostanie zarejestrowany w konsoli.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Wyłącz zdarzenie tokena użytkownika",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Włącz Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Back-Channel Logout implementuje OpenID Connect Back-Channel Logout 1.0 i może być używany do powiadamiania klientów o zakończeniu sesji u dostawcy OpenID.",
|
||||||
|
"PERMISSIONCHECKV2": "Sprawdzanie uprawnień V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Jeśli flaga jest włączona, będziesz mógł korzystać z nowego API i jego funkcji.",
|
||||||
|
"WEBKEY": "Klucz Web",
|
||||||
|
"WEBKEY_DESCRIPTION": "Jeśli flaga jest włączona, będziesz mógł korzystać z nowego API i jego funkcji.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Dziedziczony",
|
"INHERITED": "Dziedziczony",
|
||||||
"ENABLED": "Włączony",
|
"ENABLED": "Włączony",
|
||||||
|
@ -1494,6 +1494,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Actions v2 permitem gerenciar execuções e destinos de dados. Se a flag estiver habilitada, você poderá usar a nova API e seus recursos.",
|
"ACTIONS_DESCRIPTION": "Actions v2 permitem gerenciar execuções e destinos de dados. Se a flag estiver habilitada, você poderá usar a nova API e seus recursos.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Término de sessão",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Término de sessão",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Se a bandeira estiver habilitada, você poderá encerrar uma sessão única da interface do usuário de login fornecendo um id_token com uma reivindicação `sid como id_token_hint no ponto final de end_session. Observe que atualmente todas as sessões do mesmo agente de usuário (navegador) são encerradas na interface do usuário de login. As sessões gerenciadas por meio da API de sessão já permitem o encerramento de sessões individuais.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Se a bandeira estiver habilitada, você poderá encerrar uma sessão única da interface do usuário de login fornecendo um id_token com uma reivindicação `sid como id_token_hint no ponto final de end_session. Observe que atualmente todas as sessões do mesmo agente de usuário (navegador) são encerradas na interface do usuário de login. As sessões gerenciadas por meio da API de sessão já permitem o encerramento de sessões individuais.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Erro de Depuração do Pai OIDC",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Se a bandeira estiver ativada, o erro do pai OIDC será registrado no console.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Desativar Evento de Token de Usuário",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Ativar Logout de Backchannel",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "O Logout de Back-Channel implementa o OpenID Connect Back-Channel Logout 1.0 e pode ser usado para notificar os clientes sobre a terminação da sessão no Provedor de OpenID.",
|
||||||
|
"PERMISSIONCHECKV2": "Verificação de Permissão V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Se a bandeira estiver ativada, você poderá usar a nova API e seus recursos.",
|
||||||
|
"WEBKEY": "Chave Web",
|
||||||
|
"WEBKEY_DESCRIPTION": "Se a bandeira estiver ativada, você poderá usar a nova API e seus recursos.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Herdade",
|
"INHERITED": "Herdade",
|
||||||
"ENABLED": "Habilitado",
|
"ENABLED": "Habilitado",
|
||||||
|
@ -1491,6 +1491,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Acțiunile v2 permit gestionarea execuțiilor și țintelor de date. Dacă indicatorul este activat, veți putea utiliza noul API și caracteristicile sale.",
|
"ACTIONS_DESCRIPTION": "Acțiunile v2 permit gestionarea execuțiilor și țintelor de date. Dacă indicatorul este activat, veți putea utiliza noul API și caracteristicile sale.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "Terminarea sesiunii unice OIDC V1",
|
"OIDCSINGLEV1SESSIONTERMINATION": "Terminarea sesiunii unice OIDC V1",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Dacă indicatorul este activat, veți putea termina o singură sesiune din UI-ul de conectare furnizând un id_token cu o revendicare sid ca id_token_hint pe endpointul end_session. Rețineți că în prezent toate sesiunile de la același agent utilizator (browser) sunt terminate în UI-ul de conectare. Sesiunile gestionate prin API-ul Session permit deja terminarea sesiunilor individuale.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Dacă indicatorul este activat, veți putea termina o singură sesiune din UI-ul de conectare furnizând un id_token cu o revendicare sid ca id_token_hint pe endpointul end_session. Rețineți că în prezent toate sesiunile de la același agent utilizator (browser) sunt terminate în UI-ul de conectare. Sesiunile gestionate prin API-ul Session permit deja terminarea sesiunilor individuale.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Eroare de Depanare Părinte OIDC",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Dacă steagul este activat, eroarea părinte OIDC va fi înregistrată în consolă.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Dezactivează Evenimentul Token Utilizator",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Activează Logout Backchannel",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Logout-ul Back-Channel implementează OpenID Connect Back-Channel Logout 1.0 și poate fi folosit pentru a notifica clienții despre terminarea sesiunii la Producătorul OpenID.",
|
||||||
|
"PERMISSIONCHECKV2": "Verificare Permisiuni V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Dacă steagul este activat, veți putea folosi noua API și funcțiile sale.",
|
||||||
|
"WEBKEY": "Cheie Web",
|
||||||
|
"WEBKEY_DESCRIPTION": "Dacă steagul este activat, veți putea folosi noua API și funcțiile sale.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Moșteniți",
|
"INHERITED": "Moșteniți",
|
||||||
"ENABLED": "Activat",
|
"ENABLED": "Activat",
|
||||||
|
@ -1545,6 +1545,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Actions v2 позволяют управлять выполнением данных и целевыми объектами. Если флаг включен, вы сможете использовать новый API и его функции.",
|
"ACTIONS_DESCRIPTION": "Actions v2 позволяют управлять выполнением данных и целевыми объектами. Если флаг включен, вы сможете использовать новый API и его функции.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Окончание сеанса",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Окончание сеанса",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Если флаг включен, вы сможете завершить отдельный сеанс из интерфейса пользователя входа, предоставив id_token с претензией `sid` в качестве id_token_hint на конечной точке end_session. Обратите внимание, что в настоящее время все сеансы одного и того же пользовательского агента (браузера) завершаются в интерфейсе пользователя входа. Сеансы, управляемые через API сеанса, уже позволяют завершать отдельные сеансы.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Если флаг включен, вы сможете завершить отдельный сеанс из интерфейса пользователя входа, предоставив id_token с претензией `sid` в качестве id_token_hint на конечной точке end_session. Обратите внимание, что в настоящее время все сеансы одного и того же пользовательского агента (браузера) завершаются в интерфейсе пользователя входа. Сеансы, управляемые через API сеанса, уже позволяют завершать отдельные сеансы.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Отладка Ошибки Родителя OIDC",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Если флаг включен, ошибка родителя OIDC будет записана в консоль.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Отключить Событие Токена Пользователя",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Включить Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Back-Channel Logout реализует OpenID Connect Back-Channel Logout 1.0 и может использоваться для уведомления клиентов о завершении сеанса у поставщика OpenID.",
|
||||||
|
"PERMISSIONCHECKV2": "Проверка Разрешений V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Если флаг включен, вы сможете использовать новый API и его функции.",
|
||||||
|
"WEBKEY": "Веб-ключ",
|
||||||
|
"WEBKEY_DESCRIPTION": "Если флаг включен, вы сможете использовать новый API и его функции.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Наследовать",
|
"INHERITED": "Наследовать",
|
||||||
"ENABLED": "Включено",
|
"ENABLED": "Включено",
|
||||||
|
@ -1497,6 +1497,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Åtgärder v2 tillåter att hantera dataexekveringar och mål. Om flaggan är aktiverad kommer du att kunna använda det nya API:et och dess funktioner.",
|
"ACTIONS_DESCRIPTION": "Åtgärder v2 tillåter att hantera dataexekveringar och mål. Om flaggan är aktiverad kommer du att kunna använda det nya API:et och dess funktioner.",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Session avslutning",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 Session avslutning",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Om flaggan är aktiverad, kan du avsluta en enskild session från inloggningsgränssnittet genom att ange en id_token med ett `sid`-krav som id_token_hint på slutpunkten end_session. Observera att för närvarande alla sessioner från samma användaragent (webbläsare) avslutas i inloggningsgränssnittet. Sessioner som hanteras via Session API tillåter redan avslutning av enskilda sessioner.",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "Om flaggan är aktiverad, kan du avsluta en enskild session från inloggningsgränssnittet genom att ange en id_token med ett `sid`-krav som id_token_hint på slutpunkten end_session. Observera att för närvarande alla sessioner från samma användaragent (webbläsare) avslutas i inloggningsgränssnittet. Sessioner som hanteras via Session API tillåter redan avslutning av enskilda sessioner.",
|
||||||
|
"DEBUGOIDCPARENTERROR": "Debugga OIDC Föräldrafel",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "Om flaggan är aktiverad kommer OIDC-föräldrafel att loggas i konsolen.",
|
||||||
|
"DISABLEUSERTOKENEVENT": "Inaktivera Användartokenhändelse",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "Aktivera Backchannel Logout",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Back-Channel Logout implementerar OpenID Connect Back-Channel Logout 1.0 och kan användas för att meddela klienter om sessionens avslutning hos OpenID-leverantören.",
|
||||||
|
"PERMISSIONCHECKV2": "Behörighetskontroll V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "Om flaggan är aktiverad kan du använda den nya API:n och dess funktioner.",
|
||||||
|
"WEBKEY": "Webbnyckel",
|
||||||
|
"WEBKEY_DESCRIPTION": "Om flaggan är aktiverad kan du använda den nya API:n och dess funktioner.",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "Ärv",
|
"INHERITED": "Ärv",
|
||||||
"ENABLED": "Aktiverad",
|
"ENABLED": "Aktiverad",
|
||||||
|
@ -1493,6 +1493,16 @@
|
|||||||
"ACTIONS_DESCRIPTION": "Actions v2 可以管理数据执行和目标。如果启用此标志,您将可以使用新的 API 及其功能。",
|
"ACTIONS_DESCRIPTION": "Actions v2 可以管理数据执行和目标。如果启用此标志,您将可以使用新的 API 及其功能。",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 终止会话",
|
"OIDCSINGLEV1SESSIONTERMINATION": "OIDC Single V1 终止会话",
|
||||||
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "如果启用了标志,您可以通过在 end_session 端点上提供带有 `sid` 声明的 id_token 作为 id_token_hint 来从登录 UI 终止单个会话。 请注意,目前所有来自同一用户代理(浏览器)的会话都在登录 UI 中终止。 通过会话 API 管理的会话已经允许终止单个会话。",
|
"OIDCSINGLEV1SESSIONTERMINATION_DESCRIPTION": "如果启用了标志,您可以通过在 end_session 端点上提供带有 `sid` 声明的 id_token 作为 id_token_hint 来从登录 UI 终止单个会话。 请注意,目前所有来自同一用户代理(浏览器)的会话都在登录 UI 中终止。 通过会话 API 管理的会话已经允许终止单个会话。",
|
||||||
|
"DEBUGOIDCPARENTERROR": "调试 OIDC 父错误",
|
||||||
|
"DEBUGOIDCPARENTERROR_DESCRIPTION": "如果启用该标志,OIDC 父错误将记录在控制台中。",
|
||||||
|
"DISABLEUSERTOKENEVENT": "禁用用户令牌事件",
|
||||||
|
"DISABLEUSERTOKENEVENT_DESCRIPTION": "",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT": "启用 Backchannel 注销",
|
||||||
|
"ENABLEBACKCHANNELLOGOUT_DESCRIPTION": "Back-Channel 注销实现了 OpenID Connect Back-Channel Logout 1.0,可用于通知客户端在 OpenID 提供商处终止会话。",
|
||||||
|
"PERMISSIONCHECKV2": "权限检查 V2",
|
||||||
|
"PERMISSIONCHECKV2_DESCRIPTION": "如果启用该标志,您将能够使用新的 API 及其功能。",
|
||||||
|
"WEBKEY": "Web 密钥",
|
||||||
|
"WEBKEY_DESCRIPTION": "如果启用该标志,您将能够使用新的 API 及其功能。",
|
||||||
"STATES": {
|
"STATES": {
|
||||||
"INHERITED": "继承",
|
"INHERITED": "继承",
|
||||||
"ENABLED": "已启用",
|
"ENABLED": "已启用",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user