mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 23:17:33 +00:00
fix: Improve Actions V2 Texts and reenable in settings (#9814)
# Which Problems Are Solved
This pr includes improved texts to make the usage of Actions V2 more
easy.
Since the removal of the Actions V2 Feature Flag we removed the code
that checks if it's enabled in the settings sidenav.
# How the Problems Are Solved
Added new texts to translations. Removed sidenav logic that checks for
Actions V2 Feature Flag
# Additional Context
- Part of #7248
- Part of #9688
---------
Co-authored-by: Max Peintner <peintnerm@gmail.com>
Co-authored-by: Max Peintner <max@caos.ch>
(cherry picked from commit d930a09cb0
)
This commit is contained in:
@@ -31,8 +31,8 @@
|
|||||||
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.7.2",
|
"@fortawesome/free-brands-svg-icons": "^6.7.2",
|
||||||
"@ngx-translate/core": "^15.0.0",
|
"@ngx-translate/core": "^15.0.0",
|
||||||
"@zitadel/client": "^1.0.7",
|
"@zitadel/client": "1.2.0",
|
||||||
"@zitadel/proto": "1.0.5-sha-4118a9d",
|
"@zitadel/proto": "1.2.0",
|
||||||
"angular-oauth2-oidc": "^15.0.1",
|
"angular-oauth2-oidc": "^15.0.1",
|
||||||
"angularx-qrcode": "^16.0.2",
|
"angularx-qrcode": "^16.0.2",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
|
@@ -56,9 +56,9 @@ export class ActionsTwoActionsTableComponent {
|
|||||||
|
|
||||||
return executions.map((execution) => {
|
return executions.map((execution) => {
|
||||||
const mappedTargets = execution.targets.map((target) => {
|
const mappedTargets = execution.targets.map((target) => {
|
||||||
const targetType = targetsMap.get(target.type.value);
|
const targetType = targetsMap.get(target);
|
||||||
if (!targetType) {
|
if (!targetType) {
|
||||||
throw new Error(`Target with id ${target.type.value} not found`);
|
throw new Error(`Target with id ${target} not found`);
|
||||||
}
|
}
|
||||||
return targetType;
|
return targetType;
|
||||||
});
|
});
|
||||||
|
@@ -1,4 +1,7 @@
|
|||||||
<h2>{{ 'ACTIONSTWO.EXECUTION.TITLE' | translate }}</h2>
|
<h2>{{ 'ACTIONSTWO.EXECUTION.TITLE' | translate }}</h2>
|
||||||
|
<cnsl-info-section [type]="InfoSectionType.ALERT">
|
||||||
|
{{ 'ACTIONSTWO.BETA_NOTE' | translate }}
|
||||||
|
</cnsl-info-section>
|
||||||
<p class="cnsl-secondary-text">{{ 'ACTIONSTWO.EXECUTION.DESCRIPTION' | translate }}</p>
|
<p class="cnsl-secondary-text">{{ 'ACTIONSTWO.EXECUTION.DESCRIPTION' | translate }}</p>
|
||||||
|
|
||||||
<cnsl-actions-two-actions-table
|
<cnsl-actions-two-actions-table
|
||||||
|
@@ -15,6 +15,7 @@ import { MatDialog } from '@angular/material/dialog';
|
|||||||
import { MessageInitShape } from '@bufbuild/protobuf';
|
import { MessageInitShape } from '@bufbuild/protobuf';
|
||||||
import { SetExecutionRequestSchema } from '@zitadel/proto/zitadel/action/v2beta/action_service_pb';
|
import { SetExecutionRequestSchema } from '@zitadel/proto/zitadel/action/v2beta/action_service_pb';
|
||||||
import { Target } from '@zitadel/proto/zitadel/action/v2beta/target_pb';
|
import { Target } from '@zitadel/proto/zitadel/action/v2beta/target_pb';
|
||||||
|
import { InfoSectionType } from '../../info-section/info-section.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'cnsl-actions-two-actions',
|
selector: 'cnsl-actions-two-actions',
|
||||||
@@ -110,4 +111,6 @@ export class ActionsTwoActionsComponent {
|
|||||||
this.toast.showError(error);
|
this.toast.showError(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected readonly InfoSectionType = InfoSectionType;
|
||||||
}
|
}
|
||||||
|
@@ -10,12 +10,7 @@ import {
|
|||||||
} from './actions-two-add-action-condition/actions-two-add-action-condition.component';
|
} from './actions-two-add-action-condition/actions-two-add-action-condition.component';
|
||||||
import { ActionsTwoAddActionTargetComponent } from './actions-two-add-action-target/actions-two-add-action-target.component';
|
import { ActionsTwoAddActionTargetComponent } from './actions-two-add-action-target/actions-two-add-action-target.component';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import { Condition, Execution } from '@zitadel/proto/zitadel/action/v2beta/execution_pb';
|
||||||
Condition,
|
|
||||||
Execution,
|
|
||||||
ExecutionTargetType,
|
|
||||||
ExecutionTargetTypeSchema,
|
|
||||||
} from '@zitadel/proto/zitadel/action/v2beta/execution_pb';
|
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
import { SetExecutionRequestSchema } from '@zitadel/proto/zitadel/action/v2beta/action_service_pb';
|
import { SetExecutionRequestSchema } from '@zitadel/proto/zitadel/action/v2beta/action_service_pb';
|
||||||
|
|
||||||
@@ -27,11 +22,8 @@ enum Page {
|
|||||||
|
|
||||||
export type CorrectlyTypedCondition = Condition & { conditionType: Extract<Condition['conditionType'], { case: string }> };
|
export type CorrectlyTypedCondition = Condition & { conditionType: Extract<Condition['conditionType'], { case: string }> };
|
||||||
|
|
||||||
type CorrectlyTypedTargets = { type: Extract<ExecutionTargetType['type'], { case: 'target' }> };
|
export type CorrectlyTypedExecution = Omit<Execution, 'condition'> & {
|
||||||
|
|
||||||
export type CorrectlyTypedExecution = Omit<Execution, 'targets' | 'condition'> & {
|
|
||||||
condition: CorrectlyTypedCondition;
|
condition: CorrectlyTypedCondition;
|
||||||
targets: CorrectlyTypedTargets[];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const correctlyTypeExecution = (execution: Execution): CorrectlyTypedExecution => {
|
export const correctlyTypeExecution = (execution: Execution): CorrectlyTypedExecution => {
|
||||||
@@ -48,9 +40,6 @@ export const correctlyTypeExecution = (execution: Execution): CorrectlyTypedExec
|
|||||||
return {
|
return {
|
||||||
...execution,
|
...execution,
|
||||||
condition,
|
condition,
|
||||||
targets: execution.targets
|
|
||||||
.map(({ type }) => ({ type }))
|
|
||||||
.filter((target): target is CorrectlyTypedTargets => target.type.case === 'target'),
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -81,7 +70,7 @@ export class ActionTwoAddActionDialogComponent {
|
|||||||
|
|
||||||
protected readonly typeSignal = signal<ConditionType>('request');
|
protected readonly typeSignal = signal<ConditionType>('request');
|
||||||
protected readonly conditionSignal = signal<MessageInitShape<typeof SetExecutionRequestSchema>['condition']>(undefined);
|
protected readonly conditionSignal = signal<MessageInitShape<typeof SetExecutionRequestSchema>['condition']>(undefined);
|
||||||
protected readonly targetsSignal = signal<MessageInitShape<typeof ExecutionTargetTypeSchema>[]>([]);
|
protected readonly targetsSignal = signal<string[]>([]);
|
||||||
|
|
||||||
protected readonly continueSubject = new Subject<void>();
|
protected readonly continueSubject = new Subject<void>();
|
||||||
|
|
||||||
@@ -112,7 +101,7 @@ export class ActionTwoAddActionDialogComponent {
|
|||||||
this.targetsSignal.set(data.execution.targets);
|
this.targetsSignal.set(data.execution.targets);
|
||||||
this.typeSignal.set(data.execution.condition.conditionType.case);
|
this.typeSignal.set(data.execution.condition.conditionType.case);
|
||||||
this.conditionSignal.set(data.execution.condition);
|
this.conditionSignal.set(data.execution.condition);
|
||||||
this.preselectedTargetIds = data.execution.targets.map((target) => target.type.value);
|
this.preselectedTargetIds = data.execution.targets;
|
||||||
|
|
||||||
this.page.set(Page.Target); // Set the initial page based on the provided execution data
|
this.page.set(Page.Target); // Set the initial page based on the provided execution data
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
<form class="form-grid" [formGroup]="form()" (ngSubmit)="submit()">
|
<form *ngIf="form$ | async as form" class="form-grid" [formGroup]="form" (ngSubmit)="submit()">
|
||||||
<p class="target-description">{{ 'ACTIONSTWO.EXECUTION.DIALOG.TARGET.DESCRIPTION' | translate }}</p>
|
<p class="target-description">{{ 'ACTIONSTWO.EXECUTION.DIALOG.TARGET.DESCRIPTION' | translate }}</p>
|
||||||
|
|
||||||
<cnsl-form-field class="full-width">
|
<cnsl-form-field class="full-width">
|
||||||
@@ -8,9 +8,9 @@
|
|||||||
#trigger="matAutocompleteTrigger"
|
#trigger="matAutocompleteTrigger"
|
||||||
#input
|
#input
|
||||||
type="text"
|
type="text"
|
||||||
[formControl]="form().controls.autocomplete"
|
[formControl]="form.controls.autocomplete"
|
||||||
[matAutocomplete]="autoservice"
|
[matAutocomplete]="autoservice"
|
||||||
(keydown.enter)="handleEnter($event); input.blur(); trigger.closePanel()"
|
(keydown.enter)="handleEnter($event, form); input.blur(); trigger.closePanel()"
|
||||||
/>
|
/>
|
||||||
<mat-autocomplete #autoservice="matAutocomplete">
|
<mat-autocomplete #autoservice="matAutocomplete">
|
||||||
<mat-option *ngIf="targets().state === 'loading'" class="is-loading">
|
<mat-option *ngIf="targets().state === 'loading'" class="is-loading">
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
<mat-option
|
<mat-option
|
||||||
*ngFor="let target of selectableTargets(); trackBy: trackTarget"
|
*ngFor="let target of selectableTargets(); trackBy: trackTarget"
|
||||||
#option
|
#option
|
||||||
(click)="addTarget(target); option.deselect()"
|
(click)="addTarget(target, form); option.deselect()"
|
||||||
[value]="target.name"
|
[value]="target.name"
|
||||||
>
|
>
|
||||||
{{ target.name }}
|
{{ target.name }}
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
</mat-autocomplete>
|
</mat-autocomplete>
|
||||||
</cnsl-form-field>
|
</cnsl-form-field>
|
||||||
|
|
||||||
<table mat-table cdkDropList (cdkDropListDropped)="drop($event)" [dataSource]="dataSource" [trackBy]="trackTarget">
|
<table mat-table cdkDropList (cdkDropListDropped)="drop($event, form)" [dataSource]="dataSource" [trackBy]="trackTarget">
|
||||||
<ng-container matColumnDef="order">
|
<ng-container matColumnDef="order">
|
||||||
<th mat-header-cell *matHeaderCellDef>Reorder</th>
|
<th mat-header-cell *matHeaderCellDef>Reorder</th>
|
||||||
<td mat-cell *cnslCellDef="let row; let i = index; dataSource: dataSource">
|
<td mat-cell *cnslCellDef="let row; let i = index; dataSource: dataSource">
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
actions
|
actions
|
||||||
matTooltip="{{ 'ACTIONS.REMOVE' | translate }}"
|
matTooltip="{{ 'ACTIONS.REMOVE' | translate }}"
|
||||||
color="warn"
|
color="warn"
|
||||||
(click)="removeTarget(i)"
|
(click)="removeTarget(i, form)"
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
>
|
>
|
||||||
<i class="las la-trash"></i>
|
<i class="las la-trash"></i>
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
{{ 'ACTIONS.BACK' | translate }}
|
{{ 'ACTIONS.BACK' | translate }}
|
||||||
</button>
|
</button>
|
||||||
<span class="fill-space"></span>
|
<span class="fill-space"></span>
|
||||||
<button color="primary" [disabled]="form().invalid" mat-raised-button type="submit">
|
<button color="primary" [disabled]="form.invalid" mat-raised-button type="submit">
|
||||||
{{ 'ACTIONS.CONTINUE' | translate }}
|
{{ 'ACTIONS.CONTINUE' | translate }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -14,7 +14,7 @@ import { RouterModule } from '@angular/router';
|
|||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
import { FormBuilder, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
import { FormBuilder, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
import { ReplaySubject, switchMap } from 'rxjs';
|
import { ObservedValueOf, ReplaySubject, shareReplay, switchMap } from 'rxjs';
|
||||||
import { MatRadioModule } from '@angular/material/radio';
|
import { MatRadioModule } from '@angular/material/radio';
|
||||||
import { ActionService } from 'src/app/services/action.service';
|
import { ActionService } from 'src/app/services/action.service';
|
||||||
import { ToastService } from 'src/app/services/toast.service';
|
import { ToastService } from 'src/app/services/toast.service';
|
||||||
@@ -23,14 +23,13 @@ import { InputModule } from 'src/app/modules/input/input.module';
|
|||||||
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
||||||
import { MessageInitShape } from '@bufbuild/protobuf';
|
import { MessageInitShape } from '@bufbuild/protobuf';
|
||||||
import { Target } from '@zitadel/proto/zitadel/action/v2beta/target_pb';
|
import { Target } from '@zitadel/proto/zitadel/action/v2beta/target_pb';
|
||||||
import { ExecutionTargetTypeSchema } from '@zitadel/proto/zitadel/action/v2beta/execution_pb';
|
|
||||||
import { MatSelectModule } from '@angular/material/select';
|
import { MatSelectModule } from '@angular/material/select';
|
||||||
import { ActionConditionPipeModule } from 'src/app/pipes/action-condition-pipe/action-condition-pipe.module';
|
import { ActionConditionPipeModule } from 'src/app/pipes/action-condition-pipe/action-condition-pipe.module';
|
||||||
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
||||||
import { startWith } from 'rxjs/operators';
|
import { map, startWith } from 'rxjs/operators';
|
||||||
import { TypeSafeCellDefModule } from 'src/app/directives/type-safe-cell-def/type-safe-cell-def.module';
|
import { TypeSafeCellDefModule } from 'src/app/directives/type-safe-cell-def/type-safe-cell-def.module';
|
||||||
import { CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';
|
import { CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';
|
||||||
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
import { toSignal } from '@angular/core/rxjs-interop';
|
||||||
import { minArrayLengthValidator } from '../../../form-field/validators/validators';
|
import { minArrayLengthValidator } from '../../../form-field/validators/validators';
|
||||||
import { ProjectRoleChipModule } from '../../../project-role-chip/project-role-chip.module';
|
import { ProjectRoleChipModule } from '../../../project-role-chip/project-role-chip.module';
|
||||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||||
@@ -72,11 +71,12 @@ export class ActionsTwoAddActionTargetComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Output() public readonly back = new EventEmitter<void>();
|
@Output() public readonly back = new EventEmitter<void>();
|
||||||
@Output() public readonly continue = new EventEmitter<MessageInitShape<typeof ExecutionTargetTypeSchema>[]>();
|
@Output() public readonly continue = new EventEmitter<string[]>();
|
||||||
|
|
||||||
private readonly preselectedTargetIds$ = new ReplaySubject<string[]>(1);
|
private readonly preselectedTargetIds$ = new ReplaySubject<string[]>(1);
|
||||||
|
|
||||||
protected readonly form: ReturnType<typeof this.buildForm>;
|
protected readonly form$: ReturnType<typeof this.buildForm>;
|
||||||
|
|
||||||
protected readonly targets: ReturnType<typeof this.listTargets>;
|
protected readonly targets: ReturnType<typeof this.listTargets>;
|
||||||
private readonly selectedTargetIds: Signal<string[]>;
|
private readonly selectedTargetIds: Signal<string[]>;
|
||||||
protected readonly selectableTargets: Signal<Target[]>;
|
protected readonly selectableTargets: Signal<Target[]>;
|
||||||
@@ -87,26 +87,27 @@ export class ActionsTwoAddActionTargetComponent {
|
|||||||
private readonly actionService: ActionService,
|
private readonly actionService: ActionService,
|
||||||
private readonly toast: ToastService,
|
private readonly toast: ToastService,
|
||||||
) {
|
) {
|
||||||
this.form = this.buildForm();
|
this.form$ = this.buildForm().pipe(shareReplay({ refCount: true, bufferSize: 1 }));
|
||||||
this.targets = this.listTargets();
|
this.targets = this.listTargets();
|
||||||
|
|
||||||
this.selectedTargetIds = this.getSelectedTargetIds(this.form);
|
this.selectedTargetIds = this.getSelectedTargetIds(this.form$);
|
||||||
this.selectableTargets = this.getSelectableTargets(this.targets, this.selectedTargetIds);
|
this.selectableTargets = this.getSelectableTargets(this.targets, this.selectedTargetIds, this.form$);
|
||||||
this.dataSource = this.getDataSource(this.targets, this.selectedTargetIds);
|
this.dataSource = this.getDataSource(this.targets, this.selectedTargetIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
private buildForm() {
|
private buildForm() {
|
||||||
const preselectedTargetIds = toSignal(this.preselectedTargetIds$, { initialValue: [] as string[] });
|
return this.preselectedTargetIds$.pipe(
|
||||||
|
startWith([] as string[]),
|
||||||
return computed(() => {
|
map((preselectedTargetIds) => {
|
||||||
return this.fb.group({
|
return this.fb.group({
|
||||||
autocomplete: new FormControl('', { nonNullable: true }),
|
autocomplete: new FormControl('', { nonNullable: true }),
|
||||||
selectedTargetIds: new FormControl(preselectedTargetIds(), {
|
selectedTargetIds: new FormControl(preselectedTargetIds, {
|
||||||
nonNullable: true,
|
nonNullable: true,
|
||||||
validators: [minArrayLengthValidator(1)],
|
validators: [minArrayLengthValidator(1)],
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
});
|
}),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private listTargets() {
|
private listTargets() {
|
||||||
@@ -129,25 +130,35 @@ export class ActionsTwoAddActionTargetComponent {
|
|||||||
return computed(targetsSignal);
|
return computed(targetsSignal);
|
||||||
}
|
}
|
||||||
|
|
||||||
private getSelectedTargetIds(form: typeof this.form) {
|
private getSelectedTargetIds(form$: typeof this.form$) {
|
||||||
const selectedTargetIds$ = toObservable(form).pipe(
|
const selectedTargetIds$ = form$.pipe(
|
||||||
startWith(form()),
|
switchMap(({ controls: { selectedTargetIds } }) => {
|
||||||
switchMap((form) => {
|
|
||||||
const { selectedTargetIds } = form.controls;
|
|
||||||
return selectedTargetIds.valueChanges.pipe(startWith(selectedTargetIds.value));
|
return selectedTargetIds.valueChanges.pipe(startWith(selectedTargetIds.value));
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
return toSignal(selectedTargetIds$, { requireSync: true });
|
return toSignal(selectedTargetIds$, { requireSync: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
private getSelectableTargets(targets: typeof this.targets, selectedTargetIds: Signal<string[]>) {
|
private getSelectableTargets(targets: typeof this.targets, selectedTargetIds: Signal<string[]>, form$: typeof this.form$) {
|
||||||
return computed(() => {
|
const autocomplete$ = form$.pipe(
|
||||||
|
switchMap(({ controls: { autocomplete } }) => {
|
||||||
|
return autocomplete.valueChanges.pipe(startWith(autocomplete.value));
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
const autocompleteSignal = toSignal(autocomplete$, { requireSync: true });
|
||||||
|
|
||||||
|
const unselectedTargets = computed(() => {
|
||||||
const targetsCopy = new Map(targets().targets);
|
const targetsCopy = new Map(targets().targets);
|
||||||
for (const selectedTargetId of selectedTargetIds()) {
|
for (const selectedTargetId of selectedTargetIds()) {
|
||||||
targetsCopy.delete(selectedTargetId);
|
targetsCopy.delete(selectedTargetId);
|
||||||
}
|
}
|
||||||
return Array.from(targetsCopy.values());
|
return Array.from(targetsCopy.values());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return computed(() => {
|
||||||
|
const autocomplete = autocompleteSignal().toLowerCase();
|
||||||
|
return unselectedTargets().filter(({ name }) => name.toLowerCase().includes(autocomplete));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private getDataSource(targetsSignal: typeof this.targets, selectedTargetIdsSignal: Signal<string[]>) {
|
private getDataSource(targetsSignal: typeof this.targets, selectedTargetIdsSignal: Signal<string[]>) {
|
||||||
@@ -178,46 +189,39 @@ export class ActionsTwoAddActionTargetComponent {
|
|||||||
return dataSource;
|
return dataSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected addTarget(target: Target) {
|
protected addTarget(target: Target, form: ObservedValueOf<typeof this.form$>) {
|
||||||
const { selectedTargetIds } = this.form().controls;
|
const { selectedTargetIds } = form.controls;
|
||||||
selectedTargetIds.setValue([target.id, ...selectedTargetIds.value]);
|
selectedTargetIds.setValue([target.id, ...selectedTargetIds.value]);
|
||||||
this.form().controls.autocomplete.setValue('');
|
form.controls.autocomplete.setValue('');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected removeTarget(index: number) {
|
protected removeTarget(index: number, form: ObservedValueOf<typeof this.form$>) {
|
||||||
const { selectedTargetIds } = this.form().controls;
|
const { selectedTargetIds } = form.controls;
|
||||||
const data = [...selectedTargetIds.value];
|
const data = [...selectedTargetIds.value];
|
||||||
data.splice(index, 1);
|
data.splice(index, 1);
|
||||||
selectedTargetIds.setValue(data);
|
selectedTargetIds.setValue(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected drop(event: CdkDragDrop<undefined>) {
|
protected drop(event: CdkDragDrop<undefined>, form: ObservedValueOf<typeof this.form$>) {
|
||||||
const { selectedTargetIds } = this.form().controls;
|
const { selectedTargetIds } = form.controls;
|
||||||
|
|
||||||
const data = [...selectedTargetIds.value];
|
const data = [...selectedTargetIds.value];
|
||||||
moveItemInArray(data, event.previousIndex, event.currentIndex);
|
moveItemInArray(data, event.previousIndex, event.currentIndex);
|
||||||
selectedTargetIds.setValue(data);
|
selectedTargetIds.setValue(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected handleEnter(event: Event) {
|
protected handleEnter(event: Event, form: ObservedValueOf<typeof this.form$>) {
|
||||||
const selectableTargets = this.selectableTargets();
|
const selectableTargets = this.selectableTargets();
|
||||||
if (selectableTargets.length !== 1) {
|
if (selectableTargets.length !== 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
this.addTarget(selectableTargets[0]);
|
this.addTarget(selectableTargets[0], form);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected submit() {
|
protected submit() {
|
||||||
const selectedTargets = this.selectedTargetIds().map((value) => ({
|
this.continue.emit(this.selectedTargetIds());
|
||||||
type: {
|
|
||||||
case: 'target' as const,
|
|
||||||
value,
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
|
|
||||||
this.continue.emit(selectedTargets);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected trackTarget(_: number, target: Target) {
|
protected trackTarget(_: number, target: Target) {
|
||||||
|
@@ -26,6 +26,9 @@
|
|||||||
{{ 'ACTIONSTWO.TARGET.CREATE.TYPES.' + type | translate }}
|
{{ 'ACTIONSTWO.TARGET.CREATE.TYPES.' + type | translate }}
|
||||||
</mat-option>
|
</mat-option>
|
||||||
</mat-select>
|
</mat-select>
|
||||||
|
<span class="name-hint cnsl-secondary-text types-description">
|
||||||
|
{{ 'ACTIONSTWO.TARGET.CREATE.TYPES_DESCRIPTION' | translate }}
|
||||||
|
</span>
|
||||||
</cnsl-form-field>
|
</cnsl-form-field>
|
||||||
|
|
||||||
<cnsl-form-field class="full-width">
|
<cnsl-form-field class="full-width">
|
||||||
|
@@ -23,3 +23,7 @@
|
|||||||
.name-hint {
|
.name-hint {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.types-description {
|
||||||
|
white-space: pre-line;
|
||||||
|
}
|
||||||
|
@@ -1,4 +1,7 @@
|
|||||||
<h2>{{ 'ACTIONSTWO.TARGET.TITLE' | translate }}</h2>
|
<h2>{{ 'ACTIONSTWO.TARGET.TITLE' | translate }}</h2>
|
||||||
|
<cnsl-info-section [type]="InfoSectionType.ALERT">
|
||||||
|
{{ 'ACTIONSTWO.BETA_NOTE' | translate }}
|
||||||
|
</cnsl-info-section>
|
||||||
<p class="cnsl-secondary-text">{{ 'ACTIONSTWO.TARGET.DESCRIPTION' | translate }}</p>
|
<p class="cnsl-secondary-text">{{ 'ACTIONSTWO.TARGET.DESCRIPTION' | translate }}</p>
|
||||||
|
|
||||||
<cnsl-actions-two-targets-table
|
<cnsl-actions-two-targets-table
|
||||||
|
@@ -12,6 +12,7 @@ import {
|
|||||||
CreateTargetRequestSchema,
|
CreateTargetRequestSchema,
|
||||||
UpdateTargetRequestSchema,
|
UpdateTargetRequestSchema,
|
||||||
} from '@zitadel/proto/zitadel/action/v2beta/action_service_pb';
|
} from '@zitadel/proto/zitadel/action/v2beta/action_service_pb';
|
||||||
|
import { InfoSectionType } from '../../info-section/info-section.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'cnsl-actions-two-targets',
|
selector: 'cnsl-actions-two-targets',
|
||||||
@@ -76,7 +77,8 @@ export class ActionsTwoTargetsComponent {
|
|||||||
if ('id' in request) {
|
if ('id' in request) {
|
||||||
await this.actionService.updateTarget(request);
|
await this.actionService.updateTarget(request);
|
||||||
} else {
|
} else {
|
||||||
await this.actionService.createTarget(request);
|
const resp = await this.actionService.createTarget(request);
|
||||||
|
console.log(`Your singing key: ${resp.signingKey}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
await new Promise((res) => setTimeout(res, 1000));
|
await new Promise((res) => setTimeout(res, 1000));
|
||||||
@@ -86,4 +88,6 @@ export class ActionsTwoTargetsComponent {
|
|||||||
this.toast.showError(error);
|
this.toast.showError(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected readonly InfoSectionType = InfoSectionType;
|
||||||
}
|
}
|
||||||
|
@@ -20,6 +20,7 @@ import { ProjectRoleChipModule } from '../project-role-chip/project-role-chip.mo
|
|||||||
import { ActionConditionPipeModule } from 'src/app/pipes/action-condition-pipe/action-condition-pipe.module';
|
import { ActionConditionPipeModule } from 'src/app/pipes/action-condition-pipe/action-condition-pipe.module';
|
||||||
import { MatSelectModule } from '@angular/material/select';
|
import { MatSelectModule } from '@angular/material/select';
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
import { MatIconModule } from '@angular/material/icon';
|
||||||
|
import { InfoSectionModule } from '../info-section/info-section.module';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
@@ -47,6 +48,7 @@ import { MatIconModule } from '@angular/material/icon';
|
|||||||
TypeSafeCellDefModule,
|
TypeSafeCellDefModule,
|
||||||
ProjectRoleChipModule,
|
ProjectRoleChipModule,
|
||||||
ActionConditionPipeModule,
|
ActionConditionPipeModule,
|
||||||
|
InfoSectionModule,
|
||||||
],
|
],
|
||||||
exports: [ActionsTwoActionsComponent, ActionsTwoTargetsComponent, ActionsTwoTargetsTableComponent],
|
exports: [ActionsTwoActionsComponent, ActionsTwoTargetsComponent, ActionsTwoTargetsTableComponent],
|
||||||
})
|
})
|
||||||
|
@@ -231,6 +231,7 @@ export const ACTIONS: SidenavSetting = {
|
|||||||
// todo: figure out roles
|
// todo: figure out roles
|
||||||
[PolicyComponentServiceType.ADMIN]: ['iam.policy.read'],
|
[PolicyComponentServiceType.ADMIN]: ['iam.policy.read'],
|
||||||
},
|
},
|
||||||
|
beta: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ACTIONS_TARGETS: SidenavSetting = {
|
export const ACTIONS_TARGETS: SidenavSetting = {
|
||||||
@@ -241,4 +242,5 @@ export const ACTIONS_TARGETS: SidenavSetting = {
|
|||||||
// todo: figure out roles
|
// todo: figure out roles
|
||||||
[PolicyComponentServiceType.ADMIN]: ['iam.policy.read'],
|
[PolicyComponentServiceType.ADMIN]: ['iam.policy.read'],
|
||||||
},
|
},
|
||||||
|
beta: true,
|
||||||
};
|
};
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
[attr.data-e2e]="'sidenav-element-' + setting.id"
|
[attr.data-e2e]="'sidenav-element-' + setting.id"
|
||||||
>
|
>
|
||||||
<span>{{ setting.i18nKey | translate }}</span>
|
<span>{{ setting.i18nKey | translate }}</span>
|
||||||
|
<span class="state" *ngIf="setting?.beta">{{ 'SETTINGS.BETA' | translate }}</span>
|
||||||
<mat-icon *ngIf="setting.showWarn" class="warn-icon" svgIcon="mdi_shield_alert"></mat-icon>
|
<mat-icon *ngIf="setting.showWarn" class="warn-icon" svgIcon="mdi_shield_alert"></mat-icon>
|
||||||
</button>
|
</button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
@@ -90,6 +90,10 @@
|
|||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.state {
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
span {
|
span {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
@@ -11,6 +11,7 @@ export interface SidenavSetting {
|
|||||||
[PolicyComponentServiceType.ADMIN]?: string[];
|
[PolicyComponentServiceType.ADMIN]?: string[];
|
||||||
};
|
};
|
||||||
showWarn?: boolean;
|
showWarn?: boolean;
|
||||||
|
beta?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@@ -6,6 +6,9 @@
|
|||||||
<mat-icon class="icon">info_outline</mat-icon>
|
<mat-icon class="icon">info_outline</mat-icon>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
<cnsl-info-section [type]="InfoSectionType.ALERT">
|
||||||
|
{{ 'DESCRIPTIONS.ACTIONS.ACTIONSTWO_NOTE' | translate }}
|
||||||
|
</cnsl-info-section>
|
||||||
<p class="desc cnsl-secondary-text">{{ 'DESCRIPTIONS.ACTIONS.DESCRIPTION' | translate }}</p>
|
<p class="desc cnsl-secondary-text">{{ 'DESCRIPTIONS.ACTIONS.DESCRIPTION' | translate }}</p>
|
||||||
|
|
||||||
<cnsl-info-section class="max-actions" *ngIf="maxActions"
|
<cnsl-info-section class="max-actions" *ngIf="maxActions"
|
||||||
|
@@ -1,8 +1,7 @@
|
|||||||
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';
|
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';
|
||||||
import { Component, OnDestroy } from '@angular/core';
|
import { Component, DestroyRef } from '@angular/core';
|
||||||
import { UntypedFormControl } from '@angular/forms';
|
import { UntypedFormControl } from '@angular/forms';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import { Subject, takeUntil } from 'rxjs';
|
|
||||||
import { ActionKeysType } from 'src/app/modules/action-keys/action-keys.component';
|
import { ActionKeysType } from 'src/app/modules/action-keys/action-keys.component';
|
||||||
import { InfoSectionType } from 'src/app/modules/info-section/info-section.component';
|
import { InfoSectionType } from 'src/app/modules/info-section/info-section.component';
|
||||||
import { WarnDialogComponent } from 'src/app/modules/warn-dialog/warn-dialog.component';
|
import { WarnDialogComponent } from 'src/app/modules/warn-dialog/warn-dialog.component';
|
||||||
@@ -13,31 +12,32 @@ import { ManagementService } from 'src/app/services/mgmt.service';
|
|||||||
import { ToastService } from 'src/app/services/toast.service';
|
import { ToastService } from 'src/app/services/toast.service';
|
||||||
|
|
||||||
import { AddFlowDialogComponent } from './add-flow-dialog/add-flow-dialog.component';
|
import { AddFlowDialogComponent } from './add-flow-dialog/add-flow-dialog.component';
|
||||||
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'cnsl-actions',
|
selector: 'cnsl-actions',
|
||||||
templateUrl: './actions.component.html',
|
templateUrl: './actions.component.html',
|
||||||
styleUrls: ['./actions.component.scss'],
|
styleUrls: ['./actions.component.scss'],
|
||||||
})
|
})
|
||||||
export class ActionsComponent implements OnDestroy {
|
export class ActionsComponent {
|
||||||
public flow!: Flow.AsObject;
|
protected flow!: Flow.AsObject;
|
||||||
|
|
||||||
public typeControl: UntypedFormControl = new UntypedFormControl();
|
protected typeControl: UntypedFormControl = new UntypedFormControl();
|
||||||
|
|
||||||
public typesForSelection: FlowType.AsObject[] = [];
|
protected typesForSelection: FlowType.AsObject[] = [];
|
||||||
|
|
||||||
public selection: Action.AsObject[] = [];
|
protected selection: Action.AsObject[] = [];
|
||||||
public InfoSectionType: any = InfoSectionType;
|
protected InfoSectionType = InfoSectionType;
|
||||||
public ActionKeysType: any = ActionKeysType;
|
protected ActionKeysType = ActionKeysType;
|
||||||
|
|
||||||
public maxActions: number | null = null;
|
protected maxActions: number | null = null;
|
||||||
public ActionState: any = ActionState;
|
protected ActionState = ActionState;
|
||||||
private destroy$: Subject<void> = new Subject();
|
|
||||||
constructor(
|
constructor(
|
||||||
private mgmtService: ManagementService,
|
private mgmtService: ManagementService,
|
||||||
breadcrumbService: BreadcrumbService,
|
breadcrumbService: BreadcrumbService,
|
||||||
private dialog: MatDialog,
|
private dialog: MatDialog,
|
||||||
private toast: ToastService,
|
private toast: ToastService,
|
||||||
|
destroyRef: DestroyRef,
|
||||||
) {
|
) {
|
||||||
const bread: Breadcrumb = {
|
const bread: Breadcrumb = {
|
||||||
type: BreadcrumbType.ORG,
|
type: BreadcrumbType.ORG,
|
||||||
@@ -45,31 +45,24 @@ export class ActionsComponent implements OnDestroy {
|
|||||||
};
|
};
|
||||||
breadcrumbService.setBreadcrumb([bread]);
|
breadcrumbService.setBreadcrumb([bread]);
|
||||||
|
|
||||||
this.getFlowTypes();
|
this.getFlowTypes().then();
|
||||||
|
|
||||||
this.typeControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {
|
this.typeControl.valueChanges.pipe(takeUntilDestroyed(destroyRef)).subscribe((value) => {
|
||||||
this.loadFlow((value as FlowType.AsObject).id);
|
this.loadFlow((value as FlowType.AsObject).id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnDestroy(): void {
|
private async getFlowTypes(): Promise<void> {
|
||||||
this.destroy$.next();
|
try {
|
||||||
this.destroy$.complete();
|
let resp = await this.mgmtService.listFlowTypes();
|
||||||
}
|
|
||||||
|
|
||||||
private getFlowTypes(): Promise<void> {
|
|
||||||
return this.mgmtService
|
|
||||||
.listFlowTypes()
|
|
||||||
.then((resp) => {
|
|
||||||
this.typesForSelection = resp.resultList;
|
this.typesForSelection = resp.resultList;
|
||||||
if (!this.flow && resp.resultList[0]) {
|
if (!this.flow && resp.resultList[0]) {
|
||||||
const type = resp.resultList[0];
|
const type = resp.resultList[0];
|
||||||
this.typeControl.setValue(type);
|
this.typeControl.setValue(type);
|
||||||
}
|
}
|
||||||
})
|
} catch (error) {
|
||||||
.catch((error: any) => {
|
|
||||||
this.toast.showError(error);
|
this.toast.showError(error);
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private loadFlow(id: string) {
|
private loadFlow(id: string) {
|
||||||
@@ -106,7 +99,7 @@ export class ActionsComponent implements OnDestroy {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public openAddTrigger(flow: FlowType.AsObject, trigger?: TriggerType.AsObject): void {
|
protected openAddTrigger(flow: FlowType.AsObject, trigger?: TriggerType.AsObject): void {
|
||||||
const dialogRef = this.dialog.open(AddFlowDialogComponent, {
|
const dialogRef = this.dialog.open(AddFlowDialogComponent, {
|
||||||
data: {
|
data: {
|
||||||
flowType: flow,
|
flowType: flow,
|
||||||
@@ -119,7 +112,7 @@ export class ActionsComponent implements OnDestroy {
|
|||||||
if (req) {
|
if (req) {
|
||||||
this.mgmtService
|
this.mgmtService
|
||||||
.setTriggerActions(req.getActionIdsList(), req.getFlowType(), req.getTriggerType())
|
.setTriggerActions(req.getActionIdsList(), req.getFlowType(), req.getTriggerType())
|
||||||
.then((resp) => {
|
.then(() => {
|
||||||
this.toast.showInfo('FLOWS.FLOWCHANGED', true);
|
this.toast.showInfo('FLOWS.FLOWCHANGED', true);
|
||||||
this.loadFlow(flow.id);
|
this.loadFlow(flow.id);
|
||||||
})
|
})
|
||||||
@@ -157,7 +150,7 @@ export class ActionsComponent implements OnDestroy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeTriggerActionsList(index: number) {
|
protected removeTriggerActionsList(index: number) {
|
||||||
if (this.flow.type && this.flow.triggerActionsList && this.flow.triggerActionsList[index]) {
|
if (this.flow.type && this.flow.triggerActionsList && this.flow.triggerActionsList[index]) {
|
||||||
const dialogRef = this.dialog.open(WarnDialogComponent, {
|
const dialogRef = this.dialog.open(WarnDialogComponent, {
|
||||||
data: {
|
data: {
|
||||||
|
@@ -42,8 +42,6 @@ import { SidenavSetting } from 'src/app/modules/sidenav/sidenav.component';
|
|||||||
import { GrpcAuthService } from 'src/app/services/grpc-auth.service';
|
import { GrpcAuthService } from 'src/app/services/grpc-auth.service';
|
||||||
import { EnvironmentService } from 'src/app/services/environment.service';
|
import { EnvironmentService } from 'src/app/services/environment.service';
|
||||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
||||||
import { NewFeatureService } from '../../services/new-feature.service';
|
|
||||||
import { withLatestFromSynchronousFix } from '../../utils/withLatestFromSynchronousFix';
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'cnsl-instance',
|
selector: 'cnsl-instance',
|
||||||
templateUrl: './instance.component.html',
|
templateUrl: './instance.component.html',
|
||||||
@@ -106,7 +104,6 @@ export class InstanceComponent {
|
|||||||
private readonly envService: EnvironmentService,
|
private readonly envService: EnvironmentService,
|
||||||
activatedRoute: ActivatedRoute,
|
activatedRoute: ActivatedRoute,
|
||||||
private readonly destroyRef: DestroyRef,
|
private readonly destroyRef: DestroyRef,
|
||||||
private readonly featureService: NewFeatureService,
|
|
||||||
) {
|
) {
|
||||||
this.loadMembers();
|
this.loadMembers();
|
||||||
|
|
||||||
@@ -139,32 +136,7 @@ export class InstanceComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getSettingsList(): Observable<SidenavSetting[]> {
|
private getSettingsList(): Observable<SidenavSetting[]> {
|
||||||
const features$ = this.getFeatures().pipe(shareReplay({ refCount: true, bufferSize: 1 }));
|
return this.authService.isAllowedMapper(this.defaultSettingsList, (setting) => setting.requiredRoles.admin || []);
|
||||||
|
|
||||||
const actionsEnabled$ = features$.pipe(map((features) => features?.actions?.enabled));
|
|
||||||
|
|
||||||
return this.authService
|
|
||||||
.isAllowedMapper(this.defaultSettingsList, (setting) => setting.requiredRoles.admin || [])
|
|
||||||
.pipe(
|
|
||||||
withLatestFromSynchronousFix(actionsEnabled$),
|
|
||||||
map(([settings, actionsEnabled]) =>
|
|
||||||
settings
|
|
||||||
.filter((setting) => actionsEnabled || setting.id !== ACTIONS.id)
|
|
||||||
.filter((setting) => actionsEnabled || setting.id !== ACTIONS_TARGETS.id),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private getFeatures() {
|
|
||||||
return defer(() => this.featureService.getInstanceFeatures()).pipe(
|
|
||||||
timeout(1000),
|
|
||||||
catchError((error) => {
|
|
||||||
if (!(error instanceof TimeoutError)) {
|
|
||||||
this.toast.showError(error);
|
|
||||||
}
|
|
||||||
return of(undefined);
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public loadMembers(): void {
|
public loadMembers(): void {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Потоци",
|
"TITLE": "Потоци",
|
||||||
"DESCRIPTION": "Изберете поток за удостоверяване и активирайте вашето действие при конкретно събитие в този поток."
|
"DESCRIPTION": "Изберете поток за удостоверяване и активирайте вашето действие при конкретно събитие в този поток."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, нова и подобрена версия на Actions, вече е налична. Настоящата версия все още е достъпна, но бъдещото развитие ще бъде фокусирано върху новата, която в крайна сметка ще замени текущата версия."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -528,6 +529,7 @@
|
|||||||
"APPLY": "Прилагам"
|
"APPLY": "Прилагам"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "В момента използвате новата версия Actions V2, която е в бета фаза. Предишната версия 1 все още е достъпна, но ще бъде спряна в бъдеще. Моля, съобщавайте за всякакви проблеми или изпратете обратна връзка.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Действия",
|
"TITLE": "Действия",
|
||||||
"DESCRIPTION": "Действията ви позволяват да изпълнявате персонализиран код в отговор на API заявки, събития или специфични функции. Използвайте ги, за да разширите Zitadel, да автоматизирате работни процеси и да се интегрирате с други системи.",
|
"DESCRIPTION": "Действията ви позволяват да изпълнявате персонализиран код в отговор на API заявки, събития или специфични функции. Използвайте ги, за да разширите Zitadel, да автоматизирате работни процеси и да се интегрирате с други системи.",
|
||||||
@@ -618,6 +620,7 @@
|
|||||||
"restCall": "REST извикване",
|
"restCall": "REST извикване",
|
||||||
"restAsync": "REST асинхронно"
|
"restAsync": "REST асинхронно"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, обаждането обработва кода на състоянието, но отговорът е без значение\nCall, обаждането обработва кода на състоянието и отговора\nAsync, обаждането не обработва нито кода на състоянието, нито отговора, но може да бъде извикано паралелно с други цели",
|
||||||
"ENDPOINT": "Крайна точка",
|
"ENDPOINT": "Крайна точка",
|
||||||
"ENDPOINT_DESCRIPTION": "Въведете крайната точка, където се хоства вашият код. Уверете се, че е достъпна за нас!",
|
"ENDPOINT_DESCRIPTION": "Въведете крайната точка, където се хоства вашият код. Уверете се, че е достъпна за нас!",
|
||||||
"TIMEOUT": "Време за изчакване",
|
"TIMEOUT": "Време за изчакване",
|
||||||
@@ -1507,7 +1510,8 @@
|
|||||||
"APPEARANCE": "Външен вид",
|
"APPEARANCE": "Външен вид",
|
||||||
"OTHER": "други",
|
"OTHER": "други",
|
||||||
"STORAGE": "Съхранение"
|
"STORAGE": "Съхранение"
|
||||||
}
|
},
|
||||||
|
"BETA": "БЕТА"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Flows",
|
"TITLE": "Flows",
|
||||||
"DESCRIPTION": "Vyberte proces autentizace a spusťte vaši akci na konkrétní události v rámci tohoto procesu."
|
"DESCRIPTION": "Vyberte proces autentizace a spusťte vaši akci na konkrétní události v rámci tohoto procesu."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, nová a vylepšená verze Actions, je nyní k dispozici. Aktuální verze je stále přístupná, ale budoucí vývoj se zaměří na novou verzi, která nakonec nahradí tu současnou."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Platit"
|
"APPLY": "Platit"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Aktuálně používáte novou verzi Actions V2, která je v beta verzi. Předchozí verze 1 je stále k dispozici, ale v budoucnu bude ukončena. Prosím, hlaste jakékoliv problémy nebo zpětnou vazbu.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Akce",
|
"TITLE": "Akce",
|
||||||
"DESCRIPTION": "Akce vám umožňují spouštět vlastní kód v reakci na požadavky API, události nebo specifické funkce. Použijte je k rozšíření Zitadel, automatizaci pracovních postupů a integraci s dalšími systémy.",
|
"DESCRIPTION": "Akce vám umožňují spouštět vlastní kód v reakci na požadavky API, události nebo specifické funkce. Použijte je k rozšíření Zitadel, automatizaci pracovních postupů a integraci s dalšími systémy.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST Volání",
|
"restCall": "REST Volání",
|
||||||
"restAsync": "REST Asynchronní"
|
"restAsync": "REST Asynchronní"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, volání zpracovává stavový kód, ale odpověď je irelevantní\nCall, volání zpracovává stavový kód a odpověď\nAsync, volání nezpracovává ani stavový kód, ani odpověď, ale může být spuštěno paralelně s jinými cíli",
|
||||||
"ENDPOINT": "Koncový bod",
|
"ENDPOINT": "Koncový bod",
|
||||||
"ENDPOINT_DESCRIPTION": "Zadejte koncový bod, kde je hostován váš kód. Ujistěte se, že je pro nás přístupný!",
|
"ENDPOINT_DESCRIPTION": "Zadejte koncový bod, kde je hostován váš kód. Ujistěte se, že je pro nás přístupný!",
|
||||||
"TIMEOUT": "Časový limit",
|
"TIMEOUT": "Časový limit",
|
||||||
@@ -1508,7 +1511,8 @@
|
|||||||
"APPEARANCE": "Vzhled",
|
"APPEARANCE": "Vzhled",
|
||||||
"OTHER": "Ostatní",
|
"OTHER": "Ostatní",
|
||||||
"STORAGE": "Data"
|
"STORAGE": "Data"
|
||||||
}
|
},
|
||||||
|
"BETA": "BETA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Flows",
|
"TITLE": "Flows",
|
||||||
"DESCRIPTION": "Wähle einen Authentifizierungsflow und löse deine Aktionen bei einem spezifischen Ereignis innerhalb dieses Flows aus."
|
"DESCRIPTION": "Wähle einen Authentifizierungsflow und löse deine Aktionen bei einem spezifischen Ereignis innerhalb dieses Flows aus."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, eine neue und verbesserte Version von Actions, ist jetzt verfügbar. Die aktuelle Version ist weiterhin zugänglich, aber unsere zukünftige Entwicklung wird sich auf die neue Version konzentrieren, die schließlich die aktuelle ersetzen wird."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Anwenden"
|
"APPLY": "Anwenden"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Sie verwenden derzeit die neuen Actions V2, die sich in der Beta-Phase befinden. Version 1 ist weiterhin verfügbar, wird jedoch in Zukunft eingestellt. Bitte melden Sie Probleme oder Feedback.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Aktionen",
|
"TITLE": "Aktionen",
|
||||||
"DESCRIPTION": "Aktionen ermöglichen es Ihnen, benutzerdefinierten Code als Reaktion auf API-Anfragen, Ereignisse oder bestimmte Funktionen auszuführen. Verwenden Sie sie, um Zitadel zu erweitern, Arbeitsabläufe zu automatisieren und sich in andere Systeme zu integrieren.",
|
"DESCRIPTION": "Aktionen ermöglichen es Ihnen, benutzerdefinierten Code als Reaktion auf API-Anfragen, Ereignisse oder bestimmte Funktionen auszuführen. Verwenden Sie sie, um Zitadel zu erweitern, Arbeitsabläufe zu automatisieren und sich in andere Systeme zu integrieren.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST Aufruf",
|
"restCall": "REST Aufruf",
|
||||||
"restAsync": "REST Asynchron"
|
"restAsync": "REST Asynchron"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, der Aufruf verarbeitet den Statuscode, aber die Antwort ist irrelevant\nCall, der Aufruf verarbeitet den Statuscode und die Antwort\nAsync, der Aufruf verarbeitet weder Statuscode noch Antwort, kann aber parallel zu anderen Zielen aufgerufen werden",
|
||||||
"ENDPOINT": "Endpunkt",
|
"ENDPOINT": "Endpunkt",
|
||||||
"ENDPOINT_DESCRIPTION": "Geben Sie den Endpunkt ein, an dem Ihr Code gehostet wird. Stellen Sie sicher, dass er für uns zugänglich ist!",
|
"ENDPOINT_DESCRIPTION": "Geben Sie den Endpunkt ein, an dem Ihr Code gehostet wird. Stellen Sie sicher, dass er für uns zugänglich ist!",
|
||||||
"TIMEOUT": "Timeout",
|
"TIMEOUT": "Timeout",
|
||||||
@@ -1508,7 +1511,8 @@
|
|||||||
"APPEARANCE": "Erscheinungsbild",
|
"APPEARANCE": "Erscheinungsbild",
|
||||||
"OTHER": "Anderes",
|
"OTHER": "Anderes",
|
||||||
"STORAGE": "Speicher"
|
"STORAGE": "Speicher"
|
||||||
}
|
},
|
||||||
|
"BETA": "BETA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Flows",
|
"TITLE": "Flows",
|
||||||
"DESCRIPTION": "Choose an authentication flow and trigger your action on a specific event within this flow."
|
"DESCRIPTION": "Choose an authentication flow and trigger your action on a specific event within this flow."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2 a new, improved version of Actions is now available. The current version is still accessible, but our future development will focus on the new one, which will eventually replace the current version."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Apply"
|
"APPLY": "Apply"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "You are currently using the new Actions V2, which is in beta. The previous Version 1 is still available but will be discontinued in the future. Please report any issues or feedback.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Actions",
|
"TITLE": "Actions",
|
||||||
"DESCRIPTION": "Actions let you run custom code in response to API requests, events or specific functions. Use them to extend Zitadel, automate workflows, and itegrate with other systems.",
|
"DESCRIPTION": "Actions let you run custom code in response to API requests, events or specific functions. Use them to extend Zitadel, automate workflows, and itegrate with other systems.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST Call",
|
"restCall": "REST Call",
|
||||||
"restAsync": "REST Async"
|
"restAsync": "REST Async"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, the call handles the status code but response is irrelevant\nCall, the call handles the status code and response\nAsync, the call handles neither status code nor response, but can be called in parallel with other Targets",
|
||||||
"ENDPOINT": "Endpoint",
|
"ENDPOINT": "Endpoint",
|
||||||
"ENDPOINT_DESCRIPTION": "Enter the endpoint where your code is hosted. Make sure it is accessible to us!",
|
"ENDPOINT_DESCRIPTION": "Enter the endpoint where your code is hosted. Make sure it is accessible to us!",
|
||||||
"TIMEOUT": "Timeout",
|
"TIMEOUT": "Timeout",
|
||||||
@@ -1511,7 +1514,8 @@
|
|||||||
"OTHER": "Other",
|
"OTHER": "Other",
|
||||||
"STORAGE": "Storage",
|
"STORAGE": "Storage",
|
||||||
"ACTIONS": "Actions"
|
"ACTIONS": "Actions"
|
||||||
}
|
},
|
||||||
|
"BETA": "BETA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Flujos",
|
"TITLE": "Flujos",
|
||||||
"DESCRIPTION": "Elige un flujo de autenticación y activa tu acción en un evento específico dentro de este flujo."
|
"DESCRIPTION": "Elige un flujo de autenticación y activa tu acción en un evento específico dentro de este flujo."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, una nueva y mejorada versión de Actions, ya está disponible. La versión actual sigue siendo accesible, pero nuestro desarrollo futuro se centrará en la nueva, que acabará reemplazando la versión actual."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Aplicar"
|
"APPLY": "Aplicar"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Actualmente estás usando la nueva versión Actions V2, que está en fase beta. La versión anterior 1 todavía está disponible, pero será descontinuada en el futuro. Por favor, informa de cualquier problema o comentario.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Acciones",
|
"TITLE": "Acciones",
|
||||||
"DESCRIPTION": "Las acciones te permiten ejecutar código personalizado en respuesta a solicitudes de API, eventos o funciones específicas. Úsalas para extender Zitadel, automatizar flujos de trabajo e integrarte con otros sistemas.",
|
"DESCRIPTION": "Las acciones te permiten ejecutar código personalizado en respuesta a solicitudes de API, eventos o funciones específicas. Úsalas para extender Zitadel, automatizar flujos de trabajo e integrarte con otros sistemas.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "Llamada REST",
|
"restCall": "Llamada REST",
|
||||||
"restAsync": "REST Asíncrono"
|
"restAsync": "REST Asíncrono"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, la llamada maneja el código de estado pero la respuesta es irrelevante\nCall, la llamada maneja el código de estado y la respuesta\nAsync, la llamada no maneja ni el código de estado ni la respuesta, pero puede ser llamada en paralelo con otros objetivos",
|
||||||
"ENDPOINT": "Punto de conexión",
|
"ENDPOINT": "Punto de conexión",
|
||||||
"ENDPOINT_DESCRIPTION": "Introduce el punto de conexión donde se aloja tu código. ¡Asegúrate de que sea accesible para nosotros!",
|
"ENDPOINT_DESCRIPTION": "Introduce el punto de conexión donde se aloja tu código. ¡Asegúrate de que sea accesible para nosotros!",
|
||||||
"TIMEOUT": "Tiempo de espera",
|
"TIMEOUT": "Tiempo de espera",
|
||||||
@@ -1509,7 +1512,8 @@
|
|||||||
"APPEARANCE": "Apariencia",
|
"APPEARANCE": "Apariencia",
|
||||||
"OTHER": "Otros",
|
"OTHER": "Otros",
|
||||||
"STORAGE": "Datos"
|
"STORAGE": "Datos"
|
||||||
}
|
},
|
||||||
|
"BETA": "BETA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Flux",
|
"TITLE": "Flux",
|
||||||
"DESCRIPTION": "Choisissez un flux d'authentification et déclenchez votre action sur un événement spécifique dans ce flux."
|
"DESCRIPTION": "Choisissez un flux d'authentification et déclenchez votre action sur un événement spécifique dans ce flux."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, une nouvelle version améliorée de Actions, est désormais disponible. La version actuelle reste accessible, mais notre développement futur se concentrera sur la nouvelle, qui finira par remplacer la version actuelle."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Appliquer"
|
"APPLY": "Appliquer"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Vous utilisez actuellement la nouvelle version Actions V2, qui est en phase bêta. L'ancienne version 1 est toujours disponible mais sera arrêtée à l'avenir. Veuillez signaler tout problème ou commentaire.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Actions",
|
"TITLE": "Actions",
|
||||||
"DESCRIPTION": "Les actions vous permettent d'exécuter du code personnalisé en réponse à des requêtes API, des événements ou des fonctions spécifiques. Utilisez-les pour étendre Zitadel, automatiser les flux de travail et vous intégrer à d'autres systèmes.",
|
"DESCRIPTION": "Les actions vous permettent d'exécuter du code personnalisé en réponse à des requêtes API, des événements ou des fonctions spécifiques. Utilisez-les pour étendre Zitadel, automatiser les flux de travail et vous intégrer à d'autres systèmes.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "Appel REST",
|
"restCall": "Appel REST",
|
||||||
"restAsync": "REST Asynchrone"
|
"restAsync": "REST Asynchrone"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, l'appel gère le code d'état mais la réponse est sans importance\nCall, l'appel gère le code d'état et la réponse\nAsync, l'appel ne gère ni le code d'état ni la réponse, mais peut être appelé en parallèle avec d'autres cibles",
|
||||||
"ENDPOINT": "Point de terminaison",
|
"ENDPOINT": "Point de terminaison",
|
||||||
"ENDPOINT_DESCRIPTION": "Entrez le point de terminaison où votre code est hébergé. Assurez-vous qu'il nous est accessible !",
|
"ENDPOINT_DESCRIPTION": "Entrez le point de terminaison où votre code est hébergé. Assurez-vous qu'il nous est accessible !",
|
||||||
"TIMEOUT": "Délai d'attente",
|
"TIMEOUT": "Délai d'attente",
|
||||||
@@ -1508,7 +1511,8 @@
|
|||||||
"APPEARANCE": "Apparence",
|
"APPEARANCE": "Apparence",
|
||||||
"OTHER": "Autres",
|
"OTHER": "Autres",
|
||||||
"STORAGE": "Stockage"
|
"STORAGE": "Stockage"
|
||||||
}
|
},
|
||||||
|
"BETA": "BÊTA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Folyamatok",
|
"TITLE": "Folyamatok",
|
||||||
"DESCRIPTION": "Válassz egy hitelesítési folyamatot, és váltasd ki a műveletedet egy adott esemény bekövetkezésekor ebben a folyamatban."
|
"DESCRIPTION": "Válassz egy hitelesítési folyamatot, és váltasd ki a műveletedet egy adott esemény bekövetkezésekor ebben a folyamatban."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Az Actions V2, az Actions új, továbbfejlesztett verziója mostantól elérhető. A jelenlegi verzió továbbra is elérhető, de a jövőbeli fejlesztéseink az új verzióra összpontosítanak, amely végül felváltja a jelenlegi verziót."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Alkalmaz"
|
"APPLY": "Alkalmaz"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Jelenleg az új Actions V2-t használja, amely béta verzióban van. Az előző 1-es verzió továbbra is elérhető, de a jövőben megszűnik. Kérjük, jelezze az esetleges problémákat vagy visszajelzéseit.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Műveletek",
|
"TITLE": "Műveletek",
|
||||||
"DESCRIPTION": "A műveletek lehetővé teszik egyedi kód futtatását API-kérésekre, eseményekre vagy konkrét függvényekre válaszul. Használja őket a Zitadel kiterjesztéséhez, a munkafolyamatok automatizálásához és más rendszerekkel való integrációhoz.",
|
"DESCRIPTION": "A műveletek lehetővé teszik egyedi kód futtatását API-kérésekre, eseményekre vagy konkrét függvényekre válaszul. Használja őket a Zitadel kiterjesztéséhez, a munkafolyamatok automatizálásához és más rendszerekkel való integrációhoz.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST Hívás",
|
"restCall": "REST Hívás",
|
||||||
"restAsync": "REST Aszinkron"
|
"restAsync": "REST Aszinkron"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, a hívás kezeli az állapotkódot, de a válasz lényegtelen\nCall, a hívás kezeli az állapotkódot és a választ\nAsync, a hívás sem az állapotkódot, sem a választ nem kezeli, de párhuzamosan hívható más célokkal",
|
||||||
"ENDPOINT": "Végpont",
|
"ENDPOINT": "Végpont",
|
||||||
"ENDPOINT_DESCRIPTION": "Adja meg azt a végpontot, ahol a kódja található. Győződjön meg arról, hogy elérhető számunkra!",
|
"ENDPOINT_DESCRIPTION": "Adja meg azt a végpontot, ahol a kódja található. Győződjön meg arról, hogy elérhető számunkra!",
|
||||||
"TIMEOUT": "Időtúllépés",
|
"TIMEOUT": "Időtúllépés",
|
||||||
@@ -1508,7 +1511,8 @@
|
|||||||
"APPEARANCE": "Megjelenés",
|
"APPEARANCE": "Megjelenés",
|
||||||
"OTHER": "Egyéb",
|
"OTHER": "Egyéb",
|
||||||
"STORAGE": "Tárolás"
|
"STORAGE": "Tárolás"
|
||||||
}
|
},
|
||||||
|
"BETA": "BÉTA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -69,7 +69,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Mengalir",
|
"TITLE": "Mengalir",
|
||||||
"DESCRIPTION": "Pilih alur autentikasi dan picu tindakan Anda pada peristiwa tertentu dalam alur ini."
|
"DESCRIPTION": "Pilih alur autentikasi dan picu tindakan Anda pada peristiwa tertentu dalam alur ini."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, versi baru dan lebih baik dari Actions, sekarang tersedia. Versi saat ini masih dapat diakses, tetapi pengembangan di masa depan akan difokuskan pada versi baru ini yang pada akhirnya akan menggantikan versi saat ini."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -496,6 +497,7 @@
|
|||||||
"APPLY": "Menerapkan"
|
"APPLY": "Menerapkan"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Anda saat ini menggunakan Actions V2 baru, yang masih dalam versi beta. Versi sebelumnya, Versi 1, masih tersedia tetapi akan dihentikan di masa depan. Silakan laporkan masalah atau berikan masukan.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Tindakan",
|
"TITLE": "Tindakan",
|
||||||
"DESCRIPTION": "Tindakan memungkinkan Anda menjalankan kode khusus sebagai respons terhadap permintaan API, peristiwa, atau fungsi tertentu. Gunakan ini untuk memperluas Zitadel, mengotomatiskan alur kerja, dan berintegrasi dengan sistem lain.",
|
"DESCRIPTION": "Tindakan memungkinkan Anda menjalankan kode khusus sebagai respons terhadap permintaan API, peristiwa, atau fungsi tertentu. Gunakan ini untuk memperluas Zitadel, mengotomatiskan alur kerja, dan berintegrasi dengan sistem lain.",
|
||||||
@@ -586,6 +588,7 @@
|
|||||||
"restCall": "Panggilan REST",
|
"restCall": "Panggilan REST",
|
||||||
"restAsync": "REST Asinkron"
|
"restAsync": "REST Asinkron"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, panggilan menangani kode status tetapi respons tidak relevan\nCall, panggilan menangani kode status dan respons\nAsync, panggilan tidak menangani kode status maupun respons, tetapi dapat dipanggil secara paralel dengan Target lain",
|
||||||
"ENDPOINT": "Titik Akhir",
|
"ENDPOINT": "Titik Akhir",
|
||||||
"ENDPOINT_DESCRIPTION": "Masukkan titik akhir tempat kode Anda dihosting. Pastikan dapat diakses oleh kami!",
|
"ENDPOINT_DESCRIPTION": "Masukkan titik akhir tempat kode Anda dihosting. Pastikan dapat diakses oleh kami!",
|
||||||
"TIMEOUT": "Batas Waktu",
|
"TIMEOUT": "Batas Waktu",
|
||||||
@@ -1386,7 +1389,8 @@
|
|||||||
"APPEARANCE": "Penampilan",
|
"APPEARANCE": "Penampilan",
|
||||||
"OTHER": "Lainnya",
|
"OTHER": "Lainnya",
|
||||||
"STORAGE": "Penyimpanan"
|
"STORAGE": "Penyimpanan"
|
||||||
}
|
},
|
||||||
|
"BETA": "BETA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Flussi",
|
"TITLE": "Flussi",
|
||||||
"DESCRIPTION": "Scegli un flusso di autenticazione e attiva la tua azione su un evento specifico all'interno di questo flusso."
|
"DESCRIPTION": "Scegli un flusso di autenticazione e attiva la tua azione su un evento specifico all'interno di questo flusso."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, una nuova versione migliorata di Actions, è ora disponibile. La versione attuale è ancora accessibile, ma i futuri sviluppi si concentreranno su quella nuova, che alla fine sostituirà la versione corrente."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -528,6 +529,7 @@
|
|||||||
"APPLY": "Applicare"
|
"APPLY": "Applicare"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Stai attualmente utilizzando la nuova versione Actions V2, che è in beta. La precedente Versione 1 è ancora disponibile, ma sarà dismessa in futuro. Ti preghiamo di segnalare eventuali problemi o feedback.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Azioni",
|
"TITLE": "Azioni",
|
||||||
"DESCRIPTION": "Le azioni consentono di eseguire codice personalizzato in risposta a richieste API, eventi o funzioni specifiche. Usale per estendere Zitadel, automatizzare i flussi di lavoro e integrarti con altri sistemi.",
|
"DESCRIPTION": "Le azioni consentono di eseguire codice personalizzato in risposta a richieste API, eventi o funzioni specifiche. Usale per estendere Zitadel, automatizzare i flussi di lavoro e integrarti con altri sistemi.",
|
||||||
@@ -618,6 +620,7 @@
|
|||||||
"restCall": "Chiamata REST",
|
"restCall": "Chiamata REST",
|
||||||
"restAsync": "REST Asincrono"
|
"restAsync": "REST Asincrono"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, la chiamata gestisce il codice di stato ma la risposta è irrilevante\nCall, la chiamata gestisce il codice di stato e la risposta\nAsync, la chiamata non gestisce né il codice di stato né la risposta, ma può essere eseguita in parallelo con altri obiettivi",
|
||||||
"ENDPOINT": "Endpoint",
|
"ENDPOINT": "Endpoint",
|
||||||
"ENDPOINT_DESCRIPTION": "Inserisci l'endpoint in cui è ospitato il tuo codice. Assicurati che sia accessibile per noi!",
|
"ENDPOINT_DESCRIPTION": "Inserisci l'endpoint in cui è ospitato il tuo codice. Assicurati che sia accessibile per noi!",
|
||||||
"TIMEOUT": "Timeout",
|
"TIMEOUT": "Timeout",
|
||||||
@@ -1508,7 +1511,8 @@
|
|||||||
"APPEARANCE": "Aspetto",
|
"APPEARANCE": "Aspetto",
|
||||||
"OTHER": "Altro",
|
"OTHER": "Altro",
|
||||||
"STORAGE": "Dati"
|
"STORAGE": "Dati"
|
||||||
}
|
},
|
||||||
|
"BETA": "BETA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "フロー",
|
"TITLE": "フロー",
|
||||||
"DESCRIPTION": "認証フローを選択し、そのフロー内の特定のイベントでアクションをトリガーします。"
|
"DESCRIPTION": "認証フローを選択し、そのフロー内の特定のイベントでアクションをトリガーします。"
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2(アクションズV2)、改善された新しいバージョンが利用可能になりました。現在のバージョンも引き続き利用可能ですが、今後の開発は新バージョンに集中し、最終的には現在のバージョンを置き換える予定です。"
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "アプライ"
|
"APPLY": "アプライ"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "現在、新しいActions V2(ベータ版)を使用しています。以前のバージョン1はまだ利用可能ですが、今後廃止される予定です。問題やフィードバックがあればお知らせください。",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "アクション",
|
"TITLE": "アクション",
|
||||||
"DESCRIPTION": "アクションを使用すると、APIリクエスト、イベント、または特定の関数に応答してカスタムコードを実行できます。これらを使用して、Zitadelを拡張し、ワークフローを自動化し、他のシステムと統合します。",
|
"DESCRIPTION": "アクションを使用すると、APIリクエスト、イベント、または特定の関数に応答してカスタムコードを実行できます。これらを使用して、Zitadelを拡張し、ワークフローを自動化し、他のシステムと統合します。",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST 呼び出し",
|
"restCall": "REST 呼び出し",
|
||||||
"restAsync": "REST 非同期"
|
"restAsync": "REST 非同期"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook、呼び出しはステータスコードを処理しますが、応答は無関係です\nCall、呼び出しはステータスコードと応答を処理します\nAsync、呼び出しはステータスコードも応答も処理しませんが、他のターゲットと並行して呼び出すことができます",
|
||||||
"ENDPOINT": "エンドポイント",
|
"ENDPOINT": "エンドポイント",
|
||||||
"ENDPOINT_DESCRIPTION": "コードがホストされているエンドポイントを入力します。アクセス可能であることを確認してください。",
|
"ENDPOINT_DESCRIPTION": "コードがホストされているエンドポイントを入力します。アクセス可能であることを確認してください。",
|
||||||
"TIMEOUT": "タイムアウト",
|
"TIMEOUT": "タイムアウト",
|
||||||
@@ -1508,7 +1511,8 @@
|
|||||||
"APPEARANCE": "設定",
|
"APPEARANCE": "設定",
|
||||||
"OTHER": "その他",
|
"OTHER": "その他",
|
||||||
"STORAGE": "ストレージ"
|
"STORAGE": "ストレージ"
|
||||||
}
|
},
|
||||||
|
"BETA": "ベータ"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "플로우",
|
"TITLE": "플로우",
|
||||||
"DESCRIPTION": "인증 플로우를 선택하고 이 플로우 내의 특정 이벤트에서 작업을 트리거하세요."
|
"DESCRIPTION": "인증 플로우를 선택하고 이 플로우 내의 특정 이벤트에서 작업을 트리거하세요."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, 개선된 새로운 버전이 출시되었습니다. 현재 버전은 여전히 접근할 수 있지만, 앞으로의 개발은 새로운 버전에 집중될 것이며, 결국 현재 버전을 대체할 것입니다."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "적용"
|
"APPLY": "적용"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "현재 베타 버전인 새로운 Actions V2를 사용하고 있습니다. 이전 버전 1은 여전히 사용 가능하지만, 향후 중단될 예정입니다. 문제나 피드백이 있으면 알려주세요.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "작업",
|
"TITLE": "작업",
|
||||||
"DESCRIPTION": "작업을 통해 API 요청, 이벤트 또는 특정 함수에 대한 응답으로 사용자 지정 코드를 실행할 수 있습니다. 이를 사용하여 Zitadel을 확장하고 워크플로를 자동화하며 다른 시스템과 통합합니다.",
|
"DESCRIPTION": "작업을 통해 API 요청, 이벤트 또는 특정 함수에 대한 응답으로 사용자 지정 코드를 실행할 수 있습니다. 이를 사용하여 Zitadel을 확장하고 워크플로를 자동화하며 다른 시스템과 통합합니다.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST 호출",
|
"restCall": "REST 호출",
|
||||||
"restAsync": "REST 비동기"
|
"restAsync": "REST 비동기"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, 호출은 상태 코드를 처리하지만 응답은 중요하지 않습니다\nCall, 호출은 상태 코드와 응답을 처리합니다\nAsync, 호출은 상태 코드나 응답을 처리하지 않지만 다른 대상과 병렬로 호출할 수 있습니다",
|
||||||
"ENDPOINT": "엔드포인트",
|
"ENDPOINT": "엔드포인트",
|
||||||
"ENDPOINT_DESCRIPTION": "코드가 호스팅되는 엔드포인트를 입력하십시오. 우리에게 액세스할 수 있는지 확인하십시오!",
|
"ENDPOINT_DESCRIPTION": "코드가 호스팅되는 엔드포인트를 입력하십시오. 우리에게 액세스할 수 있는지 확인하십시오!",
|
||||||
"TIMEOUT": "시간 초과",
|
"TIMEOUT": "시간 초과",
|
||||||
@@ -1508,7 +1511,8 @@
|
|||||||
"APPEARANCE": "외형",
|
"APPEARANCE": "외형",
|
||||||
"OTHER": "기타",
|
"OTHER": "기타",
|
||||||
"STORAGE": "저장소"
|
"STORAGE": "저장소"
|
||||||
}
|
},
|
||||||
|
"BETA": "베타"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Текови",
|
"TITLE": "Текови",
|
||||||
"DESCRIPTION": "Изберете тек на автентификација и активирајте ја вашата акција на специфичен настан во тој тек."
|
"DESCRIPTION": "Изберете тек на автентификација и активирајте ја вашата акција на специфичен настан во тој тек."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, нова и подобрена верзија на Actions, сега е достапна. Сегашната верзија сè уште е достапна, но идниот развој ќе биде насочен кон новата верзија, која на крајот ќе ја замени сегашната."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Пријавете се"
|
"APPLY": "Пријавете се"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Акции",
|
"TITLE": "Акции",
|
||||||
"DESCRIPTION": "Акциите ви овозможуваат да извршувате прилагоден код како одговор на API барања, настани или специфични функции. Користете ги за да го проширите Zitadel, да ги автоматизирате работните процеси и да се интегрирате со други системи.",
|
"DESCRIPTION": "Акциите ви овозможуваат да извршувате прилагоден код како одговор на API барања, настани или специфични функции. Користете ги за да го проширите Zitadel, да ги автоматизирате работните процеси и да се интегрирате со други системи.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST Повик",
|
"restCall": "REST Повик",
|
||||||
"restAsync": "REST Асинхроно"
|
"restAsync": "REST Асинхроно"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, повикот го обработува статусниот код но одговорот е ирелевантен\nCall, повикот го обработува статусниот код и одговорот\nAsync, повикот не го обработува ниту статусниот код ниту одговорот, но може да се повика паралелно со други цели",
|
||||||
"ENDPOINT": "Крајна точка",
|
"ENDPOINT": "Крајна точка",
|
||||||
"ENDPOINT_DESCRIPTION": "Внесете ја крајната точка каде што е хостиран вашиот код. Осигурете се дека е достапна за нас!",
|
"ENDPOINT_DESCRIPTION": "Внесете ја крајната точка каде што е хостиран вашиот код. Осигурете се дека е достапна за нас!",
|
||||||
"TIMEOUT": "Време на истекување",
|
"TIMEOUT": "Време на истекување",
|
||||||
@@ -1509,7 +1512,8 @@
|
|||||||
"APPEARANCE": "Изглед",
|
"APPEARANCE": "Изглед",
|
||||||
"OTHER": "Друго",
|
"OTHER": "Друго",
|
||||||
"STORAGE": "складирање"
|
"STORAGE": "складирање"
|
||||||
}
|
},
|
||||||
|
"BETA": "БЕТА"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Stromen",
|
"TITLE": "Stromen",
|
||||||
"DESCRIPTION": "Kies een authenticatiestroom en activeer je actie bij een specifieke gebeurtenis binnen deze stroom."
|
"DESCRIPTION": "Kies een authenticatiestroom en activeer je actie bij een specifieke gebeurtenis binnen deze stroom."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, een nieuwe en verbeterde versie van Actions, is nu beschikbaar. De huidige versie blijft toegankelijk, maar onze toekomstige ontwikkeling zal zich richten op de nieuwe versie, die uiteindelijk de huidige zal vervangen."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Toepassen"
|
"APPLY": "Toepassen"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "U gebruikt momenteel de nieuwe Actions V2, die zich in de bètaversie bevindt. De vorige versie 1 is nog beschikbaar maar zal in de toekomst worden stopgezet. Meld alstublieft eventuele problemen of feedback.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Acties",
|
"TITLE": "Acties",
|
||||||
"DESCRIPTION": "Met acties kunt u aangepaste code uitvoeren als reactie op API-verzoeken, gebeurtenissen of specifieke functies. Gebruik ze om Zitadel uit te breiden, workflows te automatiseren en te integreren met andere systemen.",
|
"DESCRIPTION": "Met acties kunt u aangepaste code uitvoeren als reactie op API-verzoeken, gebeurtenissen of specifieke functies. Gebruik ze om Zitadel uit te breiden, workflows te automatiseren en te integreren met andere systemen.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST Aanroep",
|
"restCall": "REST Aanroep",
|
||||||
"restAsync": "REST Asynchroon"
|
"restAsync": "REST Asynchroon"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, de oproep verwerkt de statuscode maar de reactie is irrelevant\nCall, de oproep verwerkt de statuscode en de reactie\nAsync, de oproep verwerkt noch de statuscode noch de reactie, maar kan parallel aan andere doelen worden aangeroepen",
|
||||||
"ENDPOINT": "Eindpunt",
|
"ENDPOINT": "Eindpunt",
|
||||||
"ENDPOINT_DESCRIPTION": "Voer het eindpunt in waar uw code wordt gehost. Zorg ervoor dat het voor ons toegankelijk is!",
|
"ENDPOINT_DESCRIPTION": "Voer het eindpunt in waar uw code wordt gehost. Zorg ervoor dat het voor ons toegankelijk is!",
|
||||||
"TIMEOUT": "Time-out",
|
"TIMEOUT": "Time-out",
|
||||||
@@ -1508,7 +1511,8 @@
|
|||||||
"APPEARANCE": "Verschijning",
|
"APPEARANCE": "Verschijning",
|
||||||
"OTHER": "Andere",
|
"OTHER": "Andere",
|
||||||
"STORAGE": "opslag"
|
"STORAGE": "opslag"
|
||||||
}
|
},
|
||||||
|
"BETA": "BÈTA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Przepływy",
|
"TITLE": "Przepływy",
|
||||||
"DESCRIPTION": "Wybierz przepływ uwierzytelniania i wywołaj swoją akcję przy określonym zdarzeniu w tym przepływie."
|
"DESCRIPTION": "Wybierz przepływ uwierzytelniania i wywołaj swoją akcję przy określonym zdarzeniu w tym przepływie."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, nowa, ulepszona wersja Actions, jest już dostępna. Obecna wersja jest nadal dostępna, ale przyszły rozwój będzie skoncentrowany na nowej wersji, która ostatecznie zastąpi obecną."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -528,6 +529,7 @@
|
|||||||
"APPLY": "Stosować"
|
"APPLY": "Stosować"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Obecnie korzystasz z nowej wersji Actions V2, która jest w fazie beta. Poprzednia wersja 1 jest nadal dostępna, ale w przyszłości zostanie wycofana. Prosimy o zgłaszanie wszelkich problemów lub opinii.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Akcje",
|
"TITLE": "Akcje",
|
||||||
"DESCRIPTION": "Akcje umożliwiają uruchamianie niestandardowego kodu w odpowiedzi na żądania API, zdarzenia lub określone funkcje. Użyj ich, aby rozszerzyć Zitadel, zautomatyzować przepływy pracy i zintegrować się z innymi systemami.",
|
"DESCRIPTION": "Akcje umożliwiają uruchamianie niestandardowego kodu w odpowiedzi na żądania API, zdarzenia lub określone funkcje. Użyj ich, aby rozszerzyć Zitadel, zautomatyzować przepływy pracy i zintegrować się z innymi systemami.",
|
||||||
@@ -618,6 +620,7 @@
|
|||||||
"restCall": "Wywołanie REST",
|
"restCall": "Wywołanie REST",
|
||||||
"restAsync": "REST Asynchroniczny"
|
"restAsync": "REST Asynchroniczny"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, wywołanie obsługuje kod stanu, ale odpowiedź jest nieistotna\nCall, wywołanie obsługuje kod stanu i odpowiedź\nAsync, wywołanie nie obsługuje ani kodu stanu, ani odpowiedzi, ale może być wywoływane równolegle z innymi celami",
|
||||||
"ENDPOINT": "Punkt końcowy",
|
"ENDPOINT": "Punkt końcowy",
|
||||||
"ENDPOINT_DESCRIPTION": "Wprowadź punkt końcowy, w którym hostowany jest Twój kod. Upewnij się, że jest dla nas dostępny!",
|
"ENDPOINT_DESCRIPTION": "Wprowadź punkt końcowy, w którym hostowany jest Twój kod. Upewnij się, że jest dla nas dostępny!",
|
||||||
"TIMEOUT": "Limit czasu",
|
"TIMEOUT": "Limit czasu",
|
||||||
@@ -1507,7 +1510,8 @@
|
|||||||
"APPEARANCE": "Wygląd",
|
"APPEARANCE": "Wygląd",
|
||||||
"OTHER": "Inne",
|
"OTHER": "Inne",
|
||||||
"STORAGE": "składowanie"
|
"STORAGE": "składowanie"
|
||||||
}
|
},
|
||||||
|
"BETA": "BETA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Fluxos",
|
"TITLE": "Fluxos",
|
||||||
"DESCRIPTION": "Escolha um fluxo de autenticação e acione sua ação em um evento específico dentro desse fluxo."
|
"DESCRIPTION": "Escolha um fluxo de autenticação e acione sua ação em um evento específico dentro desse fluxo."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, uma nova e melhorada versão de Actions, já está disponível. A versão atual ainda é acessível, mas o nosso desenvolvimento futuro se concentrará na nova versão, que acabará por substituir a atual."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Aplicar"
|
"APPLY": "Aplicar"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Você está atualmente usando a nova Actions V2, que está em versão beta. A versão anterior 1 ainda está disponível, mas será descontinuada no futuro. Por favor, reporte quaisquer problemas ou envie feedback.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Ações",
|
"TITLE": "Ações",
|
||||||
"DESCRIPTION": "As ações permitem que você execute código personalizado em resposta a solicitações de API, eventos ou funções específicas. Use-as para estender o Zitadel, automatizar fluxos de trabalho e integrar-se a outros sistemas.",
|
"DESCRIPTION": "As ações permitem que você execute código personalizado em resposta a solicitações de API, eventos ou funções específicas. Use-as para estender o Zitadel, automatizar fluxos de trabalho e integrar-se a outros sistemas.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "Chamada REST",
|
"restCall": "Chamada REST",
|
||||||
"restAsync": "REST Assíncrono"
|
"restAsync": "REST Assíncrono"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, a chamada lida com o código de status, mas a resposta é irrelevante\nCall, a chamada lida com o código de status e a resposta\nAsync, a chamada não lida nem com o código de status nem com a resposta, mas pode ser chamada em paralelo com outros alvos",
|
||||||
"ENDPOINT": "Ponto de Extremidade",
|
"ENDPOINT": "Ponto de Extremidade",
|
||||||
"ENDPOINT_DESCRIPTION": "Insira o ponto de extremidade onde seu código está hospedado. Certifique-se de que ele esteja acessível para nós!",
|
"ENDPOINT_DESCRIPTION": "Insira o ponto de extremidade onde seu código está hospedado. Certifique-se de que ele esteja acessível para nós!",
|
||||||
"TIMEOUT": "Tempo Limite",
|
"TIMEOUT": "Tempo Limite",
|
||||||
@@ -1509,7 +1512,8 @@
|
|||||||
"APPEARANCE": "Aparência",
|
"APPEARANCE": "Aparência",
|
||||||
"OTHER": "Outro",
|
"OTHER": "Outro",
|
||||||
"STORAGE": "armazenar"
|
"STORAGE": "armazenar"
|
||||||
}
|
},
|
||||||
|
"BETA": "BETA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Fluxuri",
|
"TITLE": "Fluxuri",
|
||||||
"DESCRIPTION": "Alegeți un flux de autentificare și declanșați acțiunea dvs. la un anumit eveniment din cadrul acestui flux."
|
"DESCRIPTION": "Alegeți un flux de autentificare și declanșați acțiunea dvs. la un anumit eveniment din cadrul acestui flux."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, o nouă versiune îmbunătățită a Actions, este acum disponibilă. Versiunea actuală este încă accesibilă, dar dezvoltarea viitoare se va concentra pe cea nouă, care în cele din urmă va înlocui versiunea actuală."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Aplicați"
|
"APPLY": "Aplicați"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "În prezent utilizați noua versiune Actions V2, care este în faza beta. Versiunea anterioară 1 este încă disponibilă, dar va fi întreruptă în viitor. Vă rugăm să raportați orice problemă sau feedback.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Acțiuni",
|
"TITLE": "Acțiuni",
|
||||||
"DESCRIPTION": "Acțiunile vă permit să rulați cod personalizat ca răspuns la cereri API, evenimente sau funcții specifice. Folosiți-le pentru a extinde Zitadel, a automatiza fluxurile de lucru și a vă integra cu alte sisteme.",
|
"DESCRIPTION": "Acțiunile vă permit să rulați cod personalizat ca răspuns la cereri API, evenimente sau funcții specifice. Folosiți-le pentru a extinde Zitadel, a automatiza fluxurile de lucru și a vă integra cu alte sisteme.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "Apel REST",
|
"restCall": "Apel REST",
|
||||||
"restAsync": "REST Asincron"
|
"restAsync": "REST Asincron"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, apelul gestionează codul de stare, dar răspunsul este irelevant\nCall, apelul gestionează codul de stare și răspunsul\nAsync, apelul nu gestionează nici codul de stare, nici răspunsul, dar poate fi apelat în paralel cu alte Ținte",
|
||||||
"ENDPOINT": "Punct Final",
|
"ENDPOINT": "Punct Final",
|
||||||
"ENDPOINT_DESCRIPTION": "Introduceți punctul final unde este găzduit codul dvs. Asigurați-vă că este accesibil pentru noi!",
|
"ENDPOINT_DESCRIPTION": "Introduceți punctul final unde este găzduit codul dvs. Asigurați-vă că este accesibil pentru noi!",
|
||||||
"TIMEOUT": "Timeout",
|
"TIMEOUT": "Timeout",
|
||||||
@@ -1506,7 +1509,8 @@
|
|||||||
"APPEARANCE": "Aspect",
|
"APPEARANCE": "Aspect",
|
||||||
"OTHER": "Altele",
|
"OTHER": "Altele",
|
||||||
"STORAGE": "Stocare"
|
"STORAGE": "Stocare"
|
||||||
}
|
},
|
||||||
|
"BETA": "BETA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Потоки",
|
"TITLE": "Потоки",
|
||||||
"DESCRIPTION": "Выберите поток аутентификации и активируйте ваше действие на определенном событии в этом потоке."
|
"DESCRIPTION": "Выберите поток аутентификации и активируйте ваше действие на определенном событии в этом потоке."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, новая и улучшенная версия Actions, теперь доступна. Текущая версия всё ещё доступна, но дальнейшая разработка будет сосредоточена на новой версии, которая в конечном итоге заменит текущую."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Применять"
|
"APPLY": "Применять"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Вы используете новую версию Actions V2, которая находится в бета-тестировании. Предыдущая версия 1 всё ещё доступна, но будет отключена в будущем. Пожалуйста, сообщайте о любых проблемах или отправляйте отзывы.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Действия",
|
"TITLE": "Действия",
|
||||||
"DESCRIPTION": "Действия позволяют запускать пользовательский код в ответ на API-запросы, события или определенные функции. Используйте их для расширения Zitadel, автоматизации рабочих процессов и интеграции с другими системами.",
|
"DESCRIPTION": "Действия позволяют запускать пользовательский код в ответ на API-запросы, события или определенные функции. Используйте их для расширения Zitadel, автоматизации рабочих процессов и интеграции с другими системами.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST Вызов",
|
"restCall": "REST Вызов",
|
||||||
"restAsync": "REST Асинхронный"
|
"restAsync": "REST Асинхронный"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, вызов обрабатывает код состояния, но ответ не имеет значения\nCall, вызов обрабатывает код состояния и ответ\nAsync, вызов не обрабатывает ни код состояния, ни ответ, но может выполняться параллельно с другими целями",
|
||||||
"ENDPOINT": "Конечная точка",
|
"ENDPOINT": "Конечная точка",
|
||||||
"ENDPOINT_DESCRIPTION": "Введите конечную точку, где размещен ваш код. Убедитесь, что он доступен для нас!",
|
"ENDPOINT_DESCRIPTION": "Введите конечную точку, где размещен ваш код. Убедитесь, что он доступен для нас!",
|
||||||
"TIMEOUT": "Тайм-аут",
|
"TIMEOUT": "Тайм-аут",
|
||||||
@@ -1553,7 +1556,8 @@
|
|||||||
"APPEARANCE": "Вид",
|
"APPEARANCE": "Вид",
|
||||||
"OTHER": "Другое",
|
"OTHER": "Другое",
|
||||||
"STORAGE": "хранилище"
|
"STORAGE": "хранилище"
|
||||||
}
|
},
|
||||||
|
"BETA": "БЕТА"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "Flöden",
|
"TITLE": "Flöden",
|
||||||
"DESCRIPTION": "Välj ett autentiseringsflöde och trigga din åtgärd vid en specifik händelse inom detta flöde."
|
"DESCRIPTION": "Välj ett autentiseringsflöde och trigga din åtgärd vid en specifik händelse inom detta flöde."
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2, en ny och förbättrad version av Actions, är nu tillgänglig. Den nuvarande versionen är fortfarande tillgänglig, men framtida utveckling kommer att fokusera på den nya, som så småningom kommer att ersätta den nuvarande."
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "Tillämpa"
|
"APPLY": "Tillämpa"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "Du använder för närvarande nya Actions V2, som är i betaversion. Den tidigare versionen 1 är fortfarande tillgänglig men kommer att avvecklas i framtiden. Vänligen rapportera eventuella problem eller ge feedback.",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "Åtgärder",
|
"TITLE": "Åtgärder",
|
||||||
"DESCRIPTION": "Åtgärder låter dig köra anpassad kod som svar på API-förfrågningar, händelser eller specifika funktioner. Använd dem för att utöka Zitadel, automatisera arbetsflöden och integrera med andra system.",
|
"DESCRIPTION": "Åtgärder låter dig köra anpassad kod som svar på API-förfrågningar, händelser eller specifika funktioner. Använd dem för att utöka Zitadel, automatisera arbetsflöden och integrera med andra system.",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST Anrop",
|
"restCall": "REST Anrop",
|
||||||
"restAsync": "REST Asynkron"
|
"restAsync": "REST Asynkron"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook, anropet hanterar statuskoden men svaret är irrelevant\nCall, anropet hanterar statuskoden och svaret\nAsync, anropet hanterar varken statuskod eller svar men kan anropas parallellt med andra mål",
|
||||||
"ENDPOINT": "Slutpunkt",
|
"ENDPOINT": "Slutpunkt",
|
||||||
"ENDPOINT_DESCRIPTION": "Ange slutpunkten där din kod finns. Se till att den är tillgänglig för oss!",
|
"ENDPOINT_DESCRIPTION": "Ange slutpunkten där din kod finns. Se till att den är tillgänglig för oss!",
|
||||||
"TIMEOUT": "Tidsgräns",
|
"TIMEOUT": "Tidsgräns",
|
||||||
@@ -1512,7 +1515,8 @@
|
|||||||
"APPEARANCE": "Utseende",
|
"APPEARANCE": "Utseende",
|
||||||
"OTHER": "Övrigt",
|
"OTHER": "Övrigt",
|
||||||
"STORAGE": "Lagring"
|
"STORAGE": "Lagring"
|
||||||
}
|
},
|
||||||
|
"BETA": "BETA"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -75,7 +75,8 @@
|
|||||||
"FLOWS": {
|
"FLOWS": {
|
||||||
"TITLE": "流程",
|
"TITLE": "流程",
|
||||||
"DESCRIPTION": "选择一个认证流程,并在该流程中的特定事件上触发您的操作。"
|
"DESCRIPTION": "选择一个认证流程,并在该流程中的特定事件上触发您的操作。"
|
||||||
}
|
},
|
||||||
|
"ACTIONSTWO_NOTE": "Actions V2,一个全新改进版的Actions,现在已上线。目前版本仍可使用,但未来开发将专注于新版本,最终将取代当前版本。"
|
||||||
},
|
},
|
||||||
"SETTINGS": {
|
"SETTINGS": {
|
||||||
"INSTANCE": {
|
"INSTANCE": {
|
||||||
@@ -529,6 +530,7 @@
|
|||||||
"APPLY": "申请"
|
"APPLY": "申请"
|
||||||
},
|
},
|
||||||
"ACTIONSTWO": {
|
"ACTIONSTWO": {
|
||||||
|
"BETA_NOTE": "您目前正在使用新的 Actions V2(测试版)。之前的版本1仍可使用,但未来将停止支持。请报告任何问题或反馈意见。",
|
||||||
"EXECUTION": {
|
"EXECUTION": {
|
||||||
"TITLE": "操作",
|
"TITLE": "操作",
|
||||||
"DESCRIPTION": "操作允许您运行自定义代码以响应 API 请求、事件或特定函数。使用它们来扩展 Zitadel、自动化工作流程并与其他系统集成。",
|
"DESCRIPTION": "操作允许您运行自定义代码以响应 API 请求、事件或特定函数。使用它们来扩展 Zitadel、自动化工作流程并与其他系统集成。",
|
||||||
@@ -619,6 +621,7 @@
|
|||||||
"restCall": "REST 调用",
|
"restCall": "REST 调用",
|
||||||
"restAsync": "REST 异步"
|
"restAsync": "REST 异步"
|
||||||
},
|
},
|
||||||
|
"TYPES_DESCRIPTION": "Webhook,调用处理状态码但响应无关紧要\nCall,调用处理状态码和响应\nAsync,调用既不处理状态码也不处理响应,但可以与其他目标并行调用",
|
||||||
"ENDPOINT": "端点",
|
"ENDPOINT": "端点",
|
||||||
"ENDPOINT_DESCRIPTION": "输入您的代码托管的端点。确保我们可以访问它!",
|
"ENDPOINT_DESCRIPTION": "输入您的代码托管的端点。确保我们可以访问它!",
|
||||||
"TIMEOUT": "超时",
|
"TIMEOUT": "超时",
|
||||||
@@ -1508,7 +1511,8 @@
|
|||||||
"APPEARANCE": "外观",
|
"APPEARANCE": "外观",
|
||||||
"OTHER": "其他",
|
"OTHER": "其他",
|
||||||
"STORAGE": "贮存"
|
"STORAGE": "贮存"
|
||||||
}
|
},
|
||||||
|
"BETA": "测试版"
|
||||||
},
|
},
|
||||||
"SETTING": {
|
"SETTING": {
|
||||||
"LANGUAGES": {
|
"LANGUAGES": {
|
||||||
|
@@ -3452,29 +3452,22 @@
|
|||||||
js-yaml "^3.10.0"
|
js-yaml "^3.10.0"
|
||||||
tslib "^2.4.0"
|
tslib "^2.4.0"
|
||||||
|
|
||||||
"@zitadel/client@^1.0.7":
|
"@zitadel/client@1.2.0":
|
||||||
version "1.0.7"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@zitadel/client/-/client-1.0.7.tgz#39dc8d3d10bfa01e5cf56205ba188f79c39f052d"
|
resolved "https://registry.yarnpkg.com/@zitadel/client/-/client-1.2.0.tgz#8cdc3090f75fcf3a78c4f0266d3c56a0cca6821a"
|
||||||
integrity sha512-sZG4NEa8vQBt3+4W1AesY+5DstDBuZiqGH2EM+UqbO5D93dlDZInXqZ5oRE7RSl2Bk5ED9mbMFrB7b8DuRw72A==
|
integrity sha512-Q20nXhKD7VDb8D1UxhDxubC70GFrSPckrJviPR/rAfRR5slUIRTk3AvDS6Q1WvUn4Xtt+btnq52Z5O8lZtVG0w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@bufbuild/protobuf" "^2.2.2"
|
"@bufbuild/protobuf" "^2.2.2"
|
||||||
"@connectrpc/connect" "^2.0.0"
|
"@connectrpc/connect" "^2.0.0"
|
||||||
"@connectrpc/connect-node" "^2.0.0"
|
"@connectrpc/connect-node" "^2.0.0"
|
||||||
"@connectrpc/connect-web" "^2.0.0"
|
"@connectrpc/connect-web" "^2.0.0"
|
||||||
"@zitadel/proto" "1.0.4"
|
"@zitadel/proto" "1.2.0"
|
||||||
jose "^5.3.0"
|
jose "^5.3.0"
|
||||||
|
|
||||||
"@zitadel/proto@1.0.4":
|
"@zitadel/proto@1.2.0":
|
||||||
version "1.0.4"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@zitadel/proto/-/proto-1.0.4.tgz#e2fe9895f2960643c3619191255aa2f4913ad873"
|
resolved "https://registry.yarnpkg.com/@zitadel/proto/-/proto-1.2.0.tgz#9b9a40defcd9e8464627cc99ac3fd7bcf8994ffd"
|
||||||
integrity sha512-s13ZMhuOTe0b+geV+JgJud+kpYdq7TgkuCe7RIY+q4Xs5KC0FHMKfvbAk/jpFbD+TSQHiwo/TBNZlGHdwUR9Ig==
|
integrity sha512-OqHgyCnD9l950xswdVNPIsLA01qSpOPf+0bYqYJWHafytIBbvGNJRnypu4X0LnaFXLM6LakkP4pWYeiGLmwxaw==
|
||||||
dependencies:
|
|
||||||
"@bufbuild/protobuf" "^2.2.2"
|
|
||||||
|
|
||||||
"@zitadel/proto@1.0.5-sha-4118a9d":
|
|
||||||
version "1.0.5-sha-4118a9d"
|
|
||||||
resolved "https://registry.yarnpkg.com/@zitadel/proto/-/proto-1.0.5-sha-4118a9d.tgz#e09025f31b2992b061d5416a0d1e12ef370118cc"
|
|
||||||
integrity sha512-7ZFwISL7TqdCkfEUx7/H6UJDqX8ZP2jqG1ulbELvEQ2smrK365Zs7AkJGeB/xbVdhQW9BOhWy2R+Jni7sfxd2w==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
"@bufbuild/protobuf" "^2.2.2"
|
"@bufbuild/protobuf" "^2.2.2"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user