mirror of
https://github.com/zitadel/zitadel.git
synced 2025-02-28 16:57:23 +00:00
feat: add it-IT to internationalization (#2439)
* login it * deepl translations, corrections * login, en typos * it internal, typo fixes * message texts, optim console texts, guide for internationalization * missing console, fix de, en * Add missing keys from main * translate missing keys * add it to console selection, change it policy descriptors * add missing i18n from jwt idp, fixes * add missing translations * missing translations * fix * auth user language change, interceptor * remove multiline operator Co-authored-by: Livio Amstutz <livio.a@gmail.com>
This commit is contained in:
parent
cfdb8c3301
commit
12eed30c08
@ -21,27 +21,20 @@ import { ManagementService } from './services/mgmt.service';
|
||||
import { ThemeService } from './services/theme.service';
|
||||
import { UpdateService } from './services/update.service';
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'cnsl-root',
|
||||
templateUrl: './app.component.html',
|
||||
styleUrls: ['./app.component.scss'],
|
||||
animations: [
|
||||
toolbarAnimation,
|
||||
...navAnimations,
|
||||
accountCard,
|
||||
routeAnimations,
|
||||
adminLineAnimation,
|
||||
],
|
||||
animations: [toolbarAnimation, ...navAnimations, accountCard, routeAnimations, adminLineAnimation],
|
||||
})
|
||||
export class AppComponent implements OnDestroy {
|
||||
@ViewChild('drawer') public drawer!: MatDrawer;
|
||||
@ViewChild('input', { static: false }) input!: ElementRef;
|
||||
public isHandset$: Observable<boolean> = this.breakpointObserver
|
||||
.observe('(max-width: 599px)')
|
||||
.pipe(map(result => {
|
||||
public isHandset$: Observable<boolean> = this.breakpointObserver.observe('(max-width: 599px)').pipe(
|
||||
map((result) => {
|
||||
return result.matches;
|
||||
}));
|
||||
}),
|
||||
);
|
||||
@HostBinding('class') public componentCssClass: string = 'dark-theme';
|
||||
|
||||
public showAccount: boolean = false;
|
||||
@ -78,9 +71,18 @@ export class AppComponent implements OnDestroy {
|
||||
private activatedRoute: ActivatedRoute,
|
||||
@Inject(DOCUMENT) private document: Document,
|
||||
) {
|
||||
console.log('%cWait!', 'text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; color: #5469D4; font-size: 50px');
|
||||
console.log('%cInserting something here could give attackers access to your zitadel account.', 'color: red; font-size: 18px');
|
||||
console.log('%cIf you don\'t know exactly what you\'re doing, close the window and stay on the safe side', 'font-size: 16px');
|
||||
console.log(
|
||||
'%cWait!',
|
||||
'text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; color: #5469D4; font-size: 50px',
|
||||
);
|
||||
console.log(
|
||||
'%cInserting something here could give attackers access to your zitadel account.',
|
||||
'color: red; font-size: 18px',
|
||||
);
|
||||
console.log(
|
||||
"%cIf you don't know exactly what you're doing, close the window and stay on the safe side",
|
||||
'font-size: 16px',
|
||||
);
|
||||
console.log('%cIf you know exactly what you are doing, you should work for us', 'font-size: 16px');
|
||||
this.setLanguage();
|
||||
|
||||
@ -109,10 +111,7 @@ export class AppComponent implements OnDestroy {
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/lightbulb-off-outline.svg'),
|
||||
);
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_radar',
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/radar.svg'),
|
||||
);
|
||||
this.matIconRegistry.addSvgIcon('mdi_radar', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/radar.svg'));
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_lock_question',
|
||||
@ -129,20 +128,14 @@ export class AppComponent implements OnDestroy {
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/lock-reset.svg'),
|
||||
);
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_broom',
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/broom.svg'),
|
||||
);
|
||||
this.matIconRegistry.addSvgIcon('mdi_broom', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/broom.svg'));
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_pin_outline',
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/pin-outline.svg'),
|
||||
);
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_pin',
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/pin.svg'),
|
||||
);
|
||||
this.matIconRegistry.addSvgIcon('mdi_pin', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/pin.svg'));
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_format-letter-case-lower',
|
||||
@ -159,54 +152,40 @@ export class AppComponent implements OnDestroy {
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/counter.svg'),
|
||||
);
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_openid',
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/openid.svg'),
|
||||
);
|
||||
this.matIconRegistry.addSvgIcon('mdi_openid', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/openid.svg'));
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_jwt',
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/jwt.svg'),
|
||||
);
|
||||
this.matIconRegistry.addSvgIcon('mdi_jwt', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/jwt.svg'));
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_symbol',
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/symbol.svg'),
|
||||
);
|
||||
this.matIconRegistry.addSvgIcon('mdi_symbol', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/symbol.svg'));
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_numeric',
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/numeric.svg'),
|
||||
);
|
||||
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'mdi_api',
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/api.svg'),
|
||||
);
|
||||
this.matIconRegistry.addSvgIcon('mdi_api', this.domSanitizer.bypassSecurityTrustResourceUrl('assets/mdi/api.svg'));
|
||||
|
||||
this.activatedRoute.queryParams
|
||||
.pipe(takeUntil(this.destroy$))
|
||||
.subscribe(route => {
|
||||
const { org } = route;
|
||||
if (org) {
|
||||
this.authService.getActiveOrg(org).then(queriedOrg => {
|
||||
this.org = queriedOrg;
|
||||
});
|
||||
}
|
||||
});
|
||||
this.activatedRoute.queryParams.pipe(takeUntil(this.destroy$)).subscribe((route) => {
|
||||
const { org } = route;
|
||||
if (org) {
|
||||
this.authService.getActiveOrg(org).then((queriedOrg) => {
|
||||
this.org = queriedOrg;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
this.loadPrivateLabelling();
|
||||
|
||||
this.getProjectCount();
|
||||
|
||||
this.authService.activeOrgChanged.pipe(takeUntil(this.destroy$)).subscribe(org => {
|
||||
this.authService.activeOrgChanged.pipe(takeUntil(this.destroy$)).subscribe((org) => {
|
||||
this.org = org;
|
||||
this.getProjectCount();
|
||||
});
|
||||
|
||||
this.authenticationService.authenticationChanged.pipe(takeUntil(this.destroy$)).subscribe((authenticated) => {
|
||||
if (authenticated) {
|
||||
this.authService.getActiveOrg().then(org => {
|
||||
this.authService.getActiveOrg().then((org) => {
|
||||
this.org = org;
|
||||
});
|
||||
}
|
||||
@ -219,17 +198,15 @@ export class AppComponent implements OnDestroy {
|
||||
}
|
||||
|
||||
this.isDarkTheme = this.themeService.isDarkTheme;
|
||||
this.isDarkTheme.subscribe(dark => this.onSetTheme(dark ? 'dark-theme' : 'light-theme'));
|
||||
this.isDarkTheme.subscribe((dark) => this.onSetTheme(dark ? 'dark-theme' : 'light-theme'));
|
||||
|
||||
this.translate.onLangChange.subscribe((language: LangChangeEvent) => {
|
||||
this.document.documentElement.lang = language.lang;
|
||||
this.language = language.lang;
|
||||
});
|
||||
|
||||
this.filterControl.valueChanges.pipe(debounceTime(300)).subscribe(value => {
|
||||
this.loadOrgs(
|
||||
value.trim().toLowerCase(),
|
||||
);
|
||||
this.filterControl.valueChanges.pipe(debounceTime(300)).subscribe((value) => {
|
||||
this.loadOrgs(value.trim().toLowerCase());
|
||||
});
|
||||
|
||||
this.hideAdminWarn = localStorage.getItem('hideAdministratorWarning') === 'true' ? true : false;
|
||||
@ -270,7 +247,7 @@ export class AppComponent implements OnDestroy {
|
||||
|
||||
setDefaultColors();
|
||||
|
||||
this.mgmtService.getLabelPolicy().then(labelpolicy => {
|
||||
this.mgmtService.getLabelPolicy().then((labelpolicy) => {
|
||||
if (labelpolicy.policy) {
|
||||
this.labelpolicy = labelpolicy.policy;
|
||||
|
||||
@ -296,8 +273,7 @@ export class AppComponent implements OnDestroy {
|
||||
}
|
||||
|
||||
public loadPolicies(): void {
|
||||
this.mgmtService.getPrivacyPolicy().then(privacypolicy => {
|
||||
|
||||
this.mgmtService.getPrivacyPolicy().then((privacypolicy) => {
|
||||
if (privacypolicy.policy) {
|
||||
this.privacyPolicy = privacypolicy.policy;
|
||||
}
|
||||
@ -316,7 +292,7 @@ export class AppComponent implements OnDestroy {
|
||||
|
||||
this.orgLoading$.next(true);
|
||||
this.orgs$ = from(this.authService.listMyProjectOrgs(10, 0, query ? [query] : undefined)).pipe(
|
||||
map(resp => {
|
||||
map((resp) => {
|
||||
return resp.resultList.sort((left, right) => left.name.localeCompare(right.name));
|
||||
}),
|
||||
catchError(() => of([])),
|
||||
@ -347,16 +323,15 @@ export class AppComponent implements OnDestroy {
|
||||
this.translate.addLangs(['en', 'de']);
|
||||
this.translate.setDefaultLang('en');
|
||||
|
||||
this.authService.user.subscribe(userprofile => {
|
||||
this.authService.user.subscribe((userprofile) => {
|
||||
if (userprofile) {
|
||||
// this.user = userprofile;
|
||||
const cropped = navigator.language.split('-')[0] ?? 'en';
|
||||
const fallbackLang = cropped.match(/en|de/) ? cropped : 'en';
|
||||
const fallbackLang = cropped.match(/en|de|it/) ? cropped : 'en';
|
||||
|
||||
const lang =
|
||||
userprofile?.human?.profile?.preferredLanguage.match(/en|de/) ?
|
||||
userprofile.human.profile?.preferredLanguage :
|
||||
fallbackLang;
|
||||
const lang = userprofile?.human?.profile?.preferredLanguage.match(/en|de|it/)
|
||||
? userprofile.human.profile?.preferredLanguage
|
||||
: fallbackLang;
|
||||
this.translate.use(lang);
|
||||
this.language = lang;
|
||||
this.document.documentElement.lang = lang;
|
||||
@ -388,4 +363,3 @@ export class AppComponent implements OnDestroy {
|
||||
}, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,7 @@ export class LoginTextsComponent implements OnDestroy {
|
||||
public serviceType: PolicyComponentServiceType = PolicyComponentServiceType.MGMT;
|
||||
|
||||
public KeyNamesArray: string[] = KeyNamesArray;
|
||||
public LOCALES: string[] = ['en'];
|
||||
public LOCALES: string[] = ['en', 'de', 'it'];
|
||||
|
||||
private sub: Subscription = new Subscription();
|
||||
|
||||
|
@ -383,7 +383,7 @@ export class MessageTextsComponent implements OnDestroy {
|
||||
};
|
||||
|
||||
public locale: string = 'en';
|
||||
public LOCALES: string[] = ['en'];
|
||||
public LOCALES: string[] = ['en', 'de', 'it'];
|
||||
private sub: Subscription = new Subscription();
|
||||
public currentPolicy: GridPolicy = MESSAGE_TEXTS_POLICY;
|
||||
|
||||
|
@ -18,7 +18,7 @@ import { EditDialogComponent, EditDialogType } from './edit-dialog/edit-dialog.c
|
||||
export class AuthUserDetailComponent implements OnDestroy {
|
||||
public user!: User.AsObject;
|
||||
public genders: Gender[] = [Gender.GENDER_MALE, Gender.GENDER_FEMALE, Gender.GENDER_DIVERSE];
|
||||
public languages: string[] = ['de', 'en'];
|
||||
public languages: string[] = ['de', 'en', 'it'];
|
||||
|
||||
private subscription: Subscription = new Subscription();
|
||||
|
||||
@ -39,19 +39,26 @@ export class AuthUserDetailComponent implements OnDestroy {
|
||||
) {
|
||||
this.loading = true;
|
||||
this.refreshUser();
|
||||
|
||||
this.userService.getSupportedLanguages().then((lang) => {
|
||||
this.languages = lang.languagesList;
|
||||
});
|
||||
}
|
||||
|
||||
refreshUser(): void {
|
||||
this.refreshChanges$.emit();
|
||||
this.userService.getMyUser().then(resp => {
|
||||
if (resp.user) {
|
||||
this.user = resp.user;
|
||||
}
|
||||
this.loading = false;
|
||||
}).catch(error => {
|
||||
this.toast.showError(error);
|
||||
this.loading = false;
|
||||
});
|
||||
this.userService
|
||||
.getMyUser()
|
||||
.then((resp) => {
|
||||
if (resp.user) {
|
||||
this.user = resp.user;
|
||||
}
|
||||
this.loading = false;
|
||||
})
|
||||
.catch((error) => {
|
||||
this.toast.showError(error);
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
|
||||
public ngOnDestroy(): void {
|
||||
@ -71,13 +78,15 @@ export class AuthUserDetailComponent implements OnDestroy {
|
||||
width: '400px',
|
||||
});
|
||||
|
||||
dialogRefPhone.afterClosed().subscribe(resp => {
|
||||
dialogRefPhone.afterClosed().subscribe((resp) => {
|
||||
if (resp && resp !== this.user.userName) {
|
||||
this.userService.updateMyUserName(resp).then(() => {
|
||||
this.userService
|
||||
.updateMyUserName(resp)
|
||||
.then(() => {
|
||||
this.toast.showInfo('USER.TOAST.USERNAMECHANGED', true);
|
||||
this.refreshUser();
|
||||
})
|
||||
.catch(error => {
|
||||
.catch((error) => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
}
|
||||
@ -101,7 +110,7 @@ export class AuthUserDetailComponent implements OnDestroy {
|
||||
this.toast.showInfo('USER.TOAST.SAVED', true);
|
||||
this.refreshChanges$.emit();
|
||||
})
|
||||
.catch(error => {
|
||||
.catch((error) => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
}
|
||||
@ -109,7 +118,8 @@ export class AuthUserDetailComponent implements OnDestroy {
|
||||
|
||||
public saveEmail(email: string): void {
|
||||
this.userService
|
||||
.setMyEmail(email).then(() => {
|
||||
.setMyEmail(email)
|
||||
.then(() => {
|
||||
this.toast.showInfo('USER.TOAST.EMAILSAVED', true);
|
||||
if (this.user.human) {
|
||||
const mailToSet = new Email();
|
||||
@ -117,18 +127,22 @@ export class AuthUserDetailComponent implements OnDestroy {
|
||||
this.user.human.email = mailToSet.toObject();
|
||||
this.refreshUser();
|
||||
}
|
||||
}).catch(error => {
|
||||
})
|
||||
.catch((error) => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
}
|
||||
|
||||
public enteredPhoneCode(code: string): void {
|
||||
this.userService.verifyMyPhone(code).then(() => {
|
||||
this.toast.showInfo('USER.TOAST.PHONESAVED', true);
|
||||
this.refreshUser();
|
||||
}).catch(error => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
this.userService
|
||||
.verifyMyPhone(code)
|
||||
.then(() => {
|
||||
this.toast.showInfo('USER.TOAST.PHONESAVED', true);
|
||||
this.refreshUser();
|
||||
})
|
||||
.catch((error) => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
}
|
||||
|
||||
public changedLanguage(language: string): void {
|
||||
@ -136,40 +150,50 @@ export class AuthUserDetailComponent implements OnDestroy {
|
||||
}
|
||||
|
||||
public resendPhoneVerification(): void {
|
||||
this.userService.resendMyPhoneVerification().then(() => {
|
||||
this.toast.showInfo('USER.TOAST.PHONEVERIFICATIONSENT', true);
|
||||
this.refreshChanges$.emit();
|
||||
}).catch(error => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
this.userService
|
||||
.resendMyPhoneVerification()
|
||||
.then(() => {
|
||||
this.toast.showInfo('USER.TOAST.PHONEVERIFICATIONSENT', true);
|
||||
this.refreshChanges$.emit();
|
||||
})
|
||||
.catch((error) => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
}
|
||||
|
||||
public resendEmailVerification(): void {
|
||||
this.userService.resendMyEmailVerification().then(() => {
|
||||
this.toast.showInfo('USER.TOAST.EMAILVERIFICATIONSENT', true);
|
||||
this.refreshChanges$.emit();
|
||||
}).catch(error => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
this.userService
|
||||
.resendMyEmailVerification()
|
||||
.then(() => {
|
||||
this.toast.showInfo('USER.TOAST.EMAILVERIFICATIONSENT', true);
|
||||
this.refreshChanges$.emit();
|
||||
})
|
||||
.catch((error) => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
}
|
||||
|
||||
public deletePhone(): void {
|
||||
this.userService.removeMyPhone().then(() => {
|
||||
this.toast.showInfo('USER.TOAST.PHONEREMOVED', true);
|
||||
if (this.user.human?.phone) {
|
||||
const phone = new Phone();
|
||||
this.user.human.phone = phone.toObject();
|
||||
this.refreshUser();
|
||||
}
|
||||
}).catch(error => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
this.userService
|
||||
.removeMyPhone()
|
||||
.then(() => {
|
||||
this.toast.showInfo('USER.TOAST.PHONEREMOVED', true);
|
||||
if (this.user.human?.phone) {
|
||||
const phone = new Phone();
|
||||
this.user.human.phone = phone.toObject();
|
||||
this.refreshUser();
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
}
|
||||
|
||||
public savePhone(phone: string): void {
|
||||
if (this.user.human) {
|
||||
this.userService
|
||||
.setMyPhone(phone).then(() => {
|
||||
.setMyPhone(phone)
|
||||
.then(() => {
|
||||
this.toast.showInfo('USER.TOAST.PHONESAVED', true);
|
||||
if (this.user.human) {
|
||||
const phoneToSet = new Phone();
|
||||
@ -177,7 +201,8 @@ export class AuthUserDetailComponent implements OnDestroy {
|
||||
this.user.human.phone = phoneToSet.toObject();
|
||||
this.refreshUser();
|
||||
}
|
||||
}).catch(error => {
|
||||
})
|
||||
.catch((error) => {
|
||||
this.toast.showError(error);
|
||||
});
|
||||
}
|
||||
@ -199,7 +224,7 @@ export class AuthUserDetailComponent implements OnDestroy {
|
||||
width: '400px',
|
||||
});
|
||||
|
||||
dialogRefPhone.afterClosed().subscribe(resp => {
|
||||
dialogRefPhone.afterClosed().subscribe((resp) => {
|
||||
if (resp) {
|
||||
this.savePhone(resp);
|
||||
}
|
||||
@ -219,7 +244,7 @@ export class AuthUserDetailComponent implements OnDestroy {
|
||||
width: '400px',
|
||||
});
|
||||
|
||||
dialogRefEmail.afterClosed().subscribe(resp => {
|
||||
dialogRefEmail.afterClosed().subscribe((resp) => {
|
||||
if (resp) {
|
||||
this.saveEmail(resp);
|
||||
}
|
||||
|
@ -22,6 +22,8 @@ import {
|
||||
GetMyProfileResponse,
|
||||
GetMyUserRequest,
|
||||
GetMyUserResponse,
|
||||
GetSupportedLanguagesRequest,
|
||||
GetSupportedLanguagesResponse,
|
||||
ListMyAuthFactorsRequest,
|
||||
ListMyAuthFactorsResponse,
|
||||
ListMyLinkedIDPsRequest,
|
||||
@ -86,8 +88,6 @@ import { Gender, MembershipQuery, User, WebAuthNVerification } from '../proto/ge
|
||||
import { GrpcService } from './grpc.service';
|
||||
import { StorageKey, StorageLocation, StorageService } from './storage.service';
|
||||
|
||||
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
@ -108,26 +108,26 @@ export class GrpcAuthService {
|
||||
private storage: StorageService,
|
||||
) {
|
||||
this.user = merge(
|
||||
of(this.oauthService.getAccessToken()).pipe(
|
||||
filter(token => token ? true : false),
|
||||
),
|
||||
of(this.oauthService.getAccessToken()).pipe(filter((token) => (token ? true : false))),
|
||||
this.oauthService.events.pipe(
|
||||
filter(e => e.type === 'token_received'),
|
||||
filter((e) => e.type === 'token_received'),
|
||||
timeout(this.oauthService.waitForTokenInMsec || 0),
|
||||
catchError(_ => of(null)), // timeout is not an error
|
||||
map(_ => this.oauthService.getAccessToken()),
|
||||
catchError((_) => of(null)), // timeout is not an error
|
||||
map((_) => this.oauthService.getAccessToken()),
|
||||
),
|
||||
).pipe(
|
||||
take(1),
|
||||
mergeMap(() => {
|
||||
return from(this.getMyUser().then(resp => {
|
||||
const user = resp.user;
|
||||
if (user) {
|
||||
return user;
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
}));
|
||||
return from(
|
||||
this.getMyUser().then((resp) => {
|
||||
const user = resp.user;
|
||||
if (user) {
|
||||
return user;
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
}),
|
||||
);
|
||||
}),
|
||||
finalize(() => {
|
||||
this.loadPermissions();
|
||||
@ -143,7 +143,7 @@ export class GrpcAuthService {
|
||||
|
||||
public async getActiveOrg(id?: string): Promise<Org.AsObject> {
|
||||
if (id) {
|
||||
const find = this.cachedOrgs.find(tmp => tmp.id === id);
|
||||
const find = this.cachedOrgs.find((tmp) => tmp.id === id);
|
||||
if (find) {
|
||||
this.setActiveOrg(find);
|
||||
return Promise.resolve(find);
|
||||
@ -151,7 +151,7 @@ export class GrpcAuthService {
|
||||
const orgs = (await this.listMyProjectOrgs(10, 0)).resultList;
|
||||
this.cachedOrgs = orgs;
|
||||
|
||||
const toFind = this.cachedOrgs.find(tmp => tmp.id === id);
|
||||
const toFind = this.cachedOrgs.find((tmp) => tmp.id === id);
|
||||
if (toFind) {
|
||||
this.setActiveOrg(toFind);
|
||||
return Promise.resolve(toFind);
|
||||
@ -167,7 +167,7 @@ export class GrpcAuthService {
|
||||
}
|
||||
|
||||
const org = this.storage.getItem<Org.AsObject>(StorageKey.organization, StorageLocation.local);
|
||||
if (org && orgs.find(tmp => tmp.id === org.id)) {
|
||||
if (org && orgs.find((tmp) => tmp.id === org.id)) {
|
||||
this.storage.setItem(StorageKey.organization, org, StorageLocation.session);
|
||||
return org;
|
||||
}
|
||||
@ -175,7 +175,7 @@ export class GrpcAuthService {
|
||||
if (orgs.length === 0) {
|
||||
return Promise.reject(new Error('No organizations found!'));
|
||||
}
|
||||
const orgToSet = orgs.find(element => element.id !== '0' && element.name !== '');
|
||||
const orgToSet = orgs.find((element) => element.id !== '0' && element.name !== '');
|
||||
|
||||
if (orgToSet) {
|
||||
this.setActiveOrg(orgToSet);
|
||||
@ -197,31 +197,35 @@ export class GrpcAuthService {
|
||||
}
|
||||
|
||||
private loadPermissions(): void {
|
||||
from(this.listMyZitadelPermissions()).pipe(
|
||||
map(rolesResp => rolesResp.resultList),
|
||||
catchError(_ => {
|
||||
return of([]);
|
||||
}),
|
||||
finalize(() => {
|
||||
this.fetchedZitadelPermissions.next(true);
|
||||
}),
|
||||
).subscribe(roles => {
|
||||
this.zitadelPermissions.next(roles);
|
||||
});
|
||||
from(this.listMyZitadelPermissions())
|
||||
.pipe(
|
||||
map((rolesResp) => rolesResp.resultList),
|
||||
catchError((_) => {
|
||||
return of([]);
|
||||
}),
|
||||
finalize(() => {
|
||||
this.fetchedZitadelPermissions.next(true);
|
||||
}),
|
||||
)
|
||||
.subscribe((roles) => {
|
||||
this.zitadelPermissions.next(roles);
|
||||
});
|
||||
}
|
||||
|
||||
private loadFeatures(): void {
|
||||
from(this.listMyZitadelFeatures()).pipe(
|
||||
map(featuresResp => featuresResp.resultList),
|
||||
catchError(_ => {
|
||||
return of([]);
|
||||
}),
|
||||
finalize(() => {
|
||||
this.fetchedZitadelFeatures.next(true);
|
||||
}),
|
||||
).subscribe(features => {
|
||||
this.zitadelFeatures.next(features);
|
||||
});
|
||||
from(this.listMyZitadelFeatures())
|
||||
.pipe(
|
||||
map((featuresResp) => featuresResp.resultList),
|
||||
catchError((_) => {
|
||||
return of([]);
|
||||
}),
|
||||
finalize(() => {
|
||||
this.fetchedZitadelFeatures.next(true);
|
||||
}),
|
||||
)
|
||||
.subscribe((features) => {
|
||||
this.zitadelFeatures.next(features);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@ -230,7 +234,7 @@ export class GrpcAuthService {
|
||||
*/
|
||||
public isAllowed(roles: string[] | RegExp[]): Observable<boolean> {
|
||||
if (roles && roles.length > 0) {
|
||||
return this.zitadelPermissions.pipe(switchMap(zroles => of(this.hasRoles(zroles, roles))));
|
||||
return this.zitadelPermissions.pipe(switchMap((zroles) => of(this.hasRoles(zroles, roles))));
|
||||
} else {
|
||||
return of(false);
|
||||
}
|
||||
@ -242,11 +246,15 @@ export class GrpcAuthService {
|
||||
* @param requestedRoles required roles for accessing the respective component
|
||||
*/
|
||||
public hasRoles(userRoles: string[], requestedRoles: string[] | RegExp[]): boolean {
|
||||
return requestedRoles.findIndex((regexp: any) => {
|
||||
return userRoles.findIndex(role => {
|
||||
return new RegExp(regexp).test(role);
|
||||
}) > -1;
|
||||
}) > -1;
|
||||
return (
|
||||
requestedRoles.findIndex((regexp: any) => {
|
||||
return (
|
||||
userRoles.findIndex((role) => {
|
||||
return new RegExp(regexp).test(role);
|
||||
}) > -1
|
||||
);
|
||||
}) > -1
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -255,7 +263,7 @@ export class GrpcAuthService {
|
||||
*/
|
||||
public canUseFeature(features: string[] | RegExp[]): Observable<boolean> {
|
||||
if (features && features.length > 0) {
|
||||
return this.zitadelFeatures.pipe(switchMap(zFeatures => of(this.hasFeature(zFeatures, features))));
|
||||
return this.zitadelFeatures.pipe(switchMap((zFeatures) => of(this.hasFeature(zFeatures, features))));
|
||||
} else {
|
||||
return of(false);
|
||||
}
|
||||
@ -267,33 +275,33 @@ export class GrpcAuthService {
|
||||
* @param requestedFeature required features for accessing the respective component
|
||||
*/
|
||||
public hasFeature(userFeatures: string[], requestedFeatures: string[] | RegExp[]): boolean {
|
||||
return requestedFeatures.findIndex((regexp: any) => {
|
||||
return userFeatures.findIndex(feature => {
|
||||
return new RegExp(regexp).test(feature);
|
||||
}) > -1;
|
||||
}) > -1;
|
||||
return (
|
||||
requestedFeatures.findIndex((regexp: any) => {
|
||||
return (
|
||||
userFeatures.findIndex((feature) => {
|
||||
return new RegExp(regexp).test(feature);
|
||||
}) > -1
|
||||
);
|
||||
}) > -1
|
||||
);
|
||||
}
|
||||
|
||||
public getMyProfile(): Promise<GetMyProfileResponse.AsObject> {
|
||||
return this.grpcService.auth.getMyProfile(new GetMyProfileRequest(), null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.getMyProfile(new GetMyProfileRequest(), null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public getMyPasswordComplexityPolicy(): Promise<GetMyPasswordComplexityPolicyResponse.AsObject> {
|
||||
return this.grpcService.auth.getMyPasswordComplexityPolicy(
|
||||
new GetMyPasswordComplexityPolicyRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth
|
||||
.getMyPasswordComplexityPolicy(new GetMyPasswordComplexityPolicyRequest(), null)
|
||||
.then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public getMyUser(): Promise<GetMyUserResponse.AsObject> {
|
||||
return this.grpcService.auth.getMyUser(
|
||||
new GetMyUserRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.getMyUser(new GetMyUserRequest(), null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public listMyMultiFactors(): Promise<ListMyAuthFactorsResponse.AsObject> {
|
||||
return this.grpcService.auth.listMyAuthFactors(
|
||||
new ListMyAuthFactorsRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.listMyAuthFactors(new ListMyAuthFactorsRequest(), null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public listMyProjectOrgs(
|
||||
@ -313,7 +321,7 @@ export class GrpcAuthService {
|
||||
req.setQueriesList(queryList);
|
||||
}
|
||||
|
||||
return this.grpcService.auth.listMyProjectOrgs(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.listMyProjectOrgs(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public updateMyProfile(
|
||||
@ -343,7 +351,7 @@ export class GrpcAuthService {
|
||||
if (preferredLanguage) {
|
||||
req.setPreferredLanguage(preferredLanguage);
|
||||
}
|
||||
return this.grpcService.auth.updateMyProfile(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.updateMyProfile(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public get zitadelPermissionsChanged(): Observable<string[]> {
|
||||
@ -352,11 +360,14 @@ export class GrpcAuthService {
|
||||
|
||||
public listMyUserSessions(): Promise<ListMyUserSessionsResponse.AsObject> {
|
||||
const req = new ListMyUserSessionsRequest();
|
||||
return this.grpcService.auth.listMyUserSessions(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.listMyUserSessions(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public listMyUserGrants(limit?: number, offset?: number, queryList?: ListQuery[]):
|
||||
Promise<ListMyUserGrantsResponse.AsObject> {
|
||||
public listMyUserGrants(
|
||||
limit?: number,
|
||||
offset?: number,
|
||||
queryList?: ListQuery[],
|
||||
): Promise<ListMyUserGrantsResponse.AsObject> {
|
||||
const req = new ListMyUserGrantsRequest();
|
||||
const query = new ListQuery();
|
||||
if (limit) {
|
||||
@ -366,10 +377,12 @@ export class GrpcAuthService {
|
||||
query.setOffset(offset);
|
||||
}
|
||||
req.setQuery(query);
|
||||
return this.grpcService.auth.listMyUserGrants(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.listMyUserGrants(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public listMyMemberships(limit: number, offset: number,
|
||||
public listMyMemberships(
|
||||
limit: number,
|
||||
offset: number,
|
||||
queryList?: MembershipQuery[],
|
||||
): Promise<ListMyMembershipsResponse.AsObject> {
|
||||
const req = new ListMyMembershipsRequest();
|
||||
@ -384,92 +397,87 @@ export class GrpcAuthService {
|
||||
req.setQueriesList(queryList);
|
||||
}
|
||||
req.setQuery(metadata);
|
||||
return this.grpcService.auth.listMyMemberships(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.listMyMemberships(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public getMyEmail(): Promise<GetMyEmailResponse.AsObject> {
|
||||
const req = new GetMyEmailRequest();
|
||||
return this.grpcService.auth.getMyEmail(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.getMyEmail(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public setMyEmail(email: string): Promise<SetMyEmailResponse.AsObject> {
|
||||
const req = new SetMyEmailRequest();
|
||||
req.setEmail(email);
|
||||
return this.grpcService.auth.setMyEmail(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.setMyEmail(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public resendMyEmailVerification(): Promise<ResendMyEmailVerificationResponse.AsObject> {
|
||||
const req = new ResendMyEmailVerificationRequest();
|
||||
return this.grpcService.auth.resendMyEmailVerification(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.resendMyEmailVerification(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public getSupportedLanguages(): Promise<GetSupportedLanguagesResponse.AsObject> {
|
||||
const req = new GetSupportedLanguagesRequest();
|
||||
return this.grpcService.auth.getSupportedLanguages(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public removeMyPhone(): Promise<RemoveMyPhoneResponse.AsObject> {
|
||||
return this.grpcService.auth.removeMyPhone(
|
||||
new RemoveMyPhoneRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.removeMyPhone(new RemoveMyPhoneRequest(), null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public updateMyUserName(username: string): Promise<UpdateMyUserNameResponse.AsObject> {
|
||||
const req = new UpdateMyUserNameRequest();
|
||||
req.setUserName(username);
|
||||
return this.grpcService.auth.updateMyUserName(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.updateMyUserName(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public listMyZitadelPermissions(): Promise<ListMyZitadelPermissionsResponse.AsObject> {
|
||||
return this.grpcService.auth.listMyZitadelPermissions(
|
||||
new ListMyZitadelPermissionsRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth
|
||||
.listMyZitadelPermissions(new ListMyZitadelPermissionsRequest(), null)
|
||||
.then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public listMyZitadelFeatures(): Promise<ListMyZitadelFeaturesResponse.AsObject> {
|
||||
return this.grpcService.auth.listMyZitadelFeatures(
|
||||
new ListMyZitadelFeaturesRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth
|
||||
.listMyZitadelFeatures(new ListMyZitadelFeaturesRequest(), null)
|
||||
.then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public getMyPhone(): Promise<GetMyPhoneResponse.AsObject> {
|
||||
return this.grpcService.auth.getMyPhone(
|
||||
new GetMyPhoneRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.getMyPhone(new GetMyPhoneRequest(), null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public setMyPhone(phone: string): Promise<SetMyPhoneResponse.AsObject> {
|
||||
const req = new SetMyPhoneRequest();
|
||||
req.setPhone(phone);
|
||||
return this.grpcService.auth.setMyPhone(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.setMyPhone(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public resendMyPhoneVerification(): Promise<ResendMyPhoneVerificationResponse.AsObject> {
|
||||
const req = new ResendMyPhoneVerificationRequest();
|
||||
return this.grpcService.auth.resendMyPhoneVerification(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.resendMyPhoneVerification(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public updateMyPassword(oldPassword: string, newPassword: string): Promise<UpdateMyPasswordResponse.AsObject> {
|
||||
const req = new UpdateMyPasswordRequest();
|
||||
req.setOldPassword(oldPassword);
|
||||
req.setNewPassword(newPassword);
|
||||
return this.grpcService.auth.updateMyPassword(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.updateMyPassword(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public removeMyLinkedIDP(
|
||||
idpId: string,
|
||||
linkedUserId: string,
|
||||
): Promise<RemoveMyLinkedIDPResponse.AsObject> {
|
||||
public removeMyLinkedIDP(idpId: string, linkedUserId: string): Promise<RemoveMyLinkedIDPResponse.AsObject> {
|
||||
const req = new RemoveMyLinkedIDPRequest();
|
||||
req.setLinkedUserId(linkedUserId);
|
||||
req.setIdpId(idpId);
|
||||
return this.grpcService.auth.removeMyLinkedIDP(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.removeMyLinkedIDP(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public removeMyAvatar(): Promise<RemoveMyAvatarResponse.AsObject> {
|
||||
const req = new RemoveMyAvatarRequest();
|
||||
return this.grpcService.auth.removeMyAvatar(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.removeMyAvatar(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public listMyLinkedIDPs(
|
||||
limit: number,
|
||||
offset: number,
|
||||
): Promise<ListMyLinkedIDPsResponse.AsObject> {
|
||||
public listMyLinkedIDPs(limit: number, offset: number): Promise<ListMyLinkedIDPsResponse.AsObject> {
|
||||
const req = new ListMyLinkedIDPsRequest();
|
||||
const metadata = new ListQuery();
|
||||
if (limit) {
|
||||
@ -479,25 +487,21 @@ export class GrpcAuthService {
|
||||
metadata.setOffset(offset);
|
||||
}
|
||||
req.setQuery(metadata);
|
||||
return this.grpcService.auth.listMyLinkedIDPs(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.listMyLinkedIDPs(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public addMyMultiFactorOTP(): Promise<AddMyAuthFactorOTPResponse.AsObject> {
|
||||
return this.grpcService.auth.addMyAuthFactorOTP(
|
||||
new AddMyAuthFactorOTPRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.addMyAuthFactorOTP(new AddMyAuthFactorOTPRequest(), null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public addMyMultiFactorU2F(): Promise<AddMyAuthFactorU2FResponse.AsObject> {
|
||||
return this.grpcService.auth.addMyAuthFactorU2F(
|
||||
new AddMyAuthFactorU2FRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.addMyAuthFactorU2F(new AddMyAuthFactorU2FRequest(), null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public removeMyMultiFactorU2F(tokenId: string): Promise<RemoveMyAuthFactorU2FResponse.AsObject> {
|
||||
const req = new RemoveMyAuthFactorU2FRequest();
|
||||
req.setTokenId(tokenId);
|
||||
return this.grpcService.auth.removeMyAuthFactorU2F(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.removeMyAuthFactorU2F(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public verifyMyMultiFactorU2F(credential: string, tokenname: string): Promise<VerifyMyAuthFactorU2FResponse.AsObject> {
|
||||
@ -507,25 +511,21 @@ export class GrpcAuthService {
|
||||
verification.setTokenName(tokenname);
|
||||
req.setVerification(verification);
|
||||
|
||||
return this.grpcService.auth.verifyMyAuthFactorU2F(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.verifyMyAuthFactorU2F(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public listMyPasswordless(): Promise<ListMyPasswordlessResponse.AsObject> {
|
||||
return this.grpcService.auth.listMyPasswordless(
|
||||
new ListMyPasswordlessRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.listMyPasswordless(new ListMyPasswordlessRequest(), null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public addMyPasswordless(): Promise<AddMyPasswordlessResponse.AsObject> {
|
||||
return this.grpcService.auth.addMyPasswordless(
|
||||
new AddMyPasswordlessRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.addMyPasswordless(new AddMyPasswordlessRequest(), null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public removeMyPasswordless(tokenId: string): Promise<RemoveMyPasswordlessResponse.AsObject> {
|
||||
const req = new RemoveMyPasswordlessRequest();
|
||||
req.setTokenId(tokenId);
|
||||
return this.grpcService.auth.removeMyPasswordless(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.removeMyPasswordless(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public verifyMyPasswordless(credential: string, tokenname: string): Promise<VerifyMyPasswordlessResponse.AsObject> {
|
||||
@ -535,37 +535,35 @@ export class GrpcAuthService {
|
||||
verification.setPublicKeyCredential(credential);
|
||||
req.setVerification(verification);
|
||||
|
||||
return this.grpcService.auth.verifyMyPasswordless(
|
||||
req, null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.verifyMyPasswordless(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public sendMyPasswordlessLink(): Promise<SendMyPasswordlessLinkResponse.AsObject> {
|
||||
const req = new SendMyPasswordlessLinkRequest();
|
||||
return this.grpcService.auth.sendMyPasswordlessLink(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.sendMyPasswordlessLink(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public addMyPasswordlessLink(): Promise<AddMyPasswordlessLinkResponse.AsObject> {
|
||||
const req = new AddMyPasswordlessLinkRequest();
|
||||
return this.grpcService.auth.addMyPasswordlessLink(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.addMyPasswordlessLink(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public removeMyMultiFactorOTP(): Promise<RemoveMyAuthFactorOTPResponse.AsObject> {
|
||||
return this.grpcService.auth.removeMyAuthFactorOTP(
|
||||
new RemoveMyAuthFactorOTPRequest(), null,
|
||||
).then(resp => resp.toObject());
|
||||
return this.grpcService.auth
|
||||
.removeMyAuthFactorOTP(new RemoveMyAuthFactorOTPRequest(), null)
|
||||
.then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public verifyMyMultiFactorOTP(code: string): Promise<VerifyMyAuthFactorOTPResponse.AsObject> {
|
||||
const req = new VerifyMyAuthFactorOTPRequest();
|
||||
req.setCode(code);
|
||||
return this.grpcService.auth.verifyMyAuthFactorOTP(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.verifyMyAuthFactorOTP(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public verifyMyPhone(code: string): Promise<VerifyMyPhoneResponse.AsObject> {
|
||||
const req = new VerifyMyPhoneRequest();
|
||||
req.setCode(code);
|
||||
return this.grpcService.auth.verifyMyPhone(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.verifyMyPhone(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public listMyUserChanges(limit: number, sequence: number): Promise<ListMyUserChangesResponse.AsObject> {
|
||||
@ -579,6 +577,6 @@ export class GrpcAuthService {
|
||||
query.setSequence(sequence);
|
||||
}
|
||||
req.setQuery(query);
|
||||
return this.grpcService.auth.listMyUserChanges(req, null).then(resp => resp.toObject());
|
||||
return this.grpcService.auth.listMyUserChanges(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
}
|
||||
|
@ -754,7 +754,9 @@
|
||||
},
|
||||
"PRIVATELABELING_POLICY": {
|
||||
"TITLE": "Private Labeling",
|
||||
"DESCRIPTION": "Definiere das Erscheinungsbild des Logins."
|
||||
"BTN":"Datei auswählen",
|
||||
"DESCRIPTION": "Definiere das Erscheinungsbild des Logins.",
|
||||
"ACTIVATEPREVIEW":"Preview aktivieren"
|
||||
},
|
||||
"LOGIN_POLICY": {
|
||||
"TITLE": "Login Richtlinien",
|
||||
@ -1300,6 +1302,7 @@
|
||||
}
|
||||
},
|
||||
"NEXTSTEPS": {
|
||||
"TITLE": "Nächste Schritte",
|
||||
"0": {
|
||||
"TITLE": "Rollen festlegen",
|
||||
"DESC": "Erfassen Sie Rollen für ihr Projekt"
|
||||
@ -1388,7 +1391,7 @@
|
||||
"TOKENTYPE": "Auth Token Typ",
|
||||
"TOKENTYPE0": "Bearer Token",
|
||||
"TOKENTYPE1": "JWT",
|
||||
"UNSECUREREDIRECT": "Ich hoffe, Du weisst, was Du tust.",
|
||||
"UNSECUREREDIRECT": "Wir hoffen, Du weisst, was Du tust.",
|
||||
"OVERVIEWSECTION": "Übersicht",
|
||||
"OVERVIEWTITLE": "Deine Konfiguration ist bereit. Du kannst sie hier nochmals prüfen.",
|
||||
"ACCESSTOKENROLEASSERTION": "Benutzerrollen dem Access Token hinzufügen",
|
||||
@ -1480,6 +1483,7 @@
|
||||
},
|
||||
"LANGUAGES": {
|
||||
"de": "Deutsch",
|
||||
"it": "Italienisch",
|
||||
"en": "Englisch"
|
||||
},
|
||||
"MEMBER": {
|
||||
|
@ -35,7 +35,7 @@
|
||||
"SECURITYANDPRIVACY_DESC": "Manage Your Information and Security Settings",
|
||||
"SECURITYANDPRIVACY_BUTTON": "Personalise Information and Security",
|
||||
"CHANGE_PWD": "Change Password",
|
||||
"PROTECTION": "Organisational Policies",
|
||||
"PROTECTION": "Organizational Policies",
|
||||
"PROTECTION_DESC": "Manage your organisational guidelines. Explore some pre-packaged solutions that save you time and ensure security.",
|
||||
"PROTECTION_BUTTON": "Explore",
|
||||
"PROJECTS": "Create and Manage Your Applications and Projects",
|
||||
@ -301,8 +301,8 @@
|
||||
"EXTERNALIDP": {
|
||||
"TITLE": "External Identity Providers",
|
||||
"DESC": "",
|
||||
"IDPCONFIGID": "Idp Config ID",
|
||||
"IDPNAME": "Idp Name",
|
||||
"IDPCONFIGID": "IDP Config ID",
|
||||
"IDPNAME": "IDP Name",
|
||||
"USERDISPLAYNAME": "External Name",
|
||||
"EXTERNALUSERID": "External User ID",
|
||||
"DIALOG": {
|
||||
@ -331,7 +331,7 @@
|
||||
"STATE2": "Inactive",
|
||||
"STATE3": "Deleted",
|
||||
"STATE4": "Locked",
|
||||
"STATE5": "Supend",
|
||||
"STATE5": "Suspended",
|
||||
"STATE6": "Initial"
|
||||
},
|
||||
"PROFILE": {
|
||||
@ -356,7 +356,7 @@
|
||||
"CURRENT":"Current Picture",
|
||||
"PREVIEW":"Preview",
|
||||
"DELETESUCCESS":"Deleted successfully!",
|
||||
"CROPPERERROR":"An error while uploading your file failed. Try a different format and size if necessary."
|
||||
"CROPPERERROR":"An error while uploading your file occurred. Try a different format and size if necessary."
|
||||
}
|
||||
},
|
||||
"MACHINE": {
|
||||
@ -595,7 +595,7 @@
|
||||
"VERIFICATION_VALIDATION_ONGOING": "A verification token has already been requested. Click on the button to trigger a verification check.",
|
||||
"VERIFICATION_VALIDATION_ONGOING_TYPE": "Type of the token:",
|
||||
"VERIFICATION_SUCCESSFUL": "Domain successfully verified!",
|
||||
"REQUESTNEWTOKEN": "Request new Token",
|
||||
"REQUESTNEWTOKEN": "Request new token",
|
||||
"TYPES": {
|
||||
"1": "HTTP",
|
||||
"2": "DNS"
|
||||
@ -659,7 +659,7 @@
|
||||
"POSTAL_CODE": "Postal Code",
|
||||
"COUNTRY": "Country",
|
||||
"TITLE": "Zitadel Tier",
|
||||
"DESCRIPTION": "Zitadel works with Stripe to simplify invoicing. The following link redirects to Stripe.com.",
|
||||
"DESCRIPTION": "Zitadel works with Stripe to simplify invoicing. The following link redirects to stripe.com.",
|
||||
"QUESTIONS": "For questions regarding payments contact our support ",
|
||||
"BTN": "Change Tier"
|
||||
},
|
||||
@ -716,7 +716,7 @@
|
||||
"BTN":"Select File",
|
||||
"ACTIVATEPREVIEW":"Apply configuration",
|
||||
"DARK":"Dark Mode",
|
||||
"LIGHT":"Lighg Mode",
|
||||
"LIGHT":"Light Mode",
|
||||
"CHANGEVIEW":"Change View",
|
||||
"ACTIVATED":"Policy changes are now LIVE",
|
||||
"THEME":"Theme",
|
||||
@ -1483,6 +1483,7 @@
|
||||
},
|
||||
"LANGUAGES": {
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"en": "English"
|
||||
},
|
||||
"MEMBER": {
|
||||
|
1546
console/src/assets/i18n/it.json
Normal file
1546
console/src/assets/i18n/it.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -25,5 +25,21 @@ You will see the default texts in the input field and you can overwrite them by
|
||||

|
||||
|
||||
## Reset to default
|
||||
|
||||
If you don't like your customization anymore click the "reset policy" button.
|
||||
All your settings will be removed and the default settings of the system will trigger.
|
||||
|
||||
## Internationalization
|
||||
|
||||
ZITADELs support for languages will be extended with time.
|
||||
If you need support for a specific language we highly recommend you to write translation files for the missing language.
|
||||
|
||||
ZITADEL loads translations from three files:
|
||||
|
||||
- [Console translations](https://github.com/caos/zitadel/tree/main/console/src/assets/i18n)
|
||||
- [Login interface texts](https://github.com/caos/zitadel/tree/main/internal/ui/login/static/i18n)
|
||||
- [Email Notifcation texts](https://github.com/caos/zitadel/tree/main/internal/notification/static/i18n)
|
||||
- [Common translations](https://github.com/caos/zitadel/tree/main/internal/static/i18n) for success or error toasts
|
||||
|
||||
Make sure you set the locale as the name. Later on, language header will determine which file gets displayed.
|
||||
|
||||
|
42
internal/notification/static/i18n/it.yaml
Normal file
42
internal/notification/static/i18n/it.yaml
Normal file
@ -0,0 +1,42 @@
|
||||
InitCode:
|
||||
Title: ZITADEL - Inizializzare l'utente
|
||||
PreHeader: Inizializzare l'utente
|
||||
Subject: Inizializzare l'utente
|
||||
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||
Text: Questo utente è stato creato in ZITADEL. Usa il nome utente {{.PreferredLoginName}} per accedere. Per favore, clicca il pulsante per finire il processo di inizializzazione. (Codice {{.Codice}}) Se non hai richiesto questa mail, per favore ignorala.
|
||||
ButtonText: Termina
|
||||
PasswordReset:
|
||||
Title: ZITADEL - Ripristina la password
|
||||
PreHeader: Ripristina la password
|
||||
Subject: Ripristina la password
|
||||
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||
Text: Abbiamo ricevuto una richiesta di reimpostazione della password. Per favore clicca il pulsante per resettare la tua password. (Codice {{.Codice}}) Se non hai richiesto questa mail, ignorala.
|
||||
ButtonText: Ripristina
|
||||
VerifyEmail:
|
||||
Title: ZITADEL - Verifica l'e-mail
|
||||
PreHeader: Verifica l'e-mail
|
||||
Subject: Verifica l'e-mail
|
||||
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||
Text: È stata aggiunta una nuova email. Per favore fai clic sul pulsante per verificare la tua mail. (Codice {{.Codice}}) Se non hai aggiunto una nuova email, ignora questa email.
|
||||
ButtonText: Verifica
|
||||
VerifyPhone:
|
||||
Title: ZITADEL - Verifica il telefono
|
||||
PreHeader: Verifica il telefono
|
||||
Subject: Verifica il telefono
|
||||
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||
Text: È stato aggiunto un nuovo numero di telefono. Usa il seguente codice per verificarlo {{.Code}}
|
||||
ButtonText: Verifica
|
||||
DomainClaimed:
|
||||
Title: ZITADEL - Il dominio è stato rivendicato
|
||||
PreHeader: Cambiare email / nome utente
|
||||
Subject: Il dominio è stato rivendicato
|
||||
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||
Text: Il dominio {{.Domain}} è stato rivendicato da un'organizzazione. Il tuo attuale utente {{.Username}} non fa parte di questa organizzazione. Perciò dovrai cambiare la tua email quando farai il login. Abbiamo creato un nome utente temporaneo ({{.TempUsername}}) per questo login.
|
||||
ButtonText: Accedi
|
||||
PasswordlessRegistration:
|
||||
Title: ZITADEL - Aggiungere autenticazione passwordless
|
||||
PreHeader: Aggiungi l'autenticazione passwordless
|
||||
Subject: Aggiungi l'autenticazione passwordless
|
||||
Greeting: 'Ciao {{.FirstName}} {{.LastName}},'
|
||||
Text: Abbiamo ricevuto una richiesta per aggiungere l'autenticazione passwordless. Usa il pulsante qui sotto per aggiungere il tuo token o dispositivo per il login senza password.
|
||||
ButtonText: Attiva passwordless
|
@ -18,7 +18,7 @@ Errors:
|
||||
SetPublicFailed: Bucket konnte nicht auf public gesetzt werden
|
||||
Object:
|
||||
PutFailed: Objekt konnte nicht erstellt werden
|
||||
GetFaieled: Objekt konnte nicht gelesen werden
|
||||
GetFailed: Objekt konnte nicht gelesen werden
|
||||
PresignedTokenFailed: Signiertes Token konnte nicht erstellt werden
|
||||
ListFailed: Objektliste konnte nicht gelesen werden
|
||||
RemoveFailed: Objekt konnte nicht gelöscht werden
|
||||
@ -190,7 +190,7 @@ Errors:
|
||||
NotExisting: Org IAM Policy existiert nicht
|
||||
AlreadyExists: Org IAM Policy existiert bereits
|
||||
Project:
|
||||
ProjectIDMissing: Project Id fehlt
|
||||
ProjectIDMissing: Project ID fehlt
|
||||
AlreadyExists: Project existiert bereits auf der Organisation
|
||||
OrgNotExisting: Organisation existiert nicht
|
||||
UserNotExisting: User existiert nicht
|
||||
@ -242,7 +242,7 @@ Errors:
|
||||
MemberInvalid: Member ist ungültig
|
||||
MemberAlreadyExisting: Member existiert bereits
|
||||
MemberNotExisting: Member existiert nicht
|
||||
IDMissing: Id fehlt
|
||||
IDMissing: ID fehlt
|
||||
GlobalOrgMissing: Globale Organisation fehlt
|
||||
GlobalOrgAlreadySet: Globale Organisation wurde bereits gesetzt
|
||||
IAMProjectIDMissing: IAM Project ID fehlt
|
||||
@ -266,7 +266,7 @@ Errors:
|
||||
IDP:
|
||||
AlreadyExists: Identitäts Provider existiert bereits
|
||||
NotExisting: Identitäts Provider existiert nicht
|
||||
Invalid: Idp Provider ist ungültig
|
||||
Invalid: IDP ist ungültig
|
||||
IDPConfig:
|
||||
AlreadyExists: Identitäts Provider Konfiguration existiert bereits
|
||||
NotInactive: Identitäts Provider Konfiguration nicht inaktive
|
||||
@ -325,7 +325,7 @@ Errors:
|
||||
NotFound: Benutzer Berechtigung konnte nicht gefunden werden
|
||||
Invalid: Benutzer Berechtigung ist ungültig
|
||||
NotChanged: Benutzer Berechtigung wurde nicht verändert
|
||||
IDMissing: Id fehlt
|
||||
IDMissing: ID fehlt
|
||||
NotActive: Benutzer Berechtigung ist nicht aktiv
|
||||
NotInactive: Benutzer Berechtigung ist nicht deaktiviert
|
||||
NoPermissionForProject: Benutzer hat keine Rechte auf diesem Projekt
|
||||
|
@ -17,8 +17,8 @@ Errors:
|
||||
RemoveFailed: Bucket not deleted
|
||||
SetPublicFailed: Could not set bucket to public
|
||||
Object:
|
||||
PutFailed: Objekt not created
|
||||
GetFaieled: Objekt could not be read
|
||||
PutFailed: Object not created
|
||||
GetFailed: Object could not be read
|
||||
PresignedTokenFailed: Signed token could not be created
|
||||
ListFailed: Objectlist could not be read
|
||||
RemoveFailed: Object could not be removed
|
||||
@ -74,7 +74,7 @@ Errors:
|
||||
Expired: Code is expired
|
||||
GeneratorAlgNotSupported: Unsupported generator algorithm
|
||||
Password:
|
||||
NotFound: Passoword not found
|
||||
NotFound: Password not found
|
||||
Empty: Password is empty
|
||||
Invalid: Password is invalid
|
||||
NotSet: User has not set a password
|
||||
@ -216,7 +216,7 @@ Errors:
|
||||
NotFound: Application not found
|
||||
Invalid: Application invalid
|
||||
NotExisting: Application doesn't exist
|
||||
NotActive:: Application is not active
|
||||
NotActive: Application is not active
|
||||
NotInactive: Application is not inactive
|
||||
OIDCConfigInvalid: OIDC configuration is invalid
|
||||
APIConfigInvalid: API configuration is invalid
|
||||
@ -285,7 +285,7 @@ Errors:
|
||||
AlreadyExists: Default Message Text already exists
|
||||
Invalid: Default Message Text is invalid
|
||||
PasswordComplexityPolicy:
|
||||
NotFound: Default Private Label Policy not found
|
||||
NotFound: Default Password Complexity Policy not found
|
||||
NotExisting: Default Password Complexity Policy not existing
|
||||
AlreadyExists: Default Password Complexity Policy already existing
|
||||
Empty: Default Password Complexity Policy empty
|
||||
@ -688,7 +688,7 @@ EventTypes:
|
||||
changed: Project member changed
|
||||
removed: Project member removed
|
||||
cascade:
|
||||
removeD: Project member cascade removed
|
||||
removed: Project member cascade removed
|
||||
role:
|
||||
added: Project role added
|
||||
changed: Project role changed
|
||||
|
836
internal/static/i18n/it.yaml
Normal file
836
internal/static/i18n/it.yaml
Normal file
@ -0,0 +1,836 @@
|
||||
Errors:
|
||||
Internal: Si è verificato un errore interno
|
||||
NoChangesFound: Nessun cambiamento
|
||||
OriginNotAllowed: Origine non consentita
|
||||
IDMissing: ID mancante
|
||||
ResourceOwnerMissing: Resource Owner mancante
|
||||
Assets:
|
||||
EmptyKey: Asset key vuoto
|
||||
Store:
|
||||
NotInitialized: Assets storage non inizializzato
|
||||
NotConfigured: Assets storage non configurato
|
||||
Bucket:
|
||||
Internal: Errore interno nella creazione
|
||||
AlreadyExists: Bucket già esistente
|
||||
CreateFailed: Bucket non creato
|
||||
ListFailed: I Bucket non possono essere letti
|
||||
RemoveFailed: Bucket non rimosso
|
||||
SetPublicFailed: Impossibile impostare Bucket
|
||||
Object:
|
||||
PutFailed: Oggetto non creato
|
||||
GetFailed: Oggetto non può essere letto
|
||||
PresignedTokenFailed: Il token non può essere creato
|
||||
ListFailed: La lista degli oggetti non può essere letta
|
||||
RemoveFailed: L'oggetto non può essere rimosso
|
||||
Limit:
|
||||
ExceedsDefault: Il limite supera quello predefinito
|
||||
User:
|
||||
NotFound: L'utente non è stato trovato
|
||||
AlreadyExists: L'utente già esistente
|
||||
NotFoundOnOrg: L'utente non è stato trovato nell'organizzazione scelta
|
||||
NotAllowedOrg: L'utente non è membro dell'organizzazione richiesta
|
||||
UserIDMissing: ID utente mancante
|
||||
OrgIamPolicyNil: Impostazione Org IAM mancante
|
||||
EmailAsUsernameNotAllowed: L'e-mail non è consentita come nome utente
|
||||
Invalid: I dati utente non sono validi
|
||||
DomainNotAllowedAsUsername: Il dominio è già riservato e non può essere utilizzato
|
||||
AlreadyInactive: Utente già inattivo
|
||||
NotInactive: L'utente non è inattivo
|
||||
ShouldBeActiveOrInitial: L'utente non è attivo o inizializzato
|
||||
AlreadyInitialised: L'utente è già inizializzato
|
||||
NotInitialised: L'utente non è ancora inizializzato
|
||||
NotLocked: L'utente non è bloccato
|
||||
NoChanges: Nessun cambiamento trovato
|
||||
InitCodeNotFound: Codice di inizializzazione non trovato
|
||||
UsernameNotChanged: Nome utente non cambiato
|
||||
Profile:
|
||||
NotFound: Profilo non trovato
|
||||
NotChanged: Profilo non cambiato
|
||||
Invalid: Dati non sono validi
|
||||
Email:
|
||||
NotFound: Email non trovata
|
||||
Invalid: L'e-mail non è valida
|
||||
AlreadyVerified: L'e-mail è già verificata
|
||||
NotChanged: Email non cambiata
|
||||
Phone:
|
||||
NotFound: Telefono non trovato
|
||||
Invalid: Il telefono non è valido
|
||||
AlreadyVerified: Telefono già verificato
|
||||
Address:
|
||||
NotFound: Indirizzo non trovato
|
||||
NotChanged: Indirizzo non cambiato
|
||||
Machine:
|
||||
Key:
|
||||
NotFound: Machine Key non trovato
|
||||
NotHuman: L'utente deve essere personale
|
||||
NotMachine: L'utente deve essere tecnico
|
||||
NotAllowedToLink: L'utente non è autorizzato a collegarsi con un provider di accesso esterno
|
||||
Username:
|
||||
AlreadyExists: Nome utente già preso
|
||||
Reservied: Il nome utente è già preso
|
||||
Code:
|
||||
Empty: Il codice è vuoto
|
||||
NotFound: Codice non trovato
|
||||
Expired: Il codice è scaduto
|
||||
GeneratorAlgNotSupported: L'algoritmo del generatore non è supportato
|
||||
Password:
|
||||
NotFound: Password non trovato
|
||||
Empty: La password è vuota
|
||||
Invalid: La password non è valida
|
||||
NotSet: L'utente non ha impostato una password
|
||||
PasswordComplexityPolicy:
|
||||
NotFound: Impostazioni di complessità password non trovati
|
||||
MinLength: La password è troppo corta
|
||||
MinLengthNotAllowed: La lunghezza minima non è consentita
|
||||
HasLower: La password deve contenere lettere minuscole
|
||||
HasUpper: La password deve contenere lettere maiuscole
|
||||
HasNumber: La password deve contenere un numero
|
||||
HasSymbol: La password deve contenere il simbolo
|
||||
ExternalIDP:
|
||||
Invalid: IDP esterno non valido
|
||||
IDPConfigNotExisting: IDP non valido per questa organizzazione
|
||||
NotAllowed: IDP esterno non consentito su questa organizzazione
|
||||
MinimumExternalIDPNeeded: Almeno un IDP deve essere aggiunto
|
||||
AlreadyExists: IDP esterno già preso
|
||||
NotFound: IDP esterno non trovato
|
||||
MFA:
|
||||
OTP:
|
||||
AlreadyReady: Multifattore OTP (OneTimePassword) è già impostato
|
||||
NotExisting: Multifattore OTP (OneTimePassword) non esistente
|
||||
NotReady: Multifattore OTP (OneTimePassword) non è pronto
|
||||
InvalidCode: Codice non valido
|
||||
U2F:
|
||||
NotExisting: U2F non esistente
|
||||
Passwordless:
|
||||
NotExisting: Passwordless non esistente
|
||||
WebAuthN:
|
||||
NotFound: WebAuthN Token non trovato
|
||||
BeginRegisterFailed: WebAuthN inizializzazione non riuscita
|
||||
MarshalError: Errore nel marshalling
|
||||
ErrorOnParseCredential: Errore nell'analisi dei dati delle credenziali
|
||||
CreateCredentialFailed: Errore nella creazione delle credenziali
|
||||
BeginLoginFailed: WebAuthN inizializzazione login fallito
|
||||
ValidateLoginFailed: Errore nella convalidazione delle credenziali
|
||||
CloneWarning: Le credenziali possono essere copiate
|
||||
RefreshToken:
|
||||
Invalid: Refresh Token non è valido
|
||||
NotFound: Refresh Token non trovato
|
||||
Org:
|
||||
AlreadyExists: Nome dell'organizzazione già preso
|
||||
Invalid: L'organizzazione non è valida
|
||||
AlreadyDeactivated: L'organizzazione è già disattivata
|
||||
AlreadyActive: L'organizzazione è già attiva
|
||||
Empty: L'organizzazione è vuota
|
||||
NotFound: Organizzazione non trovata
|
||||
NotChanged: Organizzazione non cambiata
|
||||
InvalidDomain: Dominio non valido
|
||||
DomainMissing: Dominio mancante
|
||||
DomainNotOnOrg: Il dominio non esistente nell'organizzazione
|
||||
DomainNotVerified: Il dominio non è verificato
|
||||
DomainAlreadyVerified: Il dominio è già verificato
|
||||
DomainVerificationTypeInvalid: Il tipo di verifica del dominio non è valido
|
||||
DomainVerificationMissing: La verifica del dominio non è ancora iniziata
|
||||
DomainVerificationFailed: Verifica del dominio fallita
|
||||
PrimaryDomainNotDeletable: Il dominio primario non deve essere cancellato
|
||||
DomainNotFound: Dominio non trovato
|
||||
MemberIDMissing: ID membro mancante
|
||||
MemberNotFound: Membro non trovato
|
||||
InvalidMember: Il membro dell'organizzazione non è valido
|
||||
UserIDMissing: ID utente mancante
|
||||
PolicyAlreadyExists: Impostazione già esistente
|
||||
PolicyNotExisting: Impostazione non esistente
|
||||
IdpInvalid: La configurazione dell'IDP non è valida
|
||||
IdpNotExisting: La configurazione IDP non esistente
|
||||
OIDCConfigInvalid: La configurazione OIDC IDP non è valida
|
||||
IdpIsNotOIDC: La configurazione IDP non è di tipo oidc
|
||||
Domain:
|
||||
AlreadyExists: Il dominio già esistente
|
||||
IDP:
|
||||
InvalidSearchQuery: Parametro di ricerca non valido
|
||||
LoginPolicy:
|
||||
NotFound: Impostazioni di accesso non trovati
|
||||
Invalid: Impostazioni di accesso non sono validi
|
||||
NotExisting: Impostazioni di accesso non esistenti
|
||||
AlreadyExists: Impostazioni di accesso già esistenti
|
||||
IdpProviderAlreadyExisting: IDP già esistente
|
||||
IdpProviderNotExisting: IDP non esistente
|
||||
MFA:
|
||||
AlreadyExists: Multifactor già esistente
|
||||
NotExisting: Multifattore non esistente
|
||||
Unspecified: Multifattore non valido
|
||||
MailTemplate:
|
||||
NotFound: Mail template predefinito non trovato
|
||||
NotChanged: Mail template predefinito non è stato cambiato
|
||||
AlreadyExists: Mail template predefinito già esistente
|
||||
Invalid: Mail template predefinito non è valido
|
||||
CustomMessageText:
|
||||
NotFound: Testo predefinito non trovato
|
||||
NotChanged: Il testo predefinito non è stato cambiato
|
||||
AlreadyExists: Il testo predefinito già eistente
|
||||
Invalid: Il testo predefinito non è valido
|
||||
PasswordComplexity:
|
||||
NotFound: Impostazioni di complessità della password non trovati
|
||||
Empty: Mancano le impostazioni di complessità della password
|
||||
NotExisting: Impostazioni di complessità della password non esistenti
|
||||
AlreadyExists: Impostazioni di complessità della password sono già esistenti
|
||||
PasswordLockout:
|
||||
NotFound: Impostazioni di blocco della password non trovati
|
||||
Empty: Mancano le impostazioni di blocco della password
|
||||
NotExisting: Le impostazioni di blocco della password non esistenti
|
||||
AlreadyExists: Le impostazioni di blocco della password sono già esistenti
|
||||
PasswordAge:
|
||||
NotFound: Impostazioni di validità della password
|
||||
Empty: Impostazioni di validità della password mancanti
|
||||
NotExisting: Impostazioni di validità della password non esistenti
|
||||
AlreadyExists: Impostazioni di validità della password sono già esistenti
|
||||
OrgIAM:
|
||||
Empty: Mancano le impostazioni Org IAM
|
||||
NotExisting: Impostazioni Org IAM non esistenti
|
||||
AlreadyExists: Impostazioni Org IAM già esistenti
|
||||
Project:
|
||||
ProjectIDMissing: ID del progetto mancante
|
||||
AlreadyExists: Il progetto è già stato creato nell'organizzazione
|
||||
OrgNotExisting: L'organizzazione non esistente
|
||||
UserNotExisting: L'utente non esistente
|
||||
CouldNotGenerateClientSecret: Impossibile generare il segreto del cliente
|
||||
Invalid: Il progetto non è valido
|
||||
NotActive: Il progetto non è attivo
|
||||
NotInactive: Il progetto non è disattivato
|
||||
NotFound: Progetto non trovato
|
||||
UserIDMissing: ID utente mancante
|
||||
Member:
|
||||
NotFound: Membro del progetto non trovato
|
||||
Invalid: Il membro del progetto non è valido
|
||||
AlreadyExists: Il membro del progetto già esistente
|
||||
NotExisting: Il membro del progetto non esistente
|
||||
MinimumOneRoleNeeded: Almeno un ruolo deve essere aggiunto
|
||||
Role:
|
||||
AlreadyExists: Ruolo è già esistente
|
||||
Invalid: Ruolo non è valido
|
||||
NotExisting: Ruolo non esistente
|
||||
IDMissing: ID mancante
|
||||
App:
|
||||
AlreadyExists: L'applicazione già esistente
|
||||
NotFound: Applicazione non trovata
|
||||
Invalid: Applicazione non valida
|
||||
NotExisting: L'applicazione non esiste
|
||||
NotActive: L'applicazione non è attiva
|
||||
NotInactive: L'applicazione non è inattiva
|
||||
OIDCConfigInvalid: La configurazione OIDC non è valida
|
||||
APIConfigInvalid: La configurazione API non è valida
|
||||
IsNotOIDC: L'applicazione non è di tipo oidc
|
||||
IsNotAPI: L'applicazione non è di tipo API
|
||||
OIDCAuthMethodNoSecret: Il metodo di autorizzazione OIDC scelto non richiede un segreto
|
||||
APIAuthMethodNoSecret: Il metodo di autorizzazione API scelto non richiede un segreto
|
||||
AuthMethodNoPrivateKeyJWT: Il metodo di autorizzazione scelto non richiede una chiave
|
||||
ClientSecretInvalid: Il segreto del cliente non è valido
|
||||
RequiredFieldsMissing: Mancano alcuni campi obbligatori
|
||||
Grant:
|
||||
AlreadyExists: Grant del progetto già esistente
|
||||
NotFound: Grant non trovato
|
||||
Invalid: Grant del progetto non è valido
|
||||
NotExisting: Grant del progetto non esistente
|
||||
HasNotExistingRole: Uno dei ruoli assegnati non è esistente nel progetto
|
||||
NotActive: Grant del progetto non è attivo
|
||||
NotInactive: Grant del progetto non è inattivo
|
||||
UserIDMisisng: ID utente mancante
|
||||
IAM:
|
||||
Member:
|
||||
RolesNotChanged: I ruoli non sono stati cambiati
|
||||
MemberInvalid: Il membro non è valido
|
||||
MemberAlreadyExisting: Il membro già esistente
|
||||
MemberNotExisting: Il membro non esistente
|
||||
IDMissing: ID mancante
|
||||
GlobalOrgMissing: Manca un'organizzazione globale
|
||||
GlobalOrgAlreadySet: L'organizzazione globale è già stata impostata
|
||||
IAMProjectIDMissing: Manca l'ID del progetto IAM
|
||||
IamProjectAlreadySet: L'ID del progetto IAM è già stato impostato
|
||||
IdpInvalid: La configurazione dell'IDP non è valida
|
||||
IdpNotExisting: La configurazione IDP non esiste
|
||||
OIDCConfigInvalid: La configurazione OIDC IDP non è valida
|
||||
IdpIsNotOIDC: La configurazione IDP non è di tipo OIDC
|
||||
LoginPolicyInvalid: Impostazioni di accesso non sono validi
|
||||
LoginPolicyNotExisting: Impostazioni di accesso non esistenti
|
||||
IdpProviderInvalid: IDP non è valido
|
||||
LoginPolicy:
|
||||
NotFound: Impostazioni di accesso predefinite non trovate
|
||||
NotChanged: Le impostazioni di accesso predefinite non sono state cambiate
|
||||
NotExisting: Impostazioni di accesso predefinite non esistenti
|
||||
AlreadyExists: Impostazioni di accesso predefinite già esistenti
|
||||
MFA:
|
||||
AlreadyExists: Multifattore già esistente
|
||||
NotExisting: Multifattore non esistente
|
||||
Unspecified: Multifattore non valido
|
||||
IDP:
|
||||
AlreadyExists: IDP già esistente
|
||||
NotExisting: IDP non esiste
|
||||
Invalid: IDP non valido
|
||||
IDPConfig:
|
||||
AlreadyExists: La configurazione del IDP già esistente
|
||||
NotInactive: Configurazione del IDP non inattiva
|
||||
NotActive: Configurazione del IDP non attiva
|
||||
LabelPolicy:
|
||||
NotFound: Private Labelling predefinita non trovata
|
||||
NotChanged: Private Labelling non è stata cambiata
|
||||
MailTemplate:
|
||||
NotFound: Mail template predefinito non trovato
|
||||
NotChanged: Mail template predefinito non è stato cambiato
|
||||
AlreadyExists: Mail template predefinito già esistente
|
||||
Invalid: Mail template predefinito non è valido
|
||||
CustomMessageText:
|
||||
NotFound: Testo del mail predefinito non trovato
|
||||
NotChanged: Il testo predefinito del mail non è stato cambiato
|
||||
AlreadyExists: Il testo del mail predefinito già esistente
|
||||
Invalid: Il testo del mail predefinito non è valido
|
||||
PasswordComplexityPolicy:
|
||||
NotFound: Impostazioni di complessità della password predefinite non trovati
|
||||
NotExisting: Impostazioni di complessità della password predefinite non esistenti
|
||||
AlreadyExists: Impostazioni di complessità della password predefinite già esistenti
|
||||
Empty: Le impostazioni di complessità della password predefinite non sono state trovate
|
||||
NotChanged: Le impostazioni di complessità della password predefinite non sono state cambiate
|
||||
PasswordAgePolicy:
|
||||
NotFound: Le impostazioni di validità della password predefinite non trovate
|
||||
NotExisting: Le impostazioni di validità della password predefinite non esistono
|
||||
AlreadyExists: Le impostazioni di validità della password predefinite già esistenti
|
||||
Empty: Le impostazioni di validità della password predefinite vuote
|
||||
NotChanged: Le impostazioni di validità della password non sono state cambiate
|
||||
PasswordLockoutPolicy:
|
||||
NotFound: Impostazioni di blocco della password predefinite non trovate
|
||||
NotExisting: Impostazioni di blocco della password predefinite non esistenti
|
||||
AlreadyExists: Impostazioni di blocco della password predefinite già esistenti
|
||||
Empty: Impostazioni di blocco della password predefinite sono vuote
|
||||
NotChanged: Le impostazioni di blocco della password predefinite non sono state cambiate
|
||||
OrgIAMPolicy:
|
||||
NotFound: Impostazioni Org IAM non trovate
|
||||
Empty: Impostazioni Org IAM mancanti
|
||||
NotExisting: Impostazioni Org IAM non esistenti
|
||||
AlreadyExists: Impostazioni Org IAM già esistenti
|
||||
NotChanged: Impostazioni Org IAM non sono state cambiate
|
||||
Policy:
|
||||
AlreadyExists: Impostazioni già esistenti
|
||||
Label:
|
||||
Invalid:
|
||||
PrimaryColor: Il colore primario non è un valore di colore HEX valido
|
||||
BackgroundColor: Il colore di sfondo non è un valore di colore HEX valido
|
||||
WarnColor: Warn color non è un valore di colore HEX valido
|
||||
FontColor: Il colore del carattere non è un valore di colore HEX valido
|
||||
PrimaryColorDark: Il colore primario (modo scuro) non è un valore di colore HEX valido
|
||||
BackgroundColorDark: Il colore di sfondo (modo scuro) non è un valore di colore HEX valido
|
||||
WarnColorDark: Warn color (dark mode) non è un valore di colore HEX valido
|
||||
FontColorDark: Il colore del carattere (modalità scura) non è un valore di colore HEX valido
|
||||
UserGrant:
|
||||
AlreadyExists: User Grant già esistente
|
||||
NotFound: User Grant non trovato
|
||||
Invalid: User Grant non è valido
|
||||
NotChanged: User Grant non è stata cambiato
|
||||
IDMissing: ID mancante
|
||||
NotActive: User Grant non è attivo
|
||||
NotInactive: User Grant non è disattivato
|
||||
NoPermissionForProject: L'utente non ha permessi su questo progetto
|
||||
RoleKeyNotFound: Ruolo non trovato
|
||||
Member:
|
||||
AlreadyExists: Il membro è già esistente
|
||||
IDPConfig:
|
||||
AlreadyExists: La configurazione IDP con questo nome già esistente
|
||||
NotExisting: La configurazione del IDP non esiste
|
||||
Changes:
|
||||
NotFound: Nessuna storia trovata
|
||||
Token:
|
||||
NotFound: Token non trovato
|
||||
UserSession:
|
||||
NotFound: Sessione non trovata
|
||||
Key:
|
||||
ExpireBeforeNow: La data di scadenza è passata
|
||||
Login:
|
||||
LoginPolicy:
|
||||
MFA:
|
||||
ForceAndNotConfigured: Multifactor è configurato come richiesto, ma nessun provider è configurato. Contatta il tuo amministratore di sistema.
|
||||
Step:
|
||||
Started:
|
||||
AlreadyExists: Il passo iniziato già esistente
|
||||
Done:
|
||||
AlreadyExists: Il passo fatto già esistente
|
||||
Features:
|
||||
NotChanged: La caratteristica non è cambiata
|
||||
CustomText:
|
||||
AlreadyExists: Il testo personalizzato già esistente
|
||||
Invalid: Testo personalizzato non valido
|
||||
NotFound: Testo personalizzato non trovato
|
||||
TranslationFile:
|
||||
ReadError: Errore nella lettura del file di traduzione
|
||||
MergeError: Il file di traduzione non può essere unito alle traduzioni personalizzate
|
||||
NotFound: Il file di traduzione non esiste
|
||||
MetaData:
|
||||
NotFound: Metadati non trovati
|
||||
NoData: L'elenco dei metadati è vuoto
|
||||
Invalid: I metadati non sono validi
|
||||
KeyNotExisting: Una o più chiavi non esistono
|
||||
Action:
|
||||
Invalid: L'azione non è valida
|
||||
NotFound: L'azione non trovata
|
||||
NotActive: L'azione non è attiva
|
||||
NotInactive: L'azione non è inattiva
|
||||
Flow:
|
||||
FlowTypeMissing: FlowType mancante
|
||||
Empty: Flow è già vuoto
|
||||
WrongTriggerType: TriggerType non è valido
|
||||
NoChanges: Nessun cambiamento
|
||||
ActionIDsNotExist: Gli ActionID non esistono
|
||||
Query:
|
||||
CloseRows: Lo statement SQL non può essere terminato
|
||||
SQLStatement: Lo statement SQL non può essere creato
|
||||
InvalidRequest: La richiesta non è valida
|
||||
EventTypes:
|
||||
user:
|
||||
added: Utente aggiunto
|
||||
selfregistered: L'utente si è registrato
|
||||
initialization:
|
||||
code:
|
||||
added: Codice di inizializzazione generato
|
||||
sent: Codice di inizializzazione inviato
|
||||
check:
|
||||
succeeded: Controllo dell'inizializzazione riuscito
|
||||
failed: Controllo dell'inizializzazione fallito
|
||||
token:
|
||||
added: Access Token creato
|
||||
username:
|
||||
reserved: Nome utente riservato
|
||||
released: Nome utente rilasciato
|
||||
email:
|
||||
reserved: Indirizzo e-mail riservato
|
||||
released: Indirizzo e-mail rilasciato
|
||||
changed: Indirizzo e-mail cambiato
|
||||
verified: Indirizzo e-mail verificato
|
||||
verification:
|
||||
failed: Verifica dell'indirizzo e-mail non riuscita
|
||||
code:
|
||||
added: Codice di verifica dell'indirizzo e-mail generato
|
||||
sent: Codice di verifica dell'indirizzo e-mail inviato
|
||||
machine:
|
||||
added: Utente tecnico aggiunto
|
||||
changed: Utente tecnico cambiato
|
||||
key:
|
||||
added: Chiave aggiunta
|
||||
removed: Chiave rimossa
|
||||
human:
|
||||
added: Persona aggiunta
|
||||
selfregistered: Persona registrata
|
||||
avatar:
|
||||
added: Avatar aggiunto
|
||||
removed: Avatar rimosso
|
||||
initialization:
|
||||
code:
|
||||
added: Codice di inizializzazione generato
|
||||
sent: Codice di inizializzazione inviato
|
||||
check:
|
||||
succeeded: Controllo dell'inizializzazione riuscito
|
||||
failed: Controllo dell'inizializzazione fallito
|
||||
username:
|
||||
reserved: Nome utente riservato
|
||||
released: Nome utente rilasciato
|
||||
email:
|
||||
changed: Indirizzo e-mail cambiato
|
||||
verified: Indirizzo e-mail verificato
|
||||
verification:
|
||||
failed: Verificazione dell'indirizzo e-mail non riuscita
|
||||
code:
|
||||
added: Codice di verifica generato
|
||||
sent: Codice di verifica inviato
|
||||
password:
|
||||
changed: Password cambiata
|
||||
code:
|
||||
added: Codice password generato
|
||||
sent: Codice password inviato
|
||||
check:
|
||||
succeeded: Controllo della password riuscito
|
||||
failed: Controllo della password fallito
|
||||
externallogin:
|
||||
check:
|
||||
succeeded: Accesso esterno riuscito
|
||||
externalidp:
|
||||
added: IDP esterno aggiunto
|
||||
removed: IDP esterno rimosso
|
||||
cascade:
|
||||
removed: Cascata IDP rimossa
|
||||
phone:
|
||||
changed: Numero di telefono cambiato
|
||||
verified: Numero di telefono verificato
|
||||
verification:
|
||||
failed: Verificazione del numero di telefono non riuscita
|
||||
code:
|
||||
added: Codice del numero di telefono generato
|
||||
sent: Codice del numero di telefono inviato
|
||||
removed: Numero di telefono rimosso
|
||||
profile:
|
||||
changed: Profilo cambiato
|
||||
address:
|
||||
changed: Indirizzo cambiato
|
||||
mfa:
|
||||
otp:
|
||||
added: OTP aggiunto
|
||||
verified: OTP verificato
|
||||
removed: OTP rimosso
|
||||
check:
|
||||
succeeded: Controllo OTP riuscito
|
||||
failed: Controllo OTP fallito
|
||||
u2f:
|
||||
token:
|
||||
added: Aggiunto il U2F Token
|
||||
verified: U2F Token verificato
|
||||
removed: U2F Token rimosso
|
||||
begin:
|
||||
login: Controllo U2F avviato
|
||||
check:
|
||||
succeeded: Controllo U2F riuscito
|
||||
failed: Controllo U2F fallito
|
||||
signcount:
|
||||
changed: Il checksum del U2F Token è stato cambiato
|
||||
init:
|
||||
skipped: Inizializzazione saltata
|
||||
passwordless:
|
||||
token:
|
||||
added: Aggiunto il token per l'autenticazione passwordless
|
||||
verified: Token per l'autenticazione passwordless verificato
|
||||
removed: Token per l'autenticazione passwordless rimosso
|
||||
begin:
|
||||
login: Avviata l'autenticazione passwordless
|
||||
check:
|
||||
succeeded: Controllo dell'autenticazione passwordless riuscito
|
||||
failed: Controllo dell'autenticazione passwordless fallito
|
||||
signcount:
|
||||
changed: Il checksum è stato cambiato
|
||||
initialization:
|
||||
code:
|
||||
added: Aggiunto il codice di inizializzazione
|
||||
sent: Codice di inizializzazione inviato
|
||||
requested: Richiesta del codice di inizializzazione
|
||||
check:
|
||||
succeeded: Codice di inizializzazione controllato con successo
|
||||
failed: Controllo del codice di inizializzazione fallito
|
||||
signed:
|
||||
out: L'utente è uscito
|
||||
refresh:
|
||||
token:
|
||||
added: Refresh Token creato
|
||||
renewed: Refresh Token rinnovato
|
||||
removed: Refresh Token rimosso
|
||||
locked: Utente bloccato
|
||||
unlocked: Utente sbloccato
|
||||
deactivated: Utente disattivato
|
||||
reactivated: Utente riattivato
|
||||
removed: Utente rimosso
|
||||
password:
|
||||
changed: Password cambiata
|
||||
code:
|
||||
added: Codice password generato
|
||||
sent: Codice password inviato
|
||||
check:
|
||||
succeeded: Controllo della password riuscito
|
||||
failed: Controllo della password fallito
|
||||
phone:
|
||||
changed: Numero di telefono cambiato
|
||||
verified: Numero di telefono verificato
|
||||
verification:
|
||||
failed: Verifica del numero di telefono non riuscita
|
||||
code:
|
||||
added: Codice del numero di telefono generato
|
||||
sent: Codice del numero di telefono inviato
|
||||
profile:
|
||||
changed: Profilo utente cambiato
|
||||
address:
|
||||
changed: Indirizzo utente cambiato
|
||||
mfa:
|
||||
otp:
|
||||
added: OTP aggiunto
|
||||
verified: OTP verificato
|
||||
removed: OTP rimosso
|
||||
check:
|
||||
succeeded: Controllo OTP riuscito
|
||||
failed: Controllo OTP fallito
|
||||
init:
|
||||
skipped: Inizializzazione saltata
|
||||
signed:
|
||||
out: L'utente è uscito
|
||||
grant:
|
||||
added: Autorizzazione aggiunta
|
||||
changed: Autorizzazione cambiata
|
||||
removed: Autorizzazione rimossa
|
||||
deactivated: Autorizzazione disattivata
|
||||
reactivated: Autorizzazione riattivata
|
||||
reserved: Autorizzazione riservata
|
||||
released: Autorizzazione rilasciata
|
||||
cascade:
|
||||
removed: Autorizzazione rimossa
|
||||
changed: Autorizzazione cambiata
|
||||
org:
|
||||
added: Organizzazione aggiunta
|
||||
changed: Organizzazione cambiata
|
||||
deactivated: Organizzazione disattivata
|
||||
reactivated: Organizzazione riattivata
|
||||
removed: Organizzazione rimossa
|
||||
domain:
|
||||
added: Dominio aggiunto
|
||||
verification:
|
||||
added: Aggiunta la verifica del dominio
|
||||
failed: Verifica del dominio fallita
|
||||
verified: Dominio verificato
|
||||
removed: Dominio rimosso
|
||||
primary:
|
||||
set: Set di dominio primario
|
||||
reserved: Dominio riservato
|
||||
released: Dominio rilasciato
|
||||
features:
|
||||
set: Caratteristica aggiunta
|
||||
removed: Caratteristica rimossa
|
||||
name:
|
||||
reserved: Nome dell'organizzazione riservato
|
||||
released: Nome dell'organizzazione rilasciata
|
||||
member:
|
||||
added: Membro dell'organizzazione aggiunto
|
||||
changed: Membro dell'organizzazione cambiato
|
||||
removed: Membro dell'organizzazione rimosso
|
||||
cascade:
|
||||
removeD: Cascata di membri dell'organizzazione rimossa
|
||||
iam:
|
||||
policy:
|
||||
added: Impostazioni IAM aggiunti
|
||||
changed: Impostazioni IAM cambiate
|
||||
removed: Impostazioni IAM rimosse
|
||||
idp:
|
||||
config:
|
||||
added: Configurazione IDP aggiunta
|
||||
changed: Configurazione IDP cambiata
|
||||
removed: Configurazione IDP rimossa
|
||||
deactivated: Configurazione IDP disattivata
|
||||
reactivated: Configurazione IDP riattivata
|
||||
oidc:
|
||||
config:
|
||||
added: Aggiunta la configurazione IDP OIDC
|
||||
changed: Configurazione IDP OIDC modificata
|
||||
saml:
|
||||
config:
|
||||
added: Aggiunta la configurazione IDP SAML
|
||||
changed: Configurazione IDP SAML modificata
|
||||
customtext:
|
||||
set: Testo personalizzato salvato
|
||||
removed: Testo personalizzato rimosso
|
||||
template:
|
||||
removed: Template personalizzato rimosso
|
||||
policy:
|
||||
login:
|
||||
added: Le mpostazioni di accesso sono state aggiunte con successo.
|
||||
changed: Impostazioni di accesso modificate
|
||||
removed: Impostazioni di accesso rimosse
|
||||
idpprovider:
|
||||
added: IDP aggiunto alle impostazioni di accesso
|
||||
removed: IDP rimosso dalle impostazioni di accesso
|
||||
secondfactor:
|
||||
added: Secondo fattore aggiunto alle impostazioni di accesso
|
||||
removed: Secondo fattore rimosso dalle impostazioni di accesso
|
||||
multifactor:
|
||||
added: Aggiunto il fattore multiplo alle impostazioni di accesso
|
||||
removed: Fattore multiplo rimosso dalle impostazioni di accesso
|
||||
password:
|
||||
complexity:
|
||||
added: Le impostazioni di complessità delle password sono state aggiunte con successo
|
||||
changed: Le impostazioni di complessità delle password sono state cambiate
|
||||
removed: Le impostazioni di complessità della password sono state rimosse
|
||||
age:
|
||||
added: Le impostazioni di validità della password
|
||||
changed: Le impostazioni di validità della password sono state cambiate
|
||||
removed: Le impostazioni di validità della password sono state rimosse con successo
|
||||
lockout:
|
||||
added: Le impostazioni di blocco della password sono state aggiunte con successo.
|
||||
changed: Le impostazioni di blocco della password sono state cambiate
|
||||
removed: Le impostazioni di blocco della password sono state rimosse con successo
|
||||
label:
|
||||
added: Impostazioni Private Labelling aggiunte
|
||||
changed: Impostazioni Private Labelling cambiate
|
||||
activated: Impostazioni Private Labelling attivate
|
||||
removed: Impostazioni Private Labelling rimosse
|
||||
logo:
|
||||
added: Logo aggiunto
|
||||
removed: Logo rimosso
|
||||
dark:
|
||||
added: Logo (modalità scura) aggiunto
|
||||
removed: Logo (modalità scura) rimosso
|
||||
icon:
|
||||
added: Icona aggiunta
|
||||
removed: Icona rimossa
|
||||
dark:
|
||||
added: Icona (modalità scura) aggiunta
|
||||
removed: Icona (modalità scura) rimossa
|
||||
font:
|
||||
added: Font aggiunto
|
||||
removed: Font rimosso
|
||||
assets:
|
||||
removed: Asset rimosse
|
||||
privacy:
|
||||
added: Informativa sulla privacy e termini e condizioni aggiunti
|
||||
changed: Informativa sulla privacy e termini e condizioni cambiati
|
||||
removed: Informativa sulla privacy e termini e condizioni rimossi
|
||||
flow:
|
||||
trigger_actions:
|
||||
set: azioni salvate
|
||||
cascade:
|
||||
removed: Azioni a cascata rimosse
|
||||
removed: Azioni rimosse
|
||||
project:
|
||||
added: Progetto aggiunto
|
||||
changed: Progetto cambiato
|
||||
deactivated: Progetto disattivato
|
||||
reactivated: Progetto riattivato
|
||||
removed: Progetto rimosso
|
||||
member:
|
||||
added: Membro del progetto aggiunto
|
||||
changed: Membro del progetto cambiato
|
||||
removed: Membro del progetto rimosso
|
||||
cascade:
|
||||
removeD: Cascata di membri del progetto rimossa
|
||||
role:
|
||||
added: Ruolo del progetto aggiunto
|
||||
changed: Il ruolo del progetto è cambiato
|
||||
removed: Ruolo del progetto rimosso
|
||||
grant:
|
||||
added: Grant aggiunto
|
||||
changed: Grant cambiato
|
||||
removed: Grant rimosso
|
||||
deactivated: Grant disattivato
|
||||
reactivated: Grant riattivato
|
||||
cascade:
|
||||
changed: Grant cambiato
|
||||
member:
|
||||
added: Grant Member aggiunto
|
||||
changed: Grant Member cambiato
|
||||
removed: Grant Member rimosso
|
||||
cascade:
|
||||
removed: Cascata di Grant Member rimossa
|
||||
application:
|
||||
added: Applicazione aggiunta
|
||||
changed: Applicazione cambiata
|
||||
removed: Applicazione rimossa
|
||||
deactivated: Applicazione disattivata
|
||||
reactivated: Applicazione riattivata
|
||||
oidc:
|
||||
secret:
|
||||
check:
|
||||
succeeded: Validazione OIDC Client Secret riuscita
|
||||
failed: VAidazione OIDC Client Secret fallita
|
||||
key:
|
||||
added: Chiave di applicazione aggiunta
|
||||
removed: Chiave di applicazione rimossa
|
||||
config:
|
||||
oidc:
|
||||
added: Configurazione OIDC aggiunta
|
||||
changed: Configurazione OIDC modificata
|
||||
secret:
|
||||
changed: Segreto OIDC cambiato
|
||||
api:
|
||||
added: Configurazione API aggiunta
|
||||
changed: Configurazione API modificata
|
||||
secret:
|
||||
changed: Segreto API cambiato
|
||||
policy:
|
||||
password:
|
||||
complexity:
|
||||
added: Le impostazioni di complessità delle password sono state aggiunte con successo
|
||||
changed: Le impostazioni di complessità delle password sono state cambiate
|
||||
age:
|
||||
added: Le impostazioni di validità della password sono state aggiunte con successo.
|
||||
changed: Le impostazioni di validità della password sono state cambiate
|
||||
lockout:
|
||||
added: Le impostazioni di blocco della password sono state aggiunte.
|
||||
changed: Le impostazioni di blocco della password sono state cambiate.
|
||||
iam:
|
||||
setup:
|
||||
started: Avviato il setup di ZITADEL
|
||||
done: setup di ZITADEL fatto
|
||||
global:
|
||||
org:
|
||||
set: Organizzazione glabale di ZITADEL salvata
|
||||
project:
|
||||
iam:
|
||||
set: progetto ZITADEL salvato
|
||||
member:
|
||||
added: ZITADEL membro aggiunto
|
||||
changed: ZITADEL membro cambiato
|
||||
removed: ZITADEL membro rimosso
|
||||
cascade:
|
||||
removeD: Membro ZITADEL rimosso a cascata
|
||||
idp:
|
||||
config:
|
||||
added: Configurazione IDP aggiunta
|
||||
changed: Configurazione IDP cambiata
|
||||
removed: Configurazione IDP rimossa
|
||||
deactivated: Configurazione IDP disattivata
|
||||
reactivated: Configurazione IDP riattivata
|
||||
oidc:
|
||||
config:
|
||||
added: Aggiunta la configurazione IDP OIDC
|
||||
changed: Configurazione IDP OIDC modificata
|
||||
saml:
|
||||
config:
|
||||
added: Aggiunta la configurazione IDP SAML
|
||||
changed: Configurazione IDP SAML modificata
|
||||
policy:
|
||||
login:
|
||||
added: Le impostazioni di accesso predefinite sono state aggiunte.
|
||||
changed: Le impostazioni di accesso predefinite sono state cambiate.
|
||||
idpprovider:
|
||||
added: IDP aggiunto alle impostazioni di accesso predefinite
|
||||
removed: IDP rimosso dalle impostazioni di accesso predefinite
|
||||
label:
|
||||
added: Le impostazioni Private Labelling sono state aggiunte.
|
||||
changed: Le impostazioni Private Labelling sono state cambiate.
|
||||
activated: Private Labelling attivato
|
||||
logo:
|
||||
added: Logo aggiunto
|
||||
removed: Logo rimosso
|
||||
dark:
|
||||
added: Logo (modalità scura) aggiunto
|
||||
removed: Logo (modalità scura) rimosso
|
||||
icon:
|
||||
added: Icona aggiunta
|
||||
removed: Icona rimossa
|
||||
dark:
|
||||
added: Icona (modalità scura) aggiunta
|
||||
removed: Icona (modalità scura) rimossa
|
||||
font:
|
||||
added: Font aggiunto
|
||||
removed: Font rimosso
|
||||
assets:
|
||||
removed: Asset rimosse
|
||||
key_pair:
|
||||
added: Keypair aggiunto
|
||||
action:
|
||||
added: Azione aggiunta
|
||||
changed: Azione cambiata
|
||||
deactivated: Azione disattivata
|
||||
reactivated: Azione riattivata
|
||||
removed: Azione rimossa
|
||||
Application:
|
||||
OIDC:
|
||||
V1:
|
||||
NotCompliant: La tua configurazione non è conforme e differisce dallo standard OIDC 1.0.
|
||||
NoRedirectUris: Deve essere registrato almeno un URI di reindirizzamento.
|
||||
NotAllCombinationsAreAllowed: La configurazione è conforme, ma non tutte le combinazioni possibili sono permesse.
|
||||
Code:
|
||||
RedirectUris:
|
||||
HttpOnlyForWeb: Grant Type Implicit consente reindirizzamenti http solo per AppType Web
|
||||
CustomOnlyForNative: Grant Type permette solo URI di reindirizzamento personalizzati per AppType native (ad esempio appname:// )
|
||||
Implicit:
|
||||
RedirectUris:
|
||||
CustomNotAllowed: Grant Type non permette URI di reindirizzamento personalizzati
|
||||
HttpNotAllowed: Grant Type implicito non permette URI di reindirizzamento http
|
||||
HttpLocalhostOnlyForNative: http://localhost redirect uri è consentito solo per le applicazioni native.
|
||||
Native:
|
||||
AuthMethodType:
|
||||
NotNone: Le applicazioni native dovrebbero avere authmethodtype none.
|
||||
RedirectUris:
|
||||
MustBeHttpLocalhost: Gli URI di reindirizzamento devono iniziare con il proprio protocollo, http://127.0.0.1, http://[::1] o http://localhost.
|
||||
UserAgent:
|
||||
AuthMethodType:
|
||||
NotNone: L'app agente utente dovrebbe avere authmethodtype none.
|
||||
GrantType:
|
||||
Refresh:
|
||||
NoAuthCode: Refresh Token consentito solo in combinazione con Authorization Code.
|
@ -103,7 +103,7 @@ InitMFAU2F:
|
||||
ErrorRetry: Retry, create a new challenge or choose a different method.
|
||||
|
||||
InitMFADone:
|
||||
Title: Multifcator Verification done
|
||||
Title: Multifactor Verification done
|
||||
Description: Multifactor verification successfully done. The multifactor has to be entered on each login.
|
||||
NextButtonText: next
|
||||
CancelButtonText: cancel
|
||||
@ -114,7 +114,7 @@ MFAProvider:
|
||||
ChooseOther: or choose an other option
|
||||
|
||||
VerifyMFAOTP:
|
||||
Title: Verify Multificator
|
||||
Title: Verify Multifactor
|
||||
Description: Verify your multifactor
|
||||
CodeLabel: Code
|
||||
NextButtonText: next
|
||||
@ -122,8 +122,8 @@ VerifyMFAOTP:
|
||||
VerifyMFAU2F:
|
||||
Title: Multifactor Verification
|
||||
Description: Verify your multifactor U2F / WebAuthN token
|
||||
NotSupported: WebAuthN wird durch deinen Browser nicht unterstützt. Stelle sicher, dass du die aktuelle Version installiert hast oder nutze einen anderen (z.B. Chrome, Safari, Firefox)
|
||||
ErrorRetry: Versuche es erneut, erstelle eine neue Abfrage oder wähle einen andere Methode.
|
||||
NotSupported: WebAuthN is not supported by your browser. Make sure you are using the newest version or change your browser to a supported one (Chrome, Safari, Firefox)
|
||||
ErrorRetry: Retry, create a new request or choose a other method.
|
||||
ValidateTokenButtonText: Validate Token
|
||||
|
||||
Passwordless:
|
||||
@ -173,7 +173,7 @@ PasswordChangeDone:
|
||||
|
||||
PasswordResetDone:
|
||||
Title: Reset link set
|
||||
Description: Check your email to to reset your password.
|
||||
Description: Check your email to reset your password.
|
||||
NextButtonText: next
|
||||
|
||||
EmailVerification:
|
||||
|
365
internal/ui/login/static/i18n/it.yaml
Normal file
365
internal/ui/login/static/i18n/it.yaml
Normal file
@ -0,0 +1,365 @@
|
||||
Login:
|
||||
Title: Bentornato!
|
||||
Description: Inserisci i tuoi dati di accesso.
|
||||
TitleLinking: Accesso per il collegamento degli utenti
|
||||
DescriptionLinking: Inserisci i tuoi dati di accesso per collegare il tuo utente esterno con un utente ZITADEL.
|
||||
LoginNameLabel: Nome di accesso
|
||||
UsernamePlaceHolder: nome utente
|
||||
LoginnamePlaceHolder: nomeutente@dominio
|
||||
ExternalUserDescription: Accedi con un utente esterno.
|
||||
MustBeMemberOfOrg: 'L''utente deve essere membro dell''organizzazione {{.OrgName}}.'
|
||||
RegisterButtonText: registrare
|
||||
NextButtonText: Avanti
|
||||
|
||||
SelectAccount:
|
||||
Title: Seleziona l'account
|
||||
Description: Usa il tuo account ZITADEL
|
||||
TitleLinking: Seleziona l'account per il collegamento dell'utente
|
||||
DescriptionLinking: Seleziona il tuo account da collegare al tuo utente esterno.
|
||||
OtherUser: Altro utente
|
||||
SessionState0: attivo
|
||||
SessionState1: inattivo
|
||||
MustBeMemberOfOrg: 'L''utente deve essere membro dell''organizzazione {{.OrgName}}.'
|
||||
|
||||
Password:
|
||||
Title: Password
|
||||
Description: Inserisci i tuoi dati di accesso.
|
||||
PasswordLabel: Password
|
||||
MinLength: Lunghezza minima
|
||||
HasUppercase: Lettera maiuscola
|
||||
HasLowercase: Lettera minuscola
|
||||
HasNumber: Numero
|
||||
HasSymbol: Simbolo
|
||||
Confirmation: Conferma password
|
||||
ResetLinkText: Password dimenticata?
|
||||
BackButtonText: indietro
|
||||
NextButtonText: Avanti
|
||||
|
||||
UsernameChange:
|
||||
Title: Cambia nome utente
|
||||
Description: Imposta il tuo nuovo nome utente
|
||||
UsernameLabel: Nome utente
|
||||
CancelButtonText: annulla
|
||||
NextButtonText: Avanti
|
||||
|
||||
UsernameChangeDone:
|
||||
Title: Nome utente cambiato
|
||||
Description: Il tuo nome utente è stato cambiato con successo.
|
||||
NextButtonText: Avanti
|
||||
|
||||
InitPassword:
|
||||
Title: Impostare la password
|
||||
Description: Hai ricevuto un codice, che devi inserire nel modulo sottostante, per impostare la tua nuova password.
|
||||
CodeLabel: Codice
|
||||
NewPasswordLabel: Nuova password
|
||||
NewPasswordConfirmLabel: Conferma la password
|
||||
ResendButtonText: rispedisci
|
||||
NextButtonText: Avanti
|
||||
|
||||
InitPasswordDone:
|
||||
Title: Set di password
|
||||
Description: Password impostata con successo
|
||||
NextButtonText: Avanti
|
||||
CancelButtonText: annulla
|
||||
|
||||
InitUser:
|
||||
Title: Attivare l'utente
|
||||
Description: Hai ricevuto un codice, che devi inserire nel modulo sottostante, per verificare la tua email e impostare la tua nuova password.
|
||||
CodeLabel: Codice
|
||||
NewPasswordLabel: Nuova password
|
||||
NewPasswordConfirmLabel: Conferma la password
|
||||
NextButtonText: Avanti
|
||||
ResendButtonText: rispedisci
|
||||
|
||||
InitUserDone:
|
||||
Title: Utente attivato
|
||||
Description: Email verificata e password impostata con successo
|
||||
NextButtonText: Avanti
|
||||
CancelButtonText: annulla
|
||||
|
||||
InitMFAPrompt:
|
||||
Title: Configurazione a più fattori
|
||||
Description: Vuoi impostare l'autenticazione a più fattori?
|
||||
Provider0: OTP (One Time Password)
|
||||
Provider1: U2F (2° fattore universale)
|
||||
NextButtonText: Avanti
|
||||
SkipButtonText: salta
|
||||
|
||||
InitMFAOTP:
|
||||
Title: Verifica a più fattori
|
||||
Description: Verifica il tuo multifattore.
|
||||
OTPDescription: Scannerizza il codice con la tua app di autenticazione (ad esempio Google Authenticator) o copia la chiave segreta e inserisci il codice generato nel campo sottostante.
|
||||
SecretLabel: Chiave
|
||||
CodeLabel: Codice
|
||||
NextButtonText: Avanti
|
||||
CancelButtonText: annulla
|
||||
|
||||
InitMFAU2F:
|
||||
Title: Configurazione a più fattori U2F / WebAuthN
|
||||
Description: Aggiungi il tuo Token fornendo un nome e cliccando sul pulsante 'Registra'.
|
||||
TokenNameLabel: Nome del token / dispositivo
|
||||
NotSupported: WebAuthN non è supportato dal tuo browser. Assicurati che sia aggiornato o usane uno diverso (ad esempio Chrome, Safari, Firefox)
|
||||
RegisterTokenButtonText: Registra
|
||||
ErrorRetry: Riprova, crea una nuova richiesta o scegli un metodo diverso.
|
||||
|
||||
InitMFADone:
|
||||
Title: Verificazione a più fattori effettuata
|
||||
Description: La verificazione del multifattore eseguita con successo. Il multifattore è richiesto ad ogni login.
|
||||
NextButtonText: Avanti
|
||||
CancelButtonText: annulla
|
||||
|
||||
MFAProvider:
|
||||
Provider0: OTP (One Time Password)
|
||||
Provider1: U2F (2° fattore universale)
|
||||
ChooseOther: o scegli un'altra opzione
|
||||
|
||||
VerifyMFAOTP:
|
||||
Title: Verificazione del Multificator
|
||||
Description: Verifica il tuo multifattore
|
||||
CodeLabel: Codice
|
||||
NextButtonText: Avanti
|
||||
|
||||
VerifyMFAU2F:
|
||||
Title: Verificazione a più fattori
|
||||
Description: Verifica il tuo token U2F / WebAuthN
|
||||
NotSupported: WebAuthN non è supportato dal tuo browser. Assicurati di avere l'ultima versione installata o usane una diversa (per esempio Chrome, Safari, Firefox).
|
||||
ErrorRetry: Prova di nuovo, crea una nuova richiesta o scegli un metodo diverso.
|
||||
ValidateTokenButtonText: Verifica
|
||||
|
||||
Passwordless:
|
||||
Title: Accesso senza password
|
||||
Description: Verifica il tuo token
|
||||
NotSupported: WebAuthN non è supportato dal tuo browser. Assicurati che sia aggiornato o usane uno diverso (ad esempio Chrome, Safari, Firefox)
|
||||
ErrorRetry: Riprova, crea una nuova richiesta o scegli un metodo diverso.
|
||||
LoginWithPwButtonText: Accedi con password
|
||||
ValidateTokenButtonText: Verifica
|
||||
|
||||
PasswordlessPrompt:
|
||||
Title: Autenticazione passwordless
|
||||
Description: Vuoi impostare il login senza password?
|
||||
DescriptionInit: Devi impostare il login senza password. Usa il link che ti è stato inviato per registrare il tuo dispositivo.
|
||||
PasswordlessButtonText: Continua
|
||||
NextButtonText: Avanti
|
||||
SkipButtonText: salta
|
||||
|
||||
PasswordlessRegistration:
|
||||
Title: Configurazione dell'autenticazione senza password
|
||||
Description: Aggiungi il tuo Token fornendo un nome e poi cliccando sul pulsante 'Registra'.
|
||||
TokenNameLabel: Nome del token / dispositivo
|
||||
NotSupported: WebAuthN non è supportato dal tuo browser. Assicurati che sia aggiornato o usane uno diverso (ad esempio Chrome, Safari, Firefox)
|
||||
RegisterTokenButtonText: Registra
|
||||
ErrorRetry: Riprova, crea una nuova richiesta o scegli un metodo diverso.
|
||||
|
||||
PasswordlessRegistrationDone:
|
||||
Title: Configurazione dell'autenticazione senza password
|
||||
Description: Token per lautenticazione passwordless aggiunto con successo.
|
||||
DescriptionClose: Ora puoi chiudere questa finestra.
|
||||
NextButtonText: Avanti
|
||||
CancelButtonText: annulla
|
||||
|
||||
PasswordChange:
|
||||
Title: Reimposta password
|
||||
Description: Cambia la tua password. Inserisci la tua vecchia e la nuova password.
|
||||
OldPasswordLabel: Vecchia password
|
||||
NewPasswordLabel: Nuova password
|
||||
NewPasswordConfirmLabel: Conferma della password
|
||||
CancelButtonText: annulla
|
||||
NextButtonText: Avanti
|
||||
|
||||
PasswordChangeDone:
|
||||
Title: Reimposta password
|
||||
Description: La tua password è stata cambiata con successo.
|
||||
NextButtonText: Avanti
|
||||
|
||||
PasswordResetDone:
|
||||
Title: Link per il cambiamento inviato
|
||||
Description: Controlla la tua email per reimpostare la tua password.
|
||||
NextButtonText: Avanti
|
||||
|
||||
EmailVerification:
|
||||
Title: Verifica email
|
||||
Description: Ti abbiamo inviato un'e-mail per verificare il tuo indirizzo. Inserisci il codice nel campo sottostante.
|
||||
CodeLabel: Codice
|
||||
NextButtonText: Avanti
|
||||
ResendButtonText: rispedisci
|
||||
|
||||
EmailVerificationDone:
|
||||
Title: Verificazione email effettuata
|
||||
Description: La tua email è stata verificata con successo.
|
||||
NextButtonText: Avanti
|
||||
CancelButtonText: annulla
|
||||
LoginButtonText: Accedi
|
||||
|
||||
RegisterOption:
|
||||
Title: Opzioni di registrazione
|
||||
Description: Scegli come vuoi registrarti
|
||||
RegisterUsernamePasswordButtonText: Con nome utente e password
|
||||
ExternalLoginDescription: o registrarsi con un utente esterno
|
||||
|
||||
RegistrationUser:
|
||||
Title: Registrazione
|
||||
Description: Inserisci i tuoi dati utente. La tua email sarà usata come nome di accesso.
|
||||
DescriptionOrgRegister: Inserisci i tuoi dati utente.
|
||||
EmailLabel: email
|
||||
UsernameLabel: Nome utente
|
||||
FirstnameLabel: Nome
|
||||
LastnameLabel: Cognome
|
||||
LanguageLabel: Lingua
|
||||
German: Tedesco
|
||||
English: Inglese
|
||||
GenderLabel: Genere
|
||||
Female: Femminile
|
||||
Male: Maschile
|
||||
Diverse: diverso / X
|
||||
PasswordLabel: Password
|
||||
PasswordConfirmLabel: Conferma della password
|
||||
TosAndPrivacyLabel: Termini di servizio
|
||||
TosConfirm: Accetto i
|
||||
TosLinkText: Termini di servizio
|
||||
TosConfirmAnd: e
|
||||
PrivacyLinkText: l'informativa sulla privacy
|
||||
ExternalLogin: o registrati con un utente esterno
|
||||
BackButtonText: indietro
|
||||
NextButtonText: Avanti
|
||||
|
||||
ExternalRegistrationUserOverview:
|
||||
Title: Registrazione utente esterno
|
||||
Description: Abbiamo preso i tuoi dati utente dal provider selezionato. Ora puoi cambiarli o completarli.
|
||||
EmailLabel: E-mail
|
||||
UsernameLabel: Nome utente
|
||||
FirstnameLabel: Nome
|
||||
LastnameLabel: Cognome
|
||||
NicknameLabel: Soprannome
|
||||
PhoneLabel: Numero di telefono
|
||||
LanguageLabel: Lingua
|
||||
German: Tedesco
|
||||
English: Inglese
|
||||
TosAndPrivacyLabel: Termini di servizio
|
||||
TosConfirm: Accetto i
|
||||
TosLinkText: Termini di servizio
|
||||
TosConfirmAnd: e
|
||||
PrivacyLinkText: l'informativa sulla privacy
|
||||
ExternalLogin: o registrati con un utente esterno
|
||||
BackButtonText: indietro
|
||||
NextButtonText: salva
|
||||
|
||||
RegistrationOrg:
|
||||
Title: Registrazione dell'organizzazione
|
||||
Description: Inserisci il tuo nome di organizzazione e i tuoi dati utente.
|
||||
OrgNameLabel: Nome dell'organizzazione
|
||||
EmailLabel: E-mail
|
||||
UsernameLabel: Nome utente
|
||||
FirstnameLabel: Nome
|
||||
LastnameLabel: Cognome
|
||||
PasswordLabel: Password
|
||||
PasswordConfirmLabel: Conferma della password
|
||||
TosAndPrivacyLabel: Termini di servizio
|
||||
TosConfirm: Accetto i
|
||||
TosLinkText: Termini di servizio
|
||||
TosConfirmAnd: e
|
||||
PrivacyLinkText: l'informativa sulla privacy
|
||||
SaveButtonText: Salva
|
||||
|
||||
LoginSuccess:
|
||||
Title: Accesso riuscito
|
||||
AutoRedirectDescription: Sarai reindirizzato automaticamente alla tua applicazione. In caso contrario, clicca sul pulsante sottostante. Dopo puoi chiudere la finestra.
|
||||
RedirectedDescription: Ora puoi chiudere la finestra.
|
||||
NextButtonText: Avanti
|
||||
|
||||
LogoutDone:
|
||||
Title: Disconnesso
|
||||
Description: Ti sei disconnesso con successo.
|
||||
LoginButtonText: Accedi
|
||||
|
||||
LinkingUsersDone:
|
||||
Title: Collegamento utente
|
||||
Description: Collegamento fatto.
|
||||
CancelButtonText: annulla
|
||||
NextButtonText: Avanti
|
||||
|
||||
ExternalNotFoundOption:
|
||||
Title: Utente esterno
|
||||
Description: Utente esterno non trovato. Vuoi collegare il tuo utente o registrarne uno nuovo automaticamente.
|
||||
LinkButtonText: Link
|
||||
AutoRegisterButtonText: Registra automaticamente
|
||||
TosAndPrivacyLabel: Termini di servizio
|
||||
TosConfirm: Accetto i
|
||||
TosLinkText: Termini di servizio
|
||||
TosConfirmAnd: e
|
||||
PrivacyLinkText: l'informativa sulla privacy
|
||||
|
||||
Footer:
|
||||
PoweredBy: Alimentato da
|
||||
Tos: Termini di servizio
|
||||
PrivacyPolicy: l'informativa sulla privacy
|
||||
Help: Aiuto
|
||||
HelpLink: 'https://docs.zitadel.ch/docs/manuals/user-login'
|
||||
|
||||
Errors:
|
||||
Internal: Si è verificato un errore interno
|
||||
AuthRequest:
|
||||
NotFound: Impossibile trovare authrequest
|
||||
UserAgentNotCorresponding: User Agent non corrisponde
|
||||
UserAgentNotFound: User Agent ID non trovato
|
||||
TokenNotFound: Token non trovato
|
||||
RequestTypeNotSupported: Il tipo di richiesta non è supportato
|
||||
MissingParameters: Mancano i parametri richiesti
|
||||
User:
|
||||
NotFound: L'utente non è stato trovato
|
||||
Inactive: L'utente è inattivo
|
||||
NotFoundOnOrg: L'utente non è stato trovato nell'organizzazione scelta
|
||||
NotAllowedOrg: L'utente non è membro dell'organizzazione richiesta
|
||||
NotMatchingUserID: Utente e authrequest non corrispondono
|
||||
UserIDMissing: UserID è vuoto
|
||||
Invalid: I dati del utente non sono validi
|
||||
DomainNotAllowedAsUsername: Il dominio è già riservato e non può essere utilizzato
|
||||
NotAllowedToLink: L'utente non è autorizzato a collegarsi con un provider di accesso esterno
|
||||
Password:
|
||||
ConfirmationWrong: La conferma della password è sbagliata
|
||||
Empty: La password è vuota
|
||||
Invalid: La password non è valida
|
||||
InvalidAndLocked: La password non è valida e l'utente è bloccato, contatta il tuo amministratore.
|
||||
PasswordComplexityPolicy:
|
||||
NotFound: Impostazioni della password non trovate
|
||||
MinLength: La password è troppo corta
|
||||
HasLower: La password deve contenere una lettera minuscola
|
||||
HasUpper: La password deve contenere la lettera maiuscola
|
||||
HasNumber: La password deve contenere un numero
|
||||
HasSymbol: La password deve contenere il simbolo
|
||||
Code:
|
||||
Expired: Il codice è scaduto
|
||||
Invalid: Il codice non è valido
|
||||
Empty: Il codice è vuoto
|
||||
CryptoCodeNil: Il codice criptato è null
|
||||
NotFound: Impossibile trovare il codice
|
||||
GeneratorAlgNotSupported: Algoritmo generatore non supportato
|
||||
EmailVerify:
|
||||
UserIDEmpty: UserID è vuoto
|
||||
ExternalData:
|
||||
CouldNotRead: I dati esterni non possono essere letti correttamente
|
||||
MFA:
|
||||
NoProviders: Nessun fornitore multifattore disponibile
|
||||
OTP:
|
||||
AlreadyReady: Multifactor OTP (OneTimePassword) è già impostato
|
||||
NotExisting: Multifactor OTP (OneTimePassword) non esiste
|
||||
InvalidCode: Codice non valido
|
||||
NotReady: Multifattore OTP (OneTimePassword) non è pronto
|
||||
Locked: L'utente è bloccato
|
||||
SomethingWentWrong: Qualcosa è andato storto
|
||||
NotActive: L'utente non è attivo
|
||||
ExternalIDP:
|
||||
IDPTypeNotImplemented: Il tipo di IDP non è implementato
|
||||
NotAllowed: Provider di accesso esterno non consentito
|
||||
IDPConfigIDEmpty: L'ID del fornitore di identità è vuoto
|
||||
ExternalUserIDEmpty: L'ID utente esterno è vuoto
|
||||
UserDisplayNameEmpty: Il nome visualizzato dell'utente è vuoto
|
||||
NoExternalUserData: Nessun dato utente esterno ricevuto
|
||||
GrantRequired: Accesso non possibile. L'utente deve avere almeno una sovvenzione sull'applicazione. Contatta il tuo amministratore.
|
||||
ProjectRequired: Accesso non possibile. L'organizzazione dell'utente deve essere concessa al progetto. Contatta il tuo amministratore.
|
||||
IdentityProvider:
|
||||
InvalidConfig: La configurazione dell'Identity Provider non è valida
|
||||
IAM:
|
||||
LockoutPolicy:
|
||||
NotExisting: Impostazioni di blocco non esistenti
|
||||
|
||||
optional: (opzionale)
|
Loading…
x
Reference in New Issue
Block a user