feat(i18n): make language a user profile attribute (register/profile/login)
All checks were successful
Build and Push / build (push) Successful in 1m47s
All checks were successful
Build and Push / build (push) Successful in 1m47s
This commit is contained in:
@@ -569,6 +569,7 @@ export async function updateHumanUserProfile(params: {
|
||||
userId: string;
|
||||
givenName: string;
|
||||
familyName: string;
|
||||
preferredLanguage?: string;
|
||||
}): Promise<UpdateHumanUserProfileResult> {
|
||||
const path = `/v2/users/human/${encodeURIComponent(params.userId)}`;
|
||||
// Compose the displayName ourselves so ZITADEL stores something
|
||||
@@ -579,13 +580,22 @@ export async function updateHumanUserProfile(params: {
|
||||
type ZitadelUpdateResponse = {
|
||||
details?: { changeDate?: string };
|
||||
};
|
||||
await zitadelFetch<ZitadelUpdateResponse>(path, "PUT", {
|
||||
profile: {
|
||||
givenName: params.givenName,
|
||||
familyName: params.familyName,
|
||||
displayName,
|
||||
},
|
||||
});
|
||||
// preferredLanguage is part of the same `profile` block; include it
|
||||
// only when provided so a name-only update doesn't clobber it.
|
||||
const profile: {
|
||||
givenName: string;
|
||||
familyName: string;
|
||||
displayName: string;
|
||||
preferredLanguage?: string;
|
||||
} = {
|
||||
givenName: params.givenName,
|
||||
familyName: params.familyName,
|
||||
displayName,
|
||||
};
|
||||
if (params.preferredLanguage) {
|
||||
profile.preferredLanguage = params.preferredLanguage;
|
||||
}
|
||||
await zitadelFetch<ZitadelUpdateResponse>(path, "PUT", { profile });
|
||||
// Re-fetch the user to read back the canonical displayName ZITADEL
|
||||
// committed. Should match what we sent, but reading from the source
|
||||
// of truth catches any sanitization ZITADEL might apply.
|
||||
@@ -607,6 +617,8 @@ export interface HumanUserDetail {
|
||||
familyName: string;
|
||||
displayName: string;
|
||||
email: string;
|
||||
/** ZITADEL profile preferredLanguage (e.g. "de"); "" if unset. */
|
||||
preferredLanguage: string;
|
||||
}
|
||||
|
||||
export async function getHumanUserDetail(
|
||||
@@ -620,6 +632,7 @@ export async function getHumanUserDetail(
|
||||
givenName?: string;
|
||||
familyName?: string;
|
||||
displayName?: string;
|
||||
preferredLanguage?: string;
|
||||
};
|
||||
email?: { email?: string };
|
||||
};
|
||||
@@ -636,5 +649,6 @@ export async function getHumanUserDetail(
|
||||
familyName: human?.profile?.familyName ?? "",
|
||||
displayName: human?.profile?.displayName ?? "",
|
||||
email: human?.email?.email ?? "",
|
||||
preferredLanguage: human?.profile?.preferredLanguage ?? "",
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user