Prettier: switch to trailing coma: none
This commit is contained in:
parent
832434095e
commit
a1a65c5529
@ -5,7 +5,7 @@
|
|||||||
"semi": true,
|
"semi": true,
|
||||||
"singleQuote": false,
|
"singleQuote": false,
|
||||||
"quoteProps": "preserve",
|
"quoteProps": "preserve",
|
||||||
"trailingComma": "all",
|
"trailingComma": "none",
|
||||||
"bracketSpacing": true,
|
"bracketSpacing": true,
|
||||||
"arrowParens": "avoid"
|
"arrowParens": "avoid"
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@ const zParsedPackageJson = z.object({
|
|||||||
.object({
|
.object({
|
||||||
"extraPages": z.array(z.string()).optional(),
|
"extraPages": z.array(z.string()).optional(),
|
||||||
"extraThemeProperties": z.array(z.string()).optional(),
|
"extraThemeProperties": z.array(z.string()).optional(),
|
||||||
"isAppAndKeycloakServerSharingSameDomain": z.boolean().optional(),
|
"isAppAndKeycloakServerSharingSameDomain": z.boolean().optional()
|
||||||
})
|
})
|
||||||
.optional(),
|
.optional()
|
||||||
});
|
});
|
||||||
|
|
||||||
assert<Equals<ReturnType<typeof zParsedPackageJson["parse"]>, ParsedPackageJson>>();
|
assert<Equals<ReturnType<typeof zParsedPackageJson["parse"]>, ParsedPackageJson>>();
|
||||||
@ -99,7 +99,7 @@ export function readBuildOptions(params: {
|
|||||||
const out = url.pathname.replace(/([^/])$/, "$1/");
|
const out = url.pathname.replace(/([^/])$/, "$1/");
|
||||||
|
|
||||||
return out === "/" ? undefined : out;
|
return out === "/" ? undefined : out;
|
||||||
})(),
|
})()
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
@ -130,20 +130,20 @@ export function readBuildOptions(params: {
|
|||||||
})(),
|
})(),
|
||||||
"version": version,
|
"version": version,
|
||||||
extraPages,
|
extraPages,
|
||||||
extraThemeProperties,
|
extraThemeProperties
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
if (isExternalAssetsCliParamProvided) {
|
if (isExternalAssetsCliParamProvided) {
|
||||||
const commonExternalAssets = id<BuildOptions.ExternalAssets.CommonExternalAssets>({
|
const commonExternalAssets = id<BuildOptions.ExternalAssets.CommonExternalAssets>({
|
||||||
...common,
|
...common,
|
||||||
"isStandalone": false,
|
"isStandalone": false
|
||||||
});
|
});
|
||||||
|
|
||||||
if (parsedPackageJson.keycloakify?.isAppAndKeycloakServerSharingSameDomain) {
|
if (parsedPackageJson.keycloakify?.isAppAndKeycloakServerSharingSameDomain) {
|
||||||
return id<BuildOptions.ExternalAssets.SameDomain>({
|
return id<BuildOptions.ExternalAssets.SameDomain>({
|
||||||
...commonExternalAssets,
|
...commonExternalAssets,
|
||||||
"isAppAndKeycloakServerSharingSameDomain": true,
|
"isAppAndKeycloakServerSharingSameDomain": true
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
assert(
|
assert(
|
||||||
@ -156,15 +156,15 @@ export function readBuildOptions(params: {
|
|||||||
"Alternatively, if your app and the Keycloak server are on the same domain, ",
|
"Alternatively, if your app and the Keycloak server are on the same domain, ",
|
||||||
"eg https://example.com is your app and https://example.com/auth is the keycloak",
|
"eg https://example.com is your app and https://example.com/auth is the keycloak",
|
||||||
'admin UI, you can set "keycloakify": { "isAppAndKeycloakServerSharingSameDomain": true }',
|
'admin UI, you can set "keycloakify": { "isAppAndKeycloakServerSharingSameDomain": true }',
|
||||||
"in your package.json",
|
"in your package.json"
|
||||||
].join(" "),
|
].join(" ")
|
||||||
);
|
);
|
||||||
|
|
||||||
return id<BuildOptions.ExternalAssets.DifferentDomains>({
|
return id<BuildOptions.ExternalAssets.DifferentDomains>({
|
||||||
...commonExternalAssets,
|
...commonExternalAssets,
|
||||||
"isAppAndKeycloakServerSharingSameDomain": false,
|
"isAppAndKeycloakServerSharingSameDomain": false,
|
||||||
"urlOrigin": url.origin,
|
"urlOrigin": url.origin,
|
||||||
"urlPathname": url.pathname,
|
"urlPathname": url.pathname
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,6 +172,6 @@ export function readBuildOptions(params: {
|
|||||||
return id<BuildOptions.Standalone>({
|
return id<BuildOptions.Standalone>({
|
||||||
...common,
|
...common,
|
||||||
"isStandalone": true,
|
"isStandalone": true,
|
||||||
"urlPathname": url?.pathname,
|
"urlPathname": url?.pathname
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ export function main() {
|
|||||||
const buildOptions = readBuildOptions({
|
const buildOptions = readBuildOptions({
|
||||||
"packageJson": fs.readFileSync(pathJoin(reactProjectDirPath, "")).toString("utf8"),
|
"packageJson": fs.readFileSync(pathJoin(reactProjectDirPath, "")).toString("utf8"),
|
||||||
"CNAME": fs.readFileSync(pathJoin(reactProjectDirPath, "public", "CNAME")).toString("utf8"),
|
"CNAME": fs.readFileSync(pathJoin(reactProjectDirPath, "public", "CNAME")).toString("utf8"),
|
||||||
"isExternalAssetsCliParamProvided": process.argv[2]?.toLowerCase() === "--external-assets",
|
"isExternalAssetsCliParamProvided": process.argv[2]?.toLowerCase() === "--external-assets"
|
||||||
});
|
});
|
||||||
|
|
||||||
const { doBundlesEmailTemplate } = generateKeycloakThemeResources({
|
const { doBundlesEmailTemplate } = generateKeycloakThemeResources({
|
||||||
@ -28,18 +28,18 @@ export function main() {
|
|||||||
//We have to leave it at that otherwise we break our default theme.
|
//We have to leave it at that otherwise we break our default theme.
|
||||||
//Problem is that we can't guarantee that the the old resources
|
//Problem is that we can't guarantee that the the old resources
|
||||||
//will still be available on the newer keycloak version.
|
//will still be available on the newer keycloak version.
|
||||||
"keycloakVersion": "11.0.3",
|
"keycloakVersion": "11.0.3"
|
||||||
});
|
});
|
||||||
|
|
||||||
const { jarFilePath } = generateJavaStackFiles({
|
const { jarFilePath } = generateJavaStackFiles({
|
||||||
"version": buildOptions.version,
|
"version": buildOptions.version,
|
||||||
keycloakThemeBuildingDirPath,
|
keycloakThemeBuildingDirPath,
|
||||||
doBundlesEmailTemplate,
|
doBundlesEmailTemplate,
|
||||||
buildOptions,
|
buildOptions
|
||||||
});
|
});
|
||||||
|
|
||||||
child_process.execSync("mvn package", {
|
child_process.execSync("mvn package", {
|
||||||
"cwd": keycloakThemeBuildingDirPath,
|
"cwd": keycloakThemeBuildingDirPath
|
||||||
});
|
});
|
||||||
|
|
||||||
//We want, however, to test in a container running the latest Keycloak version
|
//We want, however, to test in a container running the latest Keycloak version
|
||||||
@ -48,7 +48,7 @@ export function main() {
|
|||||||
generateStartKeycloakTestingContainer({
|
generateStartKeycloakTestingContainer({
|
||||||
keycloakThemeBuildingDirPath,
|
keycloakThemeBuildingDirPath,
|
||||||
"keycloakVersion": containerKeycloakVersion,
|
"keycloakVersion": containerKeycloakVersion,
|
||||||
buildOptions,
|
buildOptions
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
@ -100,7 +100,7 @@ export function main() {
|
|||||||
`- Go to 👉 https://www.keycloak.org/app/ 👈 Click "Save" then "Sign in". You should see your login page`,
|
`- Go to 👉 https://www.keycloak.org/app/ 👈 Click "Save" then "Sign in". You should see your login page`,
|
||||||
"",
|
"",
|
||||||
"Video demoing this process: https://youtu.be/N3wlBoH4hKg",
|
"Video demoing this process: https://youtu.be/N3wlBoH4hKg",
|
||||||
"",
|
""
|
||||||
].join("\n"),
|
].join("\n")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ export const pageIds = [
|
|||||||
"login-idp-link-email.ftl",
|
"login-idp-link-email.ftl",
|
||||||
"login-page-expired.ftl",
|
"login-page-expired.ftl",
|
||||||
"login-config-totp.ftl",
|
"login-config-totp.ftl",
|
||||||
"logout-confirm.ftl",
|
"logout-confirm.ftl"
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
export type BuildOptionsLike = BuildOptionsLike.Standalone | BuildOptionsLike.ExternalAssets;
|
export type BuildOptionsLike = BuildOptionsLike.Standalone | BuildOptionsLike.ExternalAssets;
|
||||||
@ -83,7 +83,7 @@ export function generateFtlFilesCodeFactory(params: {
|
|||||||
$("script:not([src])").each((...[, element]) => {
|
$("script:not([src])").each((...[, element]) => {
|
||||||
const { fixedJsCode } = replaceImportsFromStaticInJsCode({
|
const { fixedJsCode } = replaceImportsFromStaticInJsCode({
|
||||||
"jsCode": $(element).html()!,
|
"jsCode": $(element).html()!,
|
||||||
buildOptions,
|
buildOptions
|
||||||
});
|
});
|
||||||
|
|
||||||
$(element).text(fixedJsCode);
|
$(element).text(fixedJsCode);
|
||||||
@ -92,7 +92,7 @@ export function generateFtlFilesCodeFactory(params: {
|
|||||||
$("style").each((...[, element]) => {
|
$("style").each((...[, element]) => {
|
||||||
const { fixedCssCode } = replaceImportsInInlineCssCode({
|
const { fixedCssCode } = replaceImportsInInlineCssCode({
|
||||||
"cssCode": $(element).html()!,
|
"cssCode": $(element).html()!,
|
||||||
buildOptions,
|
buildOptions
|
||||||
});
|
});
|
||||||
|
|
||||||
$(element).text(fixedCssCode);
|
$(element).text(fixedCssCode);
|
||||||
@ -101,7 +101,7 @@ export function generateFtlFilesCodeFactory(params: {
|
|||||||
(
|
(
|
||||||
[
|
[
|
||||||
["link", "href"],
|
["link", "href"],
|
||||||
["script", "src"],
|
["script", "src"]
|
||||||
] as const
|
] as const
|
||||||
).forEach(([selector, attrName]) =>
|
).forEach(([selector, attrName]) =>
|
||||||
$(selector).each((...[, element]) => {
|
$(selector).each((...[, element]) => {
|
||||||
@ -115,9 +115,9 @@ export function generateFtlFilesCodeFactory(params: {
|
|||||||
attrName,
|
attrName,
|
||||||
buildOptions.isStandalone
|
buildOptions.isStandalone
|
||||||
? href.replace(new RegExp(`^${(buildOptions.urlPathname ?? "/").replace(/\//g, "\\/")}`), "${url.resourcesPath}/build/")
|
? href.replace(new RegExp(`^${(buildOptions.urlPathname ?? "/").replace(/\//g, "\\/")}`), "${url.resourcesPath}/build/")
|
||||||
: href.replace(/^\//, `${buildOptions.urlOrigin}/`),
|
: href.replace(/^\//, `${buildOptions.urlOrigin}/`)
|
||||||
);
|
);
|
||||||
}),
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
if (Object.keys(cssGlobalsToDefine).length !== 0) {
|
if (Object.keys(cssGlobalsToDefine).length !== 0) {
|
||||||
@ -127,11 +127,11 @@ export function generateFtlFilesCodeFactory(params: {
|
|||||||
"<style>",
|
"<style>",
|
||||||
generateCssCodeToDefineGlobals({
|
generateCssCodeToDefineGlobals({
|
||||||
cssGlobalsToDefine,
|
cssGlobalsToDefine,
|
||||||
buildOptions,
|
buildOptions
|
||||||
}).cssCodeToPrependInHead,
|
}).cssCodeToPrependInHead,
|
||||||
"</style>",
|
"</style>",
|
||||||
"",
|
""
|
||||||
].join("\n"),
|
].join("\n")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -147,8 +147,8 @@ export function generateFtlFilesCodeFactory(params: {
|
|||||||
" <#list scripts as script>",
|
" <#list scripts as script>",
|
||||||
' <script src="${script}" type="text/javascript"></script>',
|
' <script src="${script}" type="text/javascript"></script>',
|
||||||
" </#list>",
|
" </#list>",
|
||||||
"</#if>",
|
"</#if>"
|
||||||
].join("\n"),
|
].join("\n")
|
||||||
};
|
};
|
||||||
|
|
||||||
$("head").prepend(
|
$("head").prepend(
|
||||||
@ -157,8 +157,8 @@ export function generateFtlFilesCodeFactory(params: {
|
|||||||
` window.${ftlValuesGlobalName}= ${objectKeys(replaceValueBySearchValue)[0]};`,
|
` window.${ftlValuesGlobalName}= ${objectKeys(replaceValueBySearchValue)[0]};`,
|
||||||
"</script>",
|
"</script>",
|
||||||
"",
|
"",
|
||||||
objectKeys(replaceValueBySearchValue)[1],
|
objectKeys(replaceValueBySearchValue)[1]
|
||||||
].join("\n"),
|
].join("\n")
|
||||||
);
|
);
|
||||||
|
|
||||||
const partiallyFixedIndexHtmlCode = $.html();
|
const partiallyFixedIndexHtmlCode = $.html();
|
||||||
@ -175,7 +175,7 @@ export function generateFtlFilesCodeFactory(params: {
|
|||||||
Object.entries({
|
Object.entries({
|
||||||
...replaceValueBySearchValue,
|
...replaceValueBySearchValue,
|
||||||
//If updated, don't forget to change in the ftl script as well.
|
//If updated, don't forget to change in the ftl script as well.
|
||||||
"PAGE_ID_xIgLsPgGId9D8e": pageId,
|
"PAGE_ID_xIgLsPgGId9D8e": pageId
|
||||||
}).map(([searchValue, replaceValue]) => (ftlCode = ftlCode.replace(searchValue, replaceValue)));
|
}).map(([searchValue, replaceValue]) => (ftlCode = ftlCode.replace(searchValue, replaceValue)));
|
||||||
|
|
||||||
return { ftlCode };
|
return { ftlCode };
|
||||||
|
@ -27,7 +27,7 @@ export function generateJavaStackFiles(params: {
|
|||||||
version,
|
version,
|
||||||
buildOptions: { groupId, themeName },
|
buildOptions: { groupId, themeName },
|
||||||
keycloakThemeBuildingDirPath,
|
keycloakThemeBuildingDirPath,
|
||||||
doBundlesEmailTemplate,
|
doBundlesEmailTemplate
|
||||||
} = params;
|
} = params;
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -47,7 +47,7 @@ export function generateJavaStackFiles(params: {
|
|||||||
` <version>${version}</version>`,
|
` <version>${version}</version>`,
|
||||||
` <name>${artefactId}</name>`,
|
` <name>${artefactId}</name>`,
|
||||||
` <description />`,
|
` <description />`,
|
||||||
`</project>`,
|
`</project>`
|
||||||
].join("\n");
|
].join("\n");
|
||||||
|
|
||||||
return { pomFileCode };
|
return { pomFileCode };
|
||||||
@ -71,19 +71,19 @@ export function generateJavaStackFiles(params: {
|
|||||||
"themes": [
|
"themes": [
|
||||||
{
|
{
|
||||||
"name": themeName,
|
"name": themeName,
|
||||||
"types": ["login", ...(doBundlesEmailTemplate ? ["email"] : [])],
|
"types": ["login", ...(doBundlesEmailTemplate ? ["email"] : [])]
|
||||||
},
|
}
|
||||||
],
|
]
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
2,
|
2
|
||||||
),
|
),
|
||||||
"utf8",
|
"utf8"
|
||||||
),
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"jarFilePath": pathJoin(keycloakThemeBuildingDirPath, "target", `${themeName}-${version}.jar`),
|
"jarFilePath": pathJoin(keycloakThemeBuildingDirPath, "target", `${themeName}-${version}.jar`)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ export function generateKeycloakThemeResources(params: {
|
|||||||
buildOptions.isStandalone &&
|
buildOptions.isStandalone &&
|
||||||
isInside({
|
isInside({
|
||||||
"dirPath": pathJoin(reactAppBuildDirPath, mockTestingSubDirOfPublicDirBasename),
|
"dirPath": pathJoin(reactAppBuildDirPath, mockTestingSubDirOfPublicDirBasename),
|
||||||
filePath,
|
filePath
|
||||||
})
|
})
|
||||||
) {
|
) {
|
||||||
return undefined;
|
return undefined;
|
||||||
@ -85,12 +85,12 @@ export function generateKeycloakThemeResources(params: {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const { cssGlobalsToDefine, fixedCssCode } = replaceImportsInCssCode({
|
const { cssGlobalsToDefine, fixedCssCode } = replaceImportsInCssCode({
|
||||||
"cssCode": sourceCode.toString("utf8"),
|
"cssCode": sourceCode.toString("utf8")
|
||||||
});
|
});
|
||||||
|
|
||||||
allCssGlobalsToDefine = {
|
allCssGlobalsToDefine = {
|
||||||
...allCssGlobalsToDefine,
|
...allCssGlobalsToDefine,
|
||||||
...cssGlobalsToDefine,
|
...cssGlobalsToDefine
|
||||||
};
|
};
|
||||||
|
|
||||||
return { "modifiedSourceCode": Buffer.from(fixedCssCode, "utf8") };
|
return { "modifiedSourceCode": Buffer.from(fixedCssCode, "utf8") };
|
||||||
@ -103,14 +103,14 @@ export function generateKeycloakThemeResources(params: {
|
|||||||
|
|
||||||
const { fixedJsCode } = replaceImportsFromStaticInJsCode({
|
const { fixedJsCode } = replaceImportsFromStaticInJsCode({
|
||||||
"jsCode": sourceCode.toString("utf8"),
|
"jsCode": sourceCode.toString("utf8"),
|
||||||
buildOptions,
|
buildOptions
|
||||||
});
|
});
|
||||||
|
|
||||||
return { "modifiedSourceCode": Buffer.from(fixedJsCode, "utf8") };
|
return { "modifiedSourceCode": Buffer.from(fixedJsCode, "utf8") };
|
||||||
}
|
}
|
||||||
|
|
||||||
return buildOptions.isStandalone ? { "modifiedSourceCode": sourceCode } : undefined;
|
return buildOptions.isStandalone ? { "modifiedSourceCode": sourceCode } : undefined;
|
||||||
},
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let doBundlesEmailTemplate: boolean;
|
let doBundlesEmailTemplate: boolean;
|
||||||
@ -120,8 +120,8 @@ export function generateKeycloakThemeResources(params: {
|
|||||||
console.log(
|
console.log(
|
||||||
[
|
[
|
||||||
`Not bundling email template because ${pathBasename(keycloakThemeEmailDirPath)} does not exist`,
|
`Not bundling email template because ${pathBasename(keycloakThemeEmailDirPath)} does not exist`,
|
||||||
`To start customizing the email template, run: 👉 npx create-keycloak-email-directory 👈`,
|
`To start customizing the email template, run: 👉 npx create-keycloak-email-directory 👈`
|
||||||
].join("\n"),
|
].join("\n")
|
||||||
);
|
);
|
||||||
doBundlesEmailTemplate = false;
|
doBundlesEmailTemplate = false;
|
||||||
break email;
|
break email;
|
||||||
@ -131,14 +131,14 @@ export function generateKeycloakThemeResources(params: {
|
|||||||
|
|
||||||
transformCodebase({
|
transformCodebase({
|
||||||
"srcDirPath": keycloakThemeEmailDirPath,
|
"srcDirPath": keycloakThemeEmailDirPath,
|
||||||
"destDirPath": pathJoin(themeDirPath, "..", "email"),
|
"destDirPath": pathJoin(themeDirPath, "..", "email")
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const { generateFtlFilesCode } = generateFtlFilesCodeFactory({
|
const { generateFtlFilesCode } = generateFtlFilesCodeFactory({
|
||||||
"indexHtmlCode": fs.readFileSync(pathJoin(reactAppBuildDirPath, "index.html")).toString("utf8"),
|
"indexHtmlCode": fs.readFileSync(pathJoin(reactAppBuildDirPath, "index.html")).toString("utf8"),
|
||||||
"cssGlobalsToDefine": allCssGlobalsToDefine,
|
"cssGlobalsToDefine": allCssGlobalsToDefine,
|
||||||
"buildOptions": buildOptions,
|
"buildOptions": buildOptions
|
||||||
});
|
});
|
||||||
|
|
||||||
[...pageIds, ...(buildOptions.extraPages ?? [])].forEach(pageId => {
|
[...pageIds, ...(buildOptions.extraPages ?? [])].forEach(pageId => {
|
||||||
@ -154,26 +154,26 @@ export function generateKeycloakThemeResources(params: {
|
|||||||
|
|
||||||
downloadBuiltinKeycloakTheme({
|
downloadBuiltinKeycloakTheme({
|
||||||
keycloakVersion,
|
keycloakVersion,
|
||||||
"destDirPath": tmpDirPath,
|
"destDirPath": tmpDirPath
|
||||||
});
|
});
|
||||||
|
|
||||||
const themeResourcesDirPath = pathJoin(themeDirPath, "resources");
|
const themeResourcesDirPath = pathJoin(themeDirPath, "resources");
|
||||||
|
|
||||||
transformCodebase({
|
transformCodebase({
|
||||||
"srcDirPath": pathJoin(tmpDirPath, "keycloak", "login", "resources"),
|
"srcDirPath": pathJoin(tmpDirPath, "keycloak", "login", "resources"),
|
||||||
"destDirPath": themeResourcesDirPath,
|
"destDirPath": themeResourcesDirPath
|
||||||
});
|
});
|
||||||
|
|
||||||
const reactAppPublicDirPath = pathJoin(reactAppBuildDirPath, "..", "public");
|
const reactAppPublicDirPath = pathJoin(reactAppBuildDirPath, "..", "public");
|
||||||
|
|
||||||
transformCodebase({
|
transformCodebase({
|
||||||
"srcDirPath": pathJoin(tmpDirPath, "keycloak", "common", "resources"),
|
"srcDirPath": pathJoin(tmpDirPath, "keycloak", "common", "resources"),
|
||||||
"destDirPath": pathJoin(themeResourcesDirPath, pathBasename(mockTestingResourcesCommonPath)),
|
"destDirPath": pathJoin(themeResourcesDirPath, pathBasename(mockTestingResourcesCommonPath))
|
||||||
});
|
});
|
||||||
|
|
||||||
transformCodebase({
|
transformCodebase({
|
||||||
"srcDirPath": themeResourcesDirPath,
|
"srcDirPath": themeResourcesDirPath,
|
||||||
"destDirPath": pathJoin(reactAppPublicDirPath, mockTestingResourcesPath),
|
"destDirPath": pathJoin(reactAppPublicDirPath, mockTestingResourcesPath)
|
||||||
});
|
});
|
||||||
|
|
||||||
const keycloakResourcesWithinPublicDirPath = pathJoin(reactAppPublicDirPath, mockTestingSubDirOfPublicDirBasename);
|
const keycloakResourcesWithinPublicDirPath = pathJoin(reactAppPublicDirPath, mockTestingSubDirOfPublicDirBasename);
|
||||||
@ -181,8 +181,8 @@ export function generateKeycloakThemeResources(params: {
|
|||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
pathJoin(keycloakResourcesWithinPublicDirPath, "README.txt"),
|
pathJoin(keycloakResourcesWithinPublicDirPath, "README.txt"),
|
||||||
Buffer.from(
|
Buffer.from(
|
||||||
["This is just a test folder that helps develop", "the login and register page without having to run a Keycloak container"].join(" "),
|
["This is just a test folder that helps develop", "the login and register page without having to run a Keycloak container"].join(" ")
|
||||||
),
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
fs.writeFileSync(pathJoin(keycloakResourcesWithinPublicDirPath, ".gitignore"), Buffer.from("*", "utf8"));
|
fs.writeFileSync(pathJoin(keycloakResourcesWithinPublicDirPath, ".gitignore"), Buffer.from("*", "utf8"));
|
||||||
@ -192,7 +192,7 @@ export function generateKeycloakThemeResources(params: {
|
|||||||
|
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
pathJoin(themeDirPath, "theme.properties"),
|
pathJoin(themeDirPath, "theme.properties"),
|
||||||
Buffer.from(["parent=keycloak", ...(buildOptions.extraThemeProperties ?? [])].join("\n\n"), "utf8"),
|
Buffer.from(["parent=keycloak", ...(buildOptions.extraThemeProperties ?? [])].join("\n\n"), "utf8")
|
||||||
);
|
);
|
||||||
|
|
||||||
return { doBundlesEmailTemplate };
|
return { doBundlesEmailTemplate };
|
||||||
|
@ -27,7 +27,7 @@ export function generateStartKeycloakTestingContainer(params: {
|
|||||||
const {
|
const {
|
||||||
keycloakThemeBuildingDirPath,
|
keycloakThemeBuildingDirPath,
|
||||||
keycloakVersion,
|
keycloakVersion,
|
||||||
buildOptions: { themeName },
|
buildOptions: { themeName }
|
||||||
} = params;
|
} = params;
|
||||||
|
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
@ -52,14 +52,14 @@ export function generateStartKeycloakTestingContainer(params: {
|
|||||||
"main",
|
"main",
|
||||||
"resources",
|
"resources",
|
||||||
"theme",
|
"theme",
|
||||||
themeName,
|
themeName
|
||||||
)}:/opt/keycloak/themes/${themeName}:rw \\`,
|
)}:/opt/keycloak/themes/${themeName}:rw \\`,
|
||||||
` -it quay.io/keycloak/keycloak:${keycloakVersion} \\`,
|
` -it quay.io/keycloak/keycloak:${keycloakVersion} \\`,
|
||||||
` start-dev`,
|
` start-dev`,
|
||||||
"",
|
""
|
||||||
].join("\n"),
|
].join("\n"),
|
||||||
"utf8",
|
"utf8"
|
||||||
),
|
),
|
||||||
{ "mode": 0o755 },
|
{ "mode": 0o755 }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ export function replaceImportsFromStaticInJsCode(params: { jsCode: string; build
|
|||||||
`
|
`
|
||||||
}
|
}
|
||||||
return "${u}";
|
return "${u}";
|
||||||
})()] = function(${e}) { return "${buildOptions.isStandalone ? "/build/" : ""}static/${language}/"`,
|
})()] = function(${e}) { return "${buildOptions.isStandalone ? "/build/" : ""}static/${language}/"`
|
||||||
];
|
];
|
||||||
|
|
||||||
const fixedJsCode = jsCode
|
const fixedJsCode = jsCode
|
||||||
@ -70,13 +70,13 @@ export function replaceImportsFromStaticInJsCode(params: { jsCode: string; build
|
|||||||
.replace(/([a-zA-Z]+\.[a-zA-Z]+)\+"static\//g, (...[, group]) =>
|
.replace(/([a-zA-Z]+\.[a-zA-Z]+)\+"static\//g, (...[, group]) =>
|
||||||
buildOptions.isStandalone
|
buildOptions.isStandalone
|
||||||
? `window.${ftlValuesGlobalName}.url.resourcesPath + "/build/static/`
|
? `window.${ftlValuesGlobalName}.url.resourcesPath + "/build/static/`
|
||||||
: `("${ftlValuesGlobalName}" in window ? "${buildOptions.urlOrigin}" : "") + ${group} + "static/`,
|
: `("${ftlValuesGlobalName}" in window ? "${buildOptions.urlOrigin}" : "") + ${group} + "static/`
|
||||||
)
|
)
|
||||||
//TODO: Write a test case for this
|
//TODO: Write a test case for this
|
||||||
.replace(/".chunk.css",([a-zA-Z])+=([a-zA-Z]+\.[a-zA-Z]+)\+([a-zA-Z]+),/, (...[, group1, group2, group3]) =>
|
.replace(/".chunk.css",([a-zA-Z])+=([a-zA-Z]+\.[a-zA-Z]+)\+([a-zA-Z]+),/, (...[, group1, group2, group3]) =>
|
||||||
buildOptions.isStandalone
|
buildOptions.isStandalone
|
||||||
? `".chunk.css",${group1} = window.${ftlValuesGlobalName}.url.resourcesPath + "/build/" + ${group3},`
|
? `".chunk.css",${group1} = window.${ftlValuesGlobalName}.url.resourcesPath + "/build/" + ${group3},`
|
||||||
: `".chunk.css",${group1} = ("${ftlValuesGlobalName}" in window ? "${buildOptions.urlOrigin}" : "") + ${group2} + ${group3},`,
|
: `".chunk.css",${group1} = ("${ftlValuesGlobalName}" in window ? "${buildOptions.urlOrigin}" : "") + ${group2} + ${group3},`
|
||||||
);
|
);
|
||||||
|
|
||||||
return { fixedJsCode };
|
return { fixedJsCode };
|
||||||
|
@ -25,7 +25,7 @@ export function replaceImportsInCssCode(params: { cssCode: string }): {
|
|||||||
const cssGlobalsToDefine: Record<string, string> = {};
|
const cssGlobalsToDefine: Record<string, string> = {};
|
||||||
|
|
||||||
new Set(cssCode.match(/url\(["']?\/[^/][^)"']+["']?\)[^;}]*/g) ?? []).forEach(
|
new Set(cssCode.match(/url\(["']?\/[^/][^)"']+["']?\)[^;}]*/g) ?? []).forEach(
|
||||||
match => (cssGlobalsToDefine["url" + crypto.createHash("sha256").update(match).digest("hex").substring(0, 15)] = match),
|
match => (cssGlobalsToDefine["url" + crypto.createHash("sha256").update(match).digest("hex").substring(0, 15)] = match)
|
||||||
);
|
);
|
||||||
|
|
||||||
let fixedCssCode = cssCode;
|
let fixedCssCode = cssCode;
|
||||||
@ -33,7 +33,7 @@ export function replaceImportsInCssCode(params: { cssCode: string }): {
|
|||||||
Object.keys(cssGlobalsToDefine).forEach(
|
Object.keys(cssGlobalsToDefine).forEach(
|
||||||
cssVariableName =>
|
cssVariableName =>
|
||||||
//NOTE: split/join pattern ~ replace all
|
//NOTE: split/join pattern ~ replace all
|
||||||
(fixedCssCode = fixedCssCode.split(cssGlobalsToDefine[cssVariableName]).join(`var(--${cssVariableName})`)),
|
(fixedCssCode = fixedCssCode.split(cssGlobalsToDefine[cssVariableName]).join(`var(--${cssVariableName})`))
|
||||||
);
|
);
|
||||||
|
|
||||||
return { fixedCssCode, cssGlobalsToDefine };
|
return { fixedCssCode, cssGlobalsToDefine };
|
||||||
@ -53,12 +53,12 @@ export function generateCssCodeToDefineGlobals(params: { cssGlobalsToDefine: Rec
|
|||||||
`--${cssVariableName}:`,
|
`--${cssVariableName}:`,
|
||||||
cssGlobalsToDefine[cssVariableName].replace(
|
cssGlobalsToDefine[cssVariableName].replace(
|
||||||
new RegExp(`url\\(${(buildOptions.urlPathname ?? "/").replace(/\//g, "\\/")}`, "g"),
|
new RegExp(`url\\(${(buildOptions.urlPathname ?? "/").replace(/\//g, "\\/")}`, "g"),
|
||||||
"url(${url.resourcesPath}/build/",
|
"url(${url.resourcesPath}/build/"
|
||||||
),
|
)
|
||||||
].join(" "),
|
].join(" ")
|
||||||
)
|
)
|
||||||
.map(line => ` ${line};`),
|
.map(line => ` ${line};`),
|
||||||
"}",
|
"}"
|
||||||
].join("\n"),
|
].join("\n")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ export function replaceImportsInInlineCssCode(params: { cssCode: string; buildOp
|
|||||||
(...[, group]) =>
|
(...[, group]) =>
|
||||||
`url(${
|
`url(${
|
||||||
buildOptions.isStandalone ? "${url.resourcesPath}/build/" + group : buildOptions.urlOrigin + (buildOptions.urlPathname ?? "/") + group
|
buildOptions.isStandalone ? "${url.resourcesPath}/build/" + group : buildOptions.urlOrigin + (buildOptions.urlPathname ?? "/") + group
|
||||||
})`,
|
})`
|
||||||
);
|
);
|
||||||
|
|
||||||
return { fixedCssCode };
|
return { fixedCssCode };
|
||||||
|
@ -21,12 +21,12 @@ if (require.main === module) {
|
|||||||
|
|
||||||
downloadBuiltinKeycloakTheme({
|
downloadBuiltinKeycloakTheme({
|
||||||
keycloakVersion,
|
keycloakVersion,
|
||||||
"destDirPath": builtinKeycloakThemeTmpDirPath,
|
"destDirPath": builtinKeycloakThemeTmpDirPath
|
||||||
});
|
});
|
||||||
|
|
||||||
transformCodebase({
|
transformCodebase({
|
||||||
"srcDirPath": pathJoin(builtinKeycloakThemeTmpDirPath, "base", "email"),
|
"srcDirPath": pathJoin(builtinKeycloakThemeTmpDirPath, "base", "email"),
|
||||||
"destDirPath": keycloakThemeEmailDirPath,
|
"destDirPath": keycloakThemeEmailDirPath
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(`./${pathBasename(keycloakThemeEmailDirPath)} ready to be customized`);
|
console.log(`./${pathBasename(keycloakThemeEmailDirPath)} ready to be customized`);
|
||||||
|
@ -12,7 +12,7 @@ export function downloadBuiltinKeycloakTheme(params: { keycloakVersion: string;
|
|||||||
downloadAndUnzip({
|
downloadAndUnzip({
|
||||||
"destDirPath": destDirPath,
|
"destDirPath": destDirPath,
|
||||||
"url": `https://github.com/keycloak/keycloak/archive/refs/tags/${keycloakVersion}.zip`,
|
"url": `https://github.com/keycloak/keycloak/archive/refs/tags/${keycloakVersion}.zip`,
|
||||||
"pathOfDirToExtractInArchive": `keycloak-${keycloakVersion}/themes/src/main/resources${ext}/theme`,
|
"pathOfDirToExtractInArchive": `keycloak-${keycloakVersion}/themes/src/main/resources${ext}/theme`
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -27,7 +27,7 @@ if (require.main === module) {
|
|||||||
|
|
||||||
downloadBuiltinKeycloakTheme({
|
downloadBuiltinKeycloakTheme({
|
||||||
keycloakVersion,
|
keycloakVersion,
|
||||||
destDirPath,
|
destDirPath
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ for (const keycloakVersion of ["11.0.3", "15.0.2", "18.0.1"]) {
|
|||||||
|
|
||||||
downloadBuiltinKeycloakTheme({
|
downloadBuiltinKeycloakTheme({
|
||||||
keycloakVersion,
|
keycloakVersion,
|
||||||
"destDirPath": tmpDirPath,
|
"destDirPath": tmpDirPath
|
||||||
});
|
});
|
||||||
|
|
||||||
type Dictionary = { [idiomId: string]: string };
|
type Dictionary = { [idiomId: string]: string };
|
||||||
@ -42,8 +42,8 @@ for (const keycloakVersion of ["11.0.3", "15.0.2", "18.0.1"]) {
|
|||||||
|
|
||||||
(record[typeOfPage] ??= {})[language.replace(/_/g, "-")] = Object.fromEntries(
|
(record[typeOfPage] ??= {})[language.replace(/_/g, "-")] = Object.fromEntries(
|
||||||
Object.entries(propertiesParser.parse(fs.readFileSync(pathJoin(baseThemeDirPath, filePath)).toString("utf8"))).map(
|
Object.entries(propertiesParser.parse(fs.readFileSync(pathJoin(baseThemeDirPath, filePath)).toString("utf8"))).map(
|
||||||
([key, value]: any) => [key, value.replace(/''/g, "'")],
|
([key, value]: any) => [key, value.replace(/''/g, "'")]
|
||||||
),
|
)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -69,10 +69,10 @@ for (const keycloakVersion of ["11.0.3", "15.0.2", "18.0.1"]) {
|
|||||||
`const messages= ${JSON.stringify(recordForPageType[language], null, 2)};`,
|
`const messages= ${JSON.stringify(recordForPageType[language], null, 2)};`,
|
||||||
"",
|
"",
|
||||||
"export default messages;",
|
"export default messages;",
|
||||||
"/* spell-checker: enable */",
|
"/* spell-checker: enable */"
|
||||||
].join("\n"),
|
].join("\n"),
|
||||||
"utf8",
|
"utf8"
|
||||||
),
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
console.log(`${filePath} wrote`);
|
console.log(`${filePath} wrote`);
|
||||||
|
@ -14,14 +14,14 @@ fs.writeFileSync(
|
|||||||
return {
|
return {
|
||||||
...packageJsonParsed,
|
...packageJsonParsed,
|
||||||
"main": packageJsonParsed["main"].replace(/^dist\//, ""),
|
"main": packageJsonParsed["main"].replace(/^dist\//, ""),
|
||||||
"types": packageJsonParsed["types"].replace(/^dist\//, ""),
|
"types": packageJsonParsed["types"].replace(/^dist\//, "")
|
||||||
};
|
};
|
||||||
})(),
|
})(),
|
||||||
null,
|
null,
|
||||||
2,
|
2
|
||||||
),
|
),
|
||||||
"utf8",
|
"utf8"
|
||||||
),
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
const commonThirdPartyDeps = (() => {
|
const commonThirdPartyDeps = (() => {
|
||||||
@ -33,10 +33,10 @@ const commonThirdPartyDeps = (() => {
|
|||||||
.map(namespaceModuleName =>
|
.map(namespaceModuleName =>
|
||||||
fs
|
fs
|
||||||
.readdirSync(pathJoin(keycloakifyDirPath, "node_modules", namespaceModuleName))
|
.readdirSync(pathJoin(keycloakifyDirPath, "node_modules", namespaceModuleName))
|
||||||
.map(submoduleName => `${namespaceModuleName}/${submoduleName}`),
|
.map(submoduleName => `${namespaceModuleName}/${submoduleName}`)
|
||||||
)
|
)
|
||||||
.reduce((prev, curr) => [...prev, ...curr], []),
|
.reduce((prev, curr) => [...prev, ...curr], []),
|
||||||
...standaloneModuleNames,
|
...standaloneModuleNames
|
||||||
];
|
];
|
||||||
})();
|
})();
|
||||||
|
|
||||||
@ -55,8 +55,8 @@ const execYarnLink = (params: { targetModuleName?: string; cwd: string }) => {
|
|||||||
cwd,
|
cwd,
|
||||||
"env": {
|
"env": {
|
||||||
...process.env,
|
...process.env,
|
||||||
"HOME": yarnHomeDirPath,
|
"HOME": yarnHomeDirPath
|
||||||
},
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ commonThirdPartyDeps.forEach(commonThirdPartyDep => {
|
|||||||
console.log(`${current}/${total} ${commonThirdPartyDep}`);
|
console.log(`${current}/${total} ${commonThirdPartyDep}`);
|
||||||
|
|
||||||
const localInstallPath = pathJoin(
|
const localInstallPath = pathJoin(
|
||||||
...[keycloakifyDirPath, "node_modules", ...(commonThirdPartyDep.startsWith("@") ? commonThirdPartyDep.split("/") : [commonThirdPartyDep])],
|
...[keycloakifyDirPath, "node_modules", ...(commonThirdPartyDep.startsWith("@") ? commonThirdPartyDep.split("/") : [commonThirdPartyDep])]
|
||||||
);
|
);
|
||||||
|
|
||||||
execYarnLink({ "cwd": localInstallPath });
|
execYarnLink({ "cwd": localInstallPath });
|
||||||
@ -85,8 +85,8 @@ commonThirdPartyDeps.forEach(commonThirdPartyDep => {
|
|||||||
testAppNames.forEach(testAppName =>
|
testAppNames.forEach(testAppName =>
|
||||||
execYarnLink({
|
execYarnLink({
|
||||||
"cwd": getTestAppPath(testAppName),
|
"cwd": getTestAppPath(testAppName),
|
||||||
"targetModuleName": commonThirdPartyDep,
|
"targetModuleName": commonThirdPartyDep
|
||||||
}),
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -97,6 +97,6 @@ execYarnLink({ "cwd": pathJoin(keycloakifyDirPath, "dist") });
|
|||||||
testAppNames.forEach(testAppName =>
|
testAppNames.forEach(testAppName =>
|
||||||
execYarnLink({
|
execYarnLink({
|
||||||
"cwd": getTestAppPath(testAppName),
|
"cwd": getTestAppPath(testAppName),
|
||||||
"targetModuleName": "keycloakify",
|
"targetModuleName": "keycloakify"
|
||||||
}),
|
})
|
||||||
);
|
);
|
||||||
|
@ -24,9 +24,9 @@ export async function promptKeycloakVersion() {
|
|||||||
"count": 10,
|
"count": 10,
|
||||||
"doIgnoreBeta": true,
|
"doIgnoreBeta": true,
|
||||||
"owner": "keycloak",
|
"owner": "keycloak",
|
||||||
"repo": "keycloak",
|
"repo": "keycloak"
|
||||||
}).then(arr => arr.map(({ tag }) => tag))),
|
}).then(arr => arr.map(({ tag }) => tag))),
|
||||||
"11.0.3",
|
"11.0.3"
|
||||||
];
|
];
|
||||||
|
|
||||||
if (process.env["GITHUB_ACTIONS"] === "true") {
|
if (process.env["GITHUB_ACTIONS"] === "true") {
|
||||||
@ -34,7 +34,7 @@ export async function promptKeycloakVersion() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const { value: keycloakVersion } = await cliSelect<string>({
|
const { value: keycloakVersion } = await cliSelect<string>({
|
||||||
"values": tags,
|
"values": tags
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
console.log("Aborting");
|
console.log("Aborting");
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ export namespace NpmModuleVersion {
|
|||||||
...(() => {
|
...(() => {
|
||||||
const str = match[4];
|
const str = match[4];
|
||||||
return str === undefined ? {} : { "betaPreRelease": parseInt(str) };
|
return str === undefined ? {} : { "betaPreRelease": parseInt(str) };
|
||||||
})(),
|
})()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,14 +18,14 @@ export function downloadAndUnzip(params: { url: string; destDirPath: string; pat
|
|||||||
execSync(`curl -L ${url} -o ${zipFilePath}`, { "cwd": tmpDirPath });
|
execSync(`curl -L ${url} -o ${zipFilePath}`, { "cwd": tmpDirPath });
|
||||||
|
|
||||||
execSync(`unzip -o ${zipFilePath}${pathOfDirToExtractInArchive === undefined ? "" : ` "${pathOfDirToExtractInArchive}/**/*"`}`, {
|
execSync(`unzip -o ${zipFilePath}${pathOfDirToExtractInArchive === undefined ? "" : ` "${pathOfDirToExtractInArchive}/**/*"`}`, {
|
||||||
"cwd": tmpDirPath,
|
"cwd": tmpDirPath
|
||||||
});
|
});
|
||||||
|
|
||||||
rm(pathBasename(url), { "cwd": tmpDirPath });
|
rm(pathBasename(url), { "cwd": tmpDirPath });
|
||||||
|
|
||||||
transformCodebase({
|
transformCodebase({
|
||||||
"srcDirPath": pathOfDirToExtractInArchive === undefined ? tmpDirPath : pathJoin(tmpDirPath, pathOfDirToExtractInArchive),
|
"srcDirPath": pathOfDirToExtractInArchive === undefined ? tmpDirPath : pathJoin(tmpDirPath, pathOfDirToExtractInArchive),
|
||||||
destDirPath,
|
destDirPath
|
||||||
});
|
});
|
||||||
|
|
||||||
rm_r(tmpDirPath);
|
rm_r(tmpDirPath);
|
||||||
|
@ -5,6 +5,6 @@ import * as fs from "fs";
|
|||||||
|
|
||||||
Object.entries<string>(JSON.parse(fs.readFileSync(pathJoin(getProjectRoot(), "package.json")).toString("utf8"))["bin"]).forEach(([, scriptPath]) =>
|
Object.entries<string>(JSON.parse(fs.readFileSync(pathJoin(getProjectRoot(), "package.json")).toString("utf8"))["bin"]).forEach(([, scriptPath]) =>
|
||||||
child_process.execSync(`chmod +x ${scriptPath}`, {
|
child_process.execSync(`chmod +x ${scriptPath}`, {
|
||||||
"cwd": getProjectRoot(),
|
"cwd": getProjectRoot()
|
||||||
}),
|
})
|
||||||
);
|
);
|
||||||
|
@ -19,7 +19,7 @@ export function listTagsFactory(params: { octokit: Octokit }) {
|
|||||||
owner,
|
owner,
|
||||||
repo,
|
repo,
|
||||||
per_page,
|
per_page,
|
||||||
"page": page++,
|
"page": page++
|
||||||
});
|
});
|
||||||
|
|
||||||
for (const branch of resp.data.map(({ name }) => name)) {
|
for (const branch of resp.data.map(({ name }) => name)) {
|
||||||
|
@ -10,7 +10,7 @@ export function rm(pathToRemove: string, options?: { cwd: string }) {
|
|||||||
rmInternal({
|
rmInternal({
|
||||||
pathToRemove,
|
pathToRemove,
|
||||||
"args": undefined,
|
"args": undefined,
|
||||||
"cwd": options?.cwd,
|
"cwd": options?.cwd
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ export function rm_r(pathToRemove: string, options?: { cwd: string }) {
|
|||||||
rmInternal({
|
rmInternal({
|
||||||
pathToRemove,
|
pathToRemove,
|
||||||
"args": "r",
|
"args": "r",
|
||||||
"cwd": options?.cwd,
|
"cwd": options?.cwd
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,6 +26,6 @@ export function rm_rf(pathToRemove: string, options?: { cwd: string }) {
|
|||||||
rmInternal({
|
rmInternal({
|
||||||
pathToRemove,
|
pathToRemove,
|
||||||
"args": "rf",
|
"args": "rf",
|
||||||
"cwd": options?.cwd,
|
"cwd": options?.cwd
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -16,8 +16,8 @@ export function transformCodebase(params: { srcDirPath: string; destDirPath: str
|
|||||||
srcDirPath,
|
srcDirPath,
|
||||||
destDirPath,
|
destDirPath,
|
||||||
transformSourceCode = id<TransformSourceCode>(({ sourceCode }) => ({
|
transformSourceCode = id<TransformSourceCode>(({ sourceCode }) => ({
|
||||||
"modifiedSourceCode": sourceCode,
|
"modifiedSourceCode": sourceCode
|
||||||
})),
|
}))
|
||||||
} = params;
|
} = params;
|
||||||
|
|
||||||
for (const file_relative_path of crawl(srcDirPath)) {
|
for (const file_relative_path of crawl(srcDirPath)) {
|
||||||
@ -25,7 +25,7 @@ export function transformCodebase(params: { srcDirPath: string; destDirPath: str
|
|||||||
|
|
||||||
const transformSourceCodeResult = transformSourceCode({
|
const transformSourceCodeResult = transformSourceCode({
|
||||||
"sourceCode": fs.readFileSync(filePath),
|
"sourceCode": fs.readFileSync(filePath),
|
||||||
"filePath": path.join(srcDirPath, file_relative_path),
|
"filePath": path.join(srcDirPath, file_relative_path)
|
||||||
});
|
});
|
||||||
|
|
||||||
if (transformSourceCodeResult === undefined) {
|
if (transformSourceCodeResult === undefined) {
|
||||||
@ -33,14 +33,14 @@ export function transformCodebase(params: { srcDirPath: string; destDirPath: str
|
|||||||
}
|
}
|
||||||
|
|
||||||
fs.mkdirSync(path.dirname(path.join(destDirPath, file_relative_path)), {
|
fs.mkdirSync(path.dirname(path.join(destDirPath, file_relative_path)), {
|
||||||
"recursive": true,
|
"recursive": true
|
||||||
});
|
});
|
||||||
|
|
||||||
const { newFileName, modifiedSourceCode } = transformSourceCodeResult;
|
const { newFileName, modifiedSourceCode } = transformSourceCodeResult;
|
||||||
|
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
path.join(path.dirname(path.join(destDirPath, file_relative_path)), newFileName ?? path.basename(file_relative_path)),
|
path.join(path.dirname(path.join(destDirPath, file_relative_path)), newFileName ?? path.basename(file_relative_path)),
|
||||||
modifiedSourceCode,
|
modifiedSourceCode
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ const KcApp = memo(({ kcContext, i18n: userProvidedI18n, ...props }: { kcContext
|
|||||||
const i18n = useI18n({
|
const i18n = useI18n({
|
||||||
kcContext,
|
kcContext,
|
||||||
"extraMessages": {},
|
"extraMessages": {},
|
||||||
"doSkip": userProvidedI18n !== undefined,
|
"doSkip": userProvidedI18n !== undefined
|
||||||
});
|
});
|
||||||
|
|
||||||
return userProvidedI18n ?? i18n;
|
return userProvidedI18n ?? i18n;
|
||||||
|
@ -37,7 +37,7 @@ export const defaultKcTemplateProps = {
|
|||||||
"stylesCommon": [
|
"stylesCommon": [
|
||||||
"node_modules/patternfly/dist/css/patternfly.min.css",
|
"node_modules/patternfly/dist/css/patternfly.min.css",
|
||||||
"node_modules/patternfly/dist/css/patternfly-additions.min.css",
|
"node_modules/patternfly/dist/css/patternfly-additions.min.css",
|
||||||
"lib/zocial/zocial.css",
|
"lib/zocial/zocial.css"
|
||||||
],
|
],
|
||||||
"styles": ["css/login.css"],
|
"styles": ["css/login.css"],
|
||||||
"scripts": [],
|
"scripts": [],
|
||||||
@ -60,7 +60,7 @@ export const defaultKcTemplateProps = {
|
|||||||
"kcFormGroupClass": ["form-group"],
|
"kcFormGroupClass": ["form-group"],
|
||||||
"kcLabelWrapperClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"],
|
"kcLabelWrapperClass": ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"],
|
||||||
"kcSignUpClass": ["login-pf-signup"],
|
"kcSignUpClass": ["login-pf-signup"],
|
||||||
"kcInfoAreaWrapperClass": [],
|
"kcInfoAreaWrapperClass": []
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
assert<typeof defaultKcTemplateProps extends KcTemplateProps ? true : false>();
|
assert<typeof defaultKcTemplateProps extends KcTemplateProps ? true : false>();
|
||||||
@ -192,7 +192,7 @@ export const defaultKcProps = {
|
|||||||
"kcSelectOTPListItemClass": ["card-pf-body", "card-pf-top-element"],
|
"kcSelectOTPListItemClass": ["card-pf-body", "card-pf-top-element"],
|
||||||
"kcAuthenticatorOtpCircleClass": ["fa", "fa-mobile", "card-pf-icon-circle"],
|
"kcAuthenticatorOtpCircleClass": ["fa", "fa-mobile", "card-pf-icon-circle"],
|
||||||
"kcSelectOTPItemHeadingClass": ["card-pf-title", "text-center"],
|
"kcSelectOTPItemHeadingClass": ["card-pf-title", "text-center"],
|
||||||
"kcFormOptionsWrapperClass": [],
|
"kcFormOptionsWrapperClass": []
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
assert<typeof defaultKcProps extends KcProps ? true : false>();
|
assert<typeof defaultKcProps extends KcProps ? true : false>();
|
||||||
|
@ -74,7 +74,7 @@ const Login = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.Lo
|
|||||||
? { "disabled": true }
|
? { "disabled": true }
|
||||||
: {
|
: {
|
||||||
"autoFocus": true,
|
"autoFocus": true,
|
||||||
"autoComplete": "off",
|
"autoComplete": "off"
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
@ -106,7 +106,7 @@ const Login = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.Lo
|
|||||||
type="checkbox"
|
type="checkbox"
|
||||||
{...(login.rememberMe
|
{...(login.rememberMe
|
||||||
? {
|
? {
|
||||||
"checked": true,
|
"checked": true
|
||||||
}
|
}
|
||||||
: {})}
|
: {})}
|
||||||
/>
|
/>
|
||||||
@ -132,7 +132,7 @@ const Login = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.Lo
|
|||||||
name="credentialId"
|
name="credentialId"
|
||||||
{...(auth?.selectedCredential !== undefined
|
{...(auth?.selectedCredential !== undefined
|
||||||
? {
|
? {
|
||||||
"value": auth.selectedCredential,
|
"value": auth.selectedCredential
|
||||||
}
|
}
|
||||||
: {})}
|
: {})}
|
||||||
/>
|
/>
|
||||||
@ -142,7 +142,7 @@ const Login = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.Lo
|
|||||||
props.kcButtonClass,
|
props.kcButtonClass,
|
||||||
props.kcButtonPrimaryClass,
|
props.kcButtonPrimaryClass,
|
||||||
props.kcButtonBlockClass,
|
props.kcButtonBlockClass,
|
||||||
props.kcButtonLargeClass,
|
props.kcButtonLargeClass
|
||||||
)}
|
)}
|
||||||
name="login"
|
name="login"
|
||||||
id="kc-login"
|
id="kc-login"
|
||||||
@ -159,7 +159,7 @@ const Login = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.Lo
|
|||||||
<ul
|
<ul
|
||||||
className={cx(
|
className={cx(
|
||||||
props.kcFormSocialAccountListClass,
|
props.kcFormSocialAccountListClass,
|
||||||
social.providers.length > 4 && props.kcFormSocialAccountDoubleListClass,
|
social.providers.length > 4 && props.kcFormSocialAccountDoubleListClass
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{social.providers.map(p => (
|
{social.providers.map(p => (
|
||||||
|
@ -15,7 +15,7 @@ const LoginConfigTotp = memo(({ kcContext, i18n, ...props }: { kcContext: KcCont
|
|||||||
const algToKeyUriAlg: Record<KcContextBase.LoginConfigTotp["totp"]["policy"]["algorithm"], string> = {
|
const algToKeyUriAlg: Record<KcContextBase.LoginConfigTotp["totp"]["policy"]["algorithm"], string> = {
|
||||||
HmacSHA1: "SHA1",
|
HmacSHA1: "SHA1",
|
||||||
HmacSHA256: "SHA256",
|
HmacSHA256: "SHA256",
|
||||||
HmacSHA512: "SHA512",
|
HmacSHA512: "SHA512"
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -159,7 +159,7 @@ const LoginConfigTotp = memo(({ kcContext, i18n, ...props }: { kcContext: KcCont
|
|||||||
props.kcButtonClass,
|
props.kcButtonClass,
|
||||||
props.kcButtonDefaultClass,
|
props.kcButtonDefaultClass,
|
||||||
props.kcButtonLargeClass,
|
props.kcButtonLargeClass,
|
||||||
props.kcButtonLargeClass,
|
props.kcButtonLargeClass
|
||||||
)}
|
)}
|
||||||
id="cancelTOTPBtn"
|
id="cancelTOTPBtn"
|
||||||
name="cancel-aia"
|
name="cancel-aia"
|
||||||
|
@ -19,7 +19,7 @@ const LoginOtp = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase
|
|||||||
|
|
||||||
headInsert({
|
headInsert({
|
||||||
"type": "javascript",
|
"type": "javascript",
|
||||||
"src": pathJoin(kcContext.url.resourcesCommonPath, "node_modules/jquery/dist/jquery.min.js"),
|
"src": pathJoin(kcContext.url.resourcesCommonPath, "node_modules/jquery/dist/jquery.min.js")
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
if (isCleanedUp) return;
|
if (isCleanedUp) return;
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ const LoginUpdatePassword = memo(({ kcContext, i18n, ...props }: { kcContext: Kc
|
|||||||
props.kcButtonClass,
|
props.kcButtonClass,
|
||||||
props.kcButtonPrimaryClass,
|
props.kcButtonPrimaryClass,
|
||||||
props.kcButtonBlockClass,
|
props.kcButtonBlockClass,
|
||||||
props.kcButtonLargeClass,
|
props.kcButtonLargeClass
|
||||||
)}
|
)}
|
||||||
type="submit"
|
type="submit"
|
||||||
defaultValue={msgStr("doSubmit")}
|
defaultValue={msgStr("doSubmit")}
|
||||||
|
@ -105,7 +105,7 @@ const LoginUpdateProfile = memo(({ kcContext, i18n, ...props }: { kcContext: KcC
|
|||||||
props.kcButtonClass,
|
props.kcButtonClass,
|
||||||
props.kcButtonPrimaryClass,
|
props.kcButtonPrimaryClass,
|
||||||
props.kcButtonBlockClass,
|
props.kcButtonBlockClass,
|
||||||
props.kcButtonLargeClass,
|
props.kcButtonLargeClass
|
||||||
)}
|
)}
|
||||||
type="submit"
|
type="submit"
|
||||||
defaultValue={msgStr("doSubmit")}
|
defaultValue={msgStr("doSubmit")}
|
||||||
|
@ -35,7 +35,7 @@ const LogoutConfirm = memo(({ kcContext, i18n, ...props }: { kcContext: KcContex
|
|||||||
props.kcButtonClass,
|
props.kcButtonClass,
|
||||||
props.kcButtonPrimaryClass,
|
props.kcButtonPrimaryClass,
|
||||||
props.kcButtonBlockClass,
|
props.kcButtonBlockClass,
|
||||||
props.kcButtonLargeClass,
|
props.kcButtonLargeClass
|
||||||
)}
|
)}
|
||||||
name="confirmLogout"
|
name="confirmLogout"
|
||||||
id="kc-logout"
|
id="kc-logout"
|
||||||
|
@ -111,7 +111,7 @@ const Register = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase
|
|||||||
<div
|
<div
|
||||||
className={cx(
|
className={cx(
|
||||||
props.kcFormGroupClass,
|
props.kcFormGroupClass,
|
||||||
messagesPerField.printIfExists("password-confirm", props.kcFormGroupErrorClass),
|
messagesPerField.printIfExists("password-confirm", props.kcFormGroupErrorClass)
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<div className={cx(props.kcLabelWrapperClass)}>
|
<div className={cx(props.kcLabelWrapperClass)}>
|
||||||
|
@ -18,9 +18,9 @@ const RegisterUserProfile = memo(({ kcContext, i18n, ...props_ }: { kcContext: K
|
|||||||
const props = useMemo(
|
const props = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
...props_,
|
...props_,
|
||||||
"kcFormGroupClass": cx(props_.kcFormGroupClass, css({ "marginBottom": 20 })),
|
"kcFormGroupClass": cx(props_.kcFormGroupClass, css({ "marginBottom": 20 }))
|
||||||
}),
|
}),
|
||||||
[cx, css],
|
[cx, css]
|
||||||
);
|
);
|
||||||
|
|
||||||
const [isFomSubmittable, setIsFomSubmittable] = useState(false);
|
const [isFomSubmittable, setIsFomSubmittable] = useState(false);
|
||||||
@ -79,10 +79,10 @@ const UserProfileFormFields = memo(({ kcContext, onIsFormSubmittableValueChange,
|
|||||||
const {
|
const {
|
||||||
formValidationState: { fieldStateByAttributeName, isFormSubmittable },
|
formValidationState: { fieldStateByAttributeName, isFormSubmittable },
|
||||||
formValidationReducer,
|
formValidationReducer,
|
||||||
attributesWithPassword,
|
attributesWithPassword
|
||||||
} = useFormValidationSlice({
|
} = useFormValidationSlice({
|
||||||
kcContext,
|
kcContext,
|
||||||
i18n,
|
i18n
|
||||||
});
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -94,22 +94,22 @@ const UserProfileFormFields = memo(({ kcContext, onIsFormSubmittableValueChange,
|
|||||||
[name]: [string],
|
[name]: [string],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
target: { value },
|
target: { value }
|
||||||
},
|
}
|
||||||
]: [React.ChangeEvent<HTMLInputElement | HTMLSelectElement>],
|
]: [React.ChangeEvent<HTMLInputElement | HTMLSelectElement>]
|
||||||
) =>
|
) =>
|
||||||
formValidationReducer({
|
formValidationReducer({
|
||||||
"action": "update value",
|
"action": "update value",
|
||||||
name,
|
name,
|
||||||
"newValue": value,
|
"newValue": value
|
||||||
}),
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
const onBlurFactory = useCallbackFactory(([name]: [string]) =>
|
const onBlurFactory = useCallbackFactory(([name]: [string]) =>
|
||||||
formValidationReducer({
|
formValidationReducer({
|
||||||
"action": "focus lost",
|
"action": "focus lost",
|
||||||
name,
|
name
|
||||||
}),
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
let currentGroup = "";
|
let currentGroup = "";
|
||||||
@ -200,8 +200,8 @@ const UserProfileFormFields = memo(({ kcContext, onIsFormSubmittableValueChange,
|
|||||||
props.kcInputErrorMessageClass,
|
props.kcInputErrorMessageClass,
|
||||||
css({
|
css({
|
||||||
"position": displayableErrors.length === 1 ? "absolute" : undefined,
|
"position": displayableErrors.length === 1 ? "absolute" : undefined,
|
||||||
"& > span": { "display": "block" },
|
"& > span": { "display": "block" }
|
||||||
}),
|
})
|
||||||
)}
|
)}
|
||||||
aria-live="polite"
|
aria-live="polite"
|
||||||
>
|
>
|
||||||
|
@ -39,7 +39,7 @@ const Template = memo((props: TemplateProps) => {
|
|||||||
infoNode = null,
|
infoNode = null,
|
||||||
kcContext,
|
kcContext,
|
||||||
i18n,
|
i18n,
|
||||||
doFetchDefaultThemeResources,
|
doFetchDefaultThemeResources
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
const { cx } = useCssAndCx();
|
const { cx } = useCssAndCx();
|
||||||
@ -68,16 +68,16 @@ const Template = memo((props: TemplateProps) => {
|
|||||||
Promise.all(
|
Promise.all(
|
||||||
[
|
[
|
||||||
...toArr(props.stylesCommon).map(relativePath => pathJoin(url.resourcesCommonPath, relativePath)),
|
...toArr(props.stylesCommon).map(relativePath => pathJoin(url.resourcesCommonPath, relativePath)),
|
||||||
...toArr(props.styles).map(relativePath => pathJoin(url.resourcesPath, relativePath)),
|
...toArr(props.styles).map(relativePath => pathJoin(url.resourcesPath, relativePath))
|
||||||
]
|
]
|
||||||
.reverse()
|
.reverse()
|
||||||
.map(href =>
|
.map(href =>
|
||||||
headInsert({
|
headInsert({
|
||||||
"type": "css",
|
"type": "css",
|
||||||
href,
|
href,
|
||||||
"position": "prepend",
|
"position": "prepend"
|
||||||
}),
|
})
|
||||||
),
|
)
|
||||||
).then(() => {
|
).then(() => {
|
||||||
if (isUnmounted) {
|
if (isUnmounted) {
|
||||||
return;
|
return;
|
||||||
@ -89,8 +89,8 @@ const Template = memo((props: TemplateProps) => {
|
|||||||
toArr(props.scripts).forEach(relativePath =>
|
toArr(props.scripts).forEach(relativePath =>
|
||||||
headInsert({
|
headInsert({
|
||||||
"type": "javascript",
|
"type": "javascript",
|
||||||
"src": pathJoin(url.resourcesPath, relativePath),
|
"src": pathJoin(url.resourcesPath, relativePath)
|
||||||
}),
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
if (props.kcHtmlClass !== undefined) {
|
if (props.kcHtmlClass !== undefined) {
|
||||||
@ -211,7 +211,7 @@ const Template = memo((props: TemplateProps) => {
|
|||||||
<span
|
<span
|
||||||
className="kc-feedback-text"
|
className="kc-feedback-text"
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
"__html": message.summary,
|
"__html": message.summary
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -36,7 +36,7 @@ export function useDownloadTerms(params: {
|
|||||||
const downloadTermMarkdownConst = useConstCallback(downloadTermMarkdown);
|
const downloadTermMarkdownConst = useConstCallback(downloadTermMarkdown);
|
||||||
|
|
||||||
const downloadTermMarkdownMemoized = useConst(() =>
|
const downloadTermMarkdownMemoized = useConst(() =>
|
||||||
memoize((currentLanguageTag: string) => downloadTermMarkdownConst({ currentLanguageTag }), { "promise": true }),
|
memoize((currentLanguageTag: string) => downloadTermMarkdownConst({ currentLanguageTag }), { "promise": true })
|
||||||
);
|
);
|
||||||
|
|
||||||
return { downloadTermMarkdownMemoized };
|
return { downloadTermMarkdownMemoized };
|
||||||
@ -48,7 +48,7 @@ export function useDownloadTerms(params: {
|
|||||||
}
|
}
|
||||||
|
|
||||||
downloadTermMarkdownMemoized(kcContext.locale?.currentLanguageTag ?? fallbackLanguageTag).then(
|
downloadTermMarkdownMemoized(kcContext.locale?.currentLanguageTag ?? fallbackLanguageTag).then(
|
||||||
thermMarkdown => (evtTermMarkdown.state = thermMarkdown),
|
thermMarkdown => (evtTermMarkdown.state = thermMarkdown)
|
||||||
);
|
);
|
||||||
}, []);
|
}, []);
|
||||||
}
|
}
|
||||||
@ -82,7 +82,7 @@ const Terms = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.Te
|
|||||||
props.kcButtonClass,
|
props.kcButtonClass,
|
||||||
props.kcButtonClass,
|
props.kcButtonClass,
|
||||||
props.kcButtonPrimaryClass,
|
props.kcButtonPrimaryClass,
|
||||||
props.kcButtonLargeClass,
|
props.kcButtonLargeClass
|
||||||
)}
|
)}
|
||||||
name="accept"
|
name="accept"
|
||||||
id="kc-accept"
|
id="kc-accept"
|
||||||
|
@ -29,8 +29,8 @@ export function getKcContext<KcContextExtended extends { pageId: string } = neve
|
|||||||
[
|
[
|
||||||
`WARNING: You declared the non build in page ${mockPageId} but you didn't `,
|
`WARNING: You declared the non build in page ${mockPageId} but you didn't `,
|
||||||
`provide mock data needed to debug the page outside of Keycloak as you are trying to do now.`,
|
`provide mock data needed to debug the page outside of Keycloak as you are trying to do now.`,
|
||||||
`Please check the documentation of the getKcContext function`,
|
`Please check the documentation of the getKcContext function`
|
||||||
].join("\n"),
|
].join("\n")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,13 +38,13 @@ export function getKcContext<KcContextExtended extends { pageId: string } = neve
|
|||||||
|
|
||||||
deepAssign({
|
deepAssign({
|
||||||
"target": kcContext,
|
"target": kcContext,
|
||||||
"source": kcContextDefaultMock !== undefined ? kcContextDefaultMock : { "pageId": mockPageId, ...kcContextCommonMock },
|
"source": kcContextDefaultMock !== undefined ? kcContextDefaultMock : { "pageId": mockPageId, ...kcContextCommonMock }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (partialKcContextCustomMock !== undefined) {
|
if (partialKcContextCustomMock !== undefined) {
|
||||||
deepAssign({
|
deepAssign({
|
||||||
"target": kcContext,
|
"target": kcContext,
|
||||||
"source": partialKcContextCustomMock,
|
"source": partialKcContextCustomMock
|
||||||
});
|
});
|
||||||
|
|
||||||
if (partialKcContextCustomMock.pageId === "register-user-profile.ftl") {
|
if (partialKcContextCustomMock.pageId === "register-user-profile.ftl") {
|
||||||
@ -56,7 +56,7 @@ export function getKcContext<KcContextExtended extends { pageId: string } = neve
|
|||||||
id<KcContextBase.RegisterUserProfile>(kcContext).profile.attributesByName = {};
|
id<KcContextBase.RegisterUserProfile>(kcContext).profile.attributesByName = {};
|
||||||
|
|
||||||
const partialAttributes = [
|
const partialAttributes = [
|
||||||
...((partialKcContextCustomMock as DeepPartial<KcContextBase.RegisterUserProfile>).profile?.attributes ?? []),
|
...((partialKcContextCustomMock as DeepPartial<KcContextBase.RegisterUserProfile>).profile?.attributes ?? [])
|
||||||
].filter(exclude(undefined));
|
].filter(exclude(undefined));
|
||||||
|
|
||||||
attributes.forEach(attribute => {
|
attributes.forEach(attribute => {
|
||||||
@ -66,7 +66,7 @@ export function getKcContext<KcContextExtended extends { pageId: string } = neve
|
|||||||
|
|
||||||
deepAssign({
|
deepAssign({
|
||||||
"target": augmentedAttribute,
|
"target": augmentedAttribute,
|
||||||
"source": attribute,
|
"source": attribute
|
||||||
});
|
});
|
||||||
|
|
||||||
if (partialAttribute !== undefined) {
|
if (partialAttribute !== undefined) {
|
||||||
@ -74,7 +74,7 @@ export function getKcContext<KcContextExtended extends { pageId: string } = neve
|
|||||||
|
|
||||||
deepAssign({
|
deepAssign({
|
||||||
"target": augmentedAttribute,
|
"target": augmentedAttribute,
|
||||||
"source": partialAttribute,
|
"source": partialAttribute
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,20 +13,20 @@ export const kcContextCommonMock: KcContextBase.Common = {
|
|||||||
"resourcesPath": pathJoin(PUBLIC_URL, mockTestingResourcesPath),
|
"resourcesPath": pathJoin(PUBLIC_URL, mockTestingResourcesPath),
|
||||||
"resourcesCommonPath": pathJoin(PUBLIC_URL, mockTestingResourcesCommonPath),
|
"resourcesCommonPath": pathJoin(PUBLIC_URL, mockTestingResourcesCommonPath),
|
||||||
"loginRestartFlowUrl": "/auth/realms/myrealm/login-actions/restart?client_id=account&tab_id=HoAx28ja4xg",
|
"loginRestartFlowUrl": "/auth/realms/myrealm/login-actions/restart?client_id=account&tab_id=HoAx28ja4xg",
|
||||||
"loginUrl": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg",
|
"loginUrl": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg"
|
||||||
},
|
},
|
||||||
"realm": {
|
"realm": {
|
||||||
"name": "myrealm",
|
"name": "myrealm",
|
||||||
"displayName": "myrealm",
|
"displayName": "myrealm",
|
||||||
"displayNameHtml": "myrealm",
|
"displayNameHtml": "myrealm",
|
||||||
"internationalizationEnabled": true,
|
"internationalizationEnabled": true,
|
||||||
"registrationEmailAsUsername": false,
|
"registrationEmailAsUsername": false
|
||||||
},
|
},
|
||||||
"messagesPerField": {
|
"messagesPerField": {
|
||||||
"printIfExists": (...[, x]) => x,
|
"printIfExists": (...[, x]) => x,
|
||||||
"existsError": () => true,
|
"existsError": () => true,
|
||||||
"get": key => `Fake error for ${key}`,
|
"get": key => `Fake error for ${key}`,
|
||||||
"exists": () => true,
|
"exists": () => true
|
||||||
},
|
},
|
||||||
"locale": {
|
"locale": {
|
||||||
"supported": [
|
"supported": [
|
||||||
@ -34,117 +34,117 @@ export const kcContextCommonMock: KcContextBase.Common = {
|
|||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=de",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=de",
|
||||||
"label": "Deutsch",
|
"label": "Deutsch",
|
||||||
"languageTag": "de",
|
"languageTag": "de"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=no",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=no",
|
||||||
"label": "Norsk",
|
"label": "Norsk",
|
||||||
"languageTag": "no",
|
"languageTag": "no"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=ru",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=ru",
|
||||||
"label": "Русский",
|
"label": "Русский",
|
||||||
"languageTag": "ru",
|
"languageTag": "ru"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=sv",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=sv",
|
||||||
"label": "Svenska",
|
"label": "Svenska",
|
||||||
"languageTag": "sv",
|
"languageTag": "sv"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=pt-BR",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=pt-BR",
|
||||||
"label": "Português (Brasil)",
|
"label": "Português (Brasil)",
|
||||||
"languageTag": "pt-BR",
|
"languageTag": "pt-BR"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=lt",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=lt",
|
||||||
"label": "Lietuvių",
|
"label": "Lietuvių",
|
||||||
"languageTag": "lt",
|
"languageTag": "lt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=en",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=en",
|
||||||
"label": "English",
|
"label": "English",
|
||||||
"languageTag": "en",
|
"languageTag": "en"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=it",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=it",
|
||||||
"label": "Italiano",
|
"label": "Italiano",
|
||||||
"languageTag": "it",
|
"languageTag": "it"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=fr",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=fr",
|
||||||
"label": "Français",
|
"label": "Français",
|
||||||
"languageTag": "fr",
|
"languageTag": "fr"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=zh-CN",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=zh-CN",
|
||||||
"label": "中文简体",
|
"label": "中文简体",
|
||||||
"languageTag": "zh-CN",
|
"languageTag": "zh-CN"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=es",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=es",
|
||||||
"label": "Español",
|
"label": "Español",
|
||||||
"languageTag": "es",
|
"languageTag": "es"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=cs",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=cs",
|
||||||
"label": "Čeština",
|
"label": "Čeština",
|
||||||
"languageTag": "cs",
|
"languageTag": "cs"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=ja",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=ja",
|
||||||
"label": "日本語",
|
"label": "日本語",
|
||||||
"languageTag": "ja",
|
"languageTag": "ja"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=sk",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=sk",
|
||||||
"label": "Slovenčina",
|
"label": "Slovenčina",
|
||||||
"languageTag": "sk",
|
"languageTag": "sk"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=pl",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=pl",
|
||||||
"label": "Polski",
|
"label": "Polski",
|
||||||
"languageTag": "pl",
|
"languageTag": "pl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=ca",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=ca",
|
||||||
"label": "Català",
|
"label": "Català",
|
||||||
"languageTag": "ca",
|
"languageTag": "ca"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=nl",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=nl",
|
||||||
"label": "Nederlands",
|
"label": "Nederlands",
|
||||||
"languageTag": "nl",
|
"languageTag": "nl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=tr",
|
"url": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg&execution=ee6c2834-46a4-4a20-a1b6-f6d6f6451b36&kc_locale=tr",
|
||||||
"label": "Türkçe",
|
"label": "Türkçe",
|
||||||
"languageTag": "tr",
|
"languageTag": "tr"
|
||||||
},
|
}
|
||||||
/* spell-checker: enable */
|
/* spell-checker: enable */
|
||||||
],
|
],
|
||||||
"currentLanguageTag": "en",
|
"currentLanguageTag": "en"
|
||||||
},
|
},
|
||||||
"auth": {
|
"auth": {
|
||||||
"showUsername": false,
|
"showUsername": false,
|
||||||
"showResetCredentials": false,
|
"showResetCredentials": false,
|
||||||
"showTryAnotherWayLink": false,
|
"showTryAnotherWayLink": false
|
||||||
},
|
},
|
||||||
"client": {
|
"client": {
|
||||||
"clientId": "myApp",
|
"clientId": "myApp"
|
||||||
},
|
},
|
||||||
"scripts": [],
|
"scripts": [],
|
||||||
"message": {
|
"message": {
|
||||||
"type": "success",
|
"type": "success",
|
||||||
"summary": "This is a test message",
|
"summary": "This is a test message"
|
||||||
},
|
},
|
||||||
"isAppInitiatedAction": false,
|
"isAppInitiatedAction": false
|
||||||
};
|
};
|
||||||
|
|
||||||
const loginUrl = {
|
const loginUrl = {
|
||||||
...kcContextCommonMock.url,
|
...kcContextCommonMock.url,
|
||||||
"loginResetCredentialsUrl": "/auth/realms/myrealm/login-actions/reset-credentials?client_id=account&tab_id=HoAx28ja4xg",
|
"loginResetCredentialsUrl": "/auth/realms/myrealm/login-actions/reset-credentials?client_id=account&tab_id=HoAx28ja4xg",
|
||||||
"registrationUrl": "/auth/realms/myrealm/login-actions/registration?client_id=account&tab_id=HoAx28ja4xg",
|
"registrationUrl": "/auth/realms/myrealm/login-actions/registration?client_id=account&tab_id=HoAx28ja4xg"
|
||||||
};
|
};
|
||||||
|
|
||||||
export const kcContextMocks: KcContextBase[] = [
|
export const kcContextMocks: KcContextBase[] = [
|
||||||
@ -158,17 +158,17 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
"rememberMe": true,
|
"rememberMe": true,
|
||||||
"password": true,
|
"password": true,
|
||||||
"resetPasswordAllowed": true,
|
"resetPasswordAllowed": true,
|
||||||
"registrationAllowed": true,
|
"registrationAllowed": true
|
||||||
},
|
},
|
||||||
"auth": kcContextCommonMock.auth!,
|
"auth": kcContextCommonMock.auth!,
|
||||||
"social": {
|
"social": {
|
||||||
"displayInfo": true,
|
"displayInfo": true
|
||||||
},
|
},
|
||||||
"usernameEditDisabled": false,
|
"usernameEditDisabled": false,
|
||||||
"login": {
|
"login": {
|
||||||
"rememberMe": false,
|
"rememberMe": false
|
||||||
},
|
},
|
||||||
"registrationDisabled": false,
|
"registrationDisabled": false
|
||||||
}),
|
}),
|
||||||
...(() => {
|
...(() => {
|
||||||
const registerCommon: KcContextBase.RegisterCommon = {
|
const registerCommon: KcContextBase.RegisterCommon = {
|
||||||
@ -176,15 +176,15 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
"url": {
|
"url": {
|
||||||
...loginUrl,
|
...loginUrl,
|
||||||
"registrationAction":
|
"registrationAction":
|
||||||
"http://localhost:8080/auth/realms/myrealm/login-actions/registration?session_code=gwZdUeO7pbYpFTRxiIxRg_QtzMbtFTKrNu6XW_f8asM&execution=12146ce0-b139-4bbd-b25b-0eccfee6577e&client_id=account&tab_id=uS8lYfebLa0",
|
"http://localhost:8080/auth/realms/myrealm/login-actions/registration?session_code=gwZdUeO7pbYpFTRxiIxRg_QtzMbtFTKrNu6XW_f8asM&execution=12146ce0-b139-4bbd-b25b-0eccfee6577e&client_id=account&tab_id=uS8lYfebLa0"
|
||||||
},
|
},
|
||||||
"scripts": [],
|
"scripts": [],
|
||||||
"isAppInitiatedAction": false,
|
"isAppInitiatedAction": false,
|
||||||
"passwordRequired": true,
|
"passwordRequired": true,
|
||||||
"recaptchaRequired": false,
|
"recaptchaRequired": false,
|
||||||
"social": {
|
"social": {
|
||||||
"displayInfo": true,
|
"displayInfo": true
|
||||||
},
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return [
|
return [
|
||||||
@ -192,8 +192,8 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
"pageId": "register.ftl",
|
"pageId": "register.ftl",
|
||||||
...registerCommon,
|
...registerCommon,
|
||||||
"register": {
|
"register": {
|
||||||
"formData": {},
|
"formData": {}
|
||||||
},
|
}
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.RegisterUserProfile>({
|
id<KcContextBase.RegisterUserProfile>({
|
||||||
"pageId": "register-user-profile.ftl",
|
"pageId": "register-user-profile.ftl",
|
||||||
@ -205,16 +205,16 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
{
|
{
|
||||||
"validators": {
|
"validators": {
|
||||||
"username-prohibited-characters": {
|
"username-prohibited-characters": {
|
||||||
"ignore.empty.value": true,
|
"ignore.empty.value": true
|
||||||
},
|
},
|
||||||
"up-username-has-value": {},
|
"up-username-has-value": {},
|
||||||
"length": {
|
"length": {
|
||||||
"ignore.empty.value": true,
|
"ignore.empty.value": true,
|
||||||
"min": "3",
|
"min": "3",
|
||||||
"max": "255",
|
"max": "255"
|
||||||
},
|
},
|
||||||
"up-duplicate-username": {},
|
"up-duplicate-username": {},
|
||||||
"up-username-mutation": {},
|
"up-username-mutation": {}
|
||||||
},
|
},
|
||||||
"displayName": "${username}",
|
"displayName": "${username}",
|
||||||
"annotations": {},
|
"annotations": {},
|
||||||
@ -223,27 +223,27 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
"autocomplete": "username",
|
"autocomplete": "username",
|
||||||
"readOnly": false,
|
"readOnly": false,
|
||||||
"name": "username",
|
"name": "username",
|
||||||
"value": "xxxx",
|
"value": "xxxx"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"validators": {
|
"validators": {
|
||||||
"up-email-exists-as-username": {},
|
"up-email-exists-as-username": {},
|
||||||
"length": {
|
"length": {
|
||||||
"max": "255",
|
"max": "255",
|
||||||
"ignore.empty.value": true,
|
"ignore.empty.value": true
|
||||||
},
|
},
|
||||||
"up-blank-attribute-value": {
|
"up-blank-attribute-value": {
|
||||||
"error-message": "missingEmailMessage",
|
"error-message": "missingEmailMessage",
|
||||||
"fail-on-null": false,
|
"fail-on-null": false
|
||||||
},
|
},
|
||||||
"up-duplicate-email": {},
|
"up-duplicate-email": {},
|
||||||
"email": {
|
"email": {
|
||||||
"ignore.empty.value": true,
|
"ignore.empty.value": true
|
||||||
},
|
},
|
||||||
"pattern": {
|
"pattern": {
|
||||||
"ignore.empty.value": true,
|
"ignore.empty.value": true,
|
||||||
"pattern": "gmail\\.com$",
|
"pattern": "gmail\\.com$"
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
"displayName": "${email}",
|
"displayName": "${email}",
|
||||||
"annotations": {},
|
"annotations": {},
|
||||||
@ -251,55 +251,55 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
"groupAnnotations": {},
|
"groupAnnotations": {},
|
||||||
"autocomplete": "email",
|
"autocomplete": "email",
|
||||||
"readOnly": false,
|
"readOnly": false,
|
||||||
"name": "email",
|
"name": "email"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"validators": {
|
"validators": {
|
||||||
"length": {
|
"length": {
|
||||||
"max": "255",
|
"max": "255",
|
||||||
"ignore.empty.value": true,
|
"ignore.empty.value": true
|
||||||
},
|
},
|
||||||
"person-name-prohibited-characters": {
|
"person-name-prohibited-characters": {
|
||||||
"ignore.empty.value": true,
|
"ignore.empty.value": true
|
||||||
},
|
},
|
||||||
"up-immutable-attribute": {},
|
"up-immutable-attribute": {},
|
||||||
"up-attribute-required-by-metadata-value": {},
|
"up-attribute-required-by-metadata-value": {}
|
||||||
},
|
},
|
||||||
"displayName": "${firstName}",
|
"displayName": "${firstName}",
|
||||||
"annotations": {},
|
"annotations": {},
|
||||||
"required": true,
|
"required": true,
|
||||||
"groupAnnotations": {},
|
"groupAnnotations": {},
|
||||||
"readOnly": false,
|
"readOnly": false,
|
||||||
"name": "firstName",
|
"name": "firstName"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"validators": {
|
"validators": {
|
||||||
"length": {
|
"length": {
|
||||||
"max": "255",
|
"max": "255",
|
||||||
"ignore.empty.value": true,
|
"ignore.empty.value": true
|
||||||
},
|
},
|
||||||
"person-name-prohibited-characters": {
|
"person-name-prohibited-characters": {
|
||||||
"ignore.empty.value": true,
|
"ignore.empty.value": true
|
||||||
},
|
},
|
||||||
"up-immutable-attribute": {},
|
"up-immutable-attribute": {},
|
||||||
"up-attribute-required-by-metadata-value": {},
|
"up-attribute-required-by-metadata-value": {}
|
||||||
},
|
},
|
||||||
"displayName": "${lastName}",
|
"displayName": "${lastName}",
|
||||||
"annotations": {},
|
"annotations": {},
|
||||||
"required": true,
|
"required": true,
|
||||||
"groupAnnotations": {},
|
"groupAnnotations": {},
|
||||||
"readOnly": false,
|
"readOnly": false,
|
||||||
"name": "lastName",
|
"name": "lastName"
|
||||||
},
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
return {
|
return {
|
||||||
attributes,
|
attributes,
|
||||||
"attributesByName": Object.fromEntries(attributes.map(attribute => [attribute.name, attribute])) as any,
|
"attributesByName": Object.fromEntries(attributes.map(attribute => [attribute.name, attribute])) as any
|
||||||
} as any;
|
} as any;
|
||||||
})(),
|
})()
|
||||||
},
|
}
|
||||||
}),
|
})
|
||||||
];
|
];
|
||||||
})(),
|
})(),
|
||||||
id<KcContextBase.Info>({
|
id<KcContextBase.Info>({
|
||||||
@ -311,39 +311,39 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
"actionUri": "#",
|
"actionUri": "#",
|
||||||
"client": {
|
"client": {
|
||||||
"clientId": "myApp",
|
"clientId": "myApp",
|
||||||
"baseUrl": "#",
|
"baseUrl": "#"
|
||||||
},
|
}
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.Error>({
|
id<KcContextBase.Error>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
"pageId": "error.ftl",
|
"pageId": "error.ftl",
|
||||||
"client": {
|
"client": {
|
||||||
"clientId": "myApp",
|
"clientId": "myApp",
|
||||||
"baseUrl": "#",
|
"baseUrl": "#"
|
||||||
},
|
},
|
||||||
"message": {
|
"message": {
|
||||||
"type": "error",
|
"type": "error",
|
||||||
"summary": "This is the error message",
|
"summary": "This is the error message"
|
||||||
},
|
}
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.LoginResetPassword>({
|
id<KcContextBase.LoginResetPassword>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
"pageId": "login-reset-password.ftl",
|
"pageId": "login-reset-password.ftl",
|
||||||
"realm": {
|
"realm": {
|
||||||
...kcContextCommonMock.realm,
|
...kcContextCommonMock.realm,
|
||||||
"loginWithEmailAllowed": false,
|
"loginWithEmailAllowed": false
|
||||||
},
|
}
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.LoginVerifyEmail>({
|
id<KcContextBase.LoginVerifyEmail>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
"pageId": "login-verify-email.ftl",
|
"pageId": "login-verify-email.ftl",
|
||||||
"user": {
|
"user": {
|
||||||
"email": "john.doe@gmail.com",
|
"email": "john.doe@gmail.com"
|
||||||
},
|
}
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.Terms>({
|
id<KcContextBase.Terms>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
"pageId": "terms.ftl",
|
"pageId": "terms.ftl"
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.LoginOtp>({
|
id<KcContextBase.LoginOtp>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
@ -352,19 +352,19 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
"userOtpCredentials": [
|
"userOtpCredentials": [
|
||||||
{
|
{
|
||||||
"id": "id1",
|
"id": "id1",
|
||||||
"userLabel": "label1",
|
"userLabel": "label1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "id2",
|
"id": "id2",
|
||||||
"userLabel": "label2",
|
"userLabel": "label2"
|
||||||
},
|
}
|
||||||
],
|
]
|
||||||
},
|
}
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.LoginUpdatePassword>({
|
id<KcContextBase.LoginUpdatePassword>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
"pageId": "login-update-password.ftl",
|
"pageId": "login-update-password.ftl",
|
||||||
"username": "anUsername",
|
"username": "anUsername"
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.LoginUpdateProfile>({
|
id<KcContextBase.LoginUpdateProfile>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
@ -374,21 +374,21 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
"username": "anUsername",
|
"username": "anUsername",
|
||||||
"email": "foo@example.com",
|
"email": "foo@example.com",
|
||||||
"firstName": "aFirstName",
|
"firstName": "aFirstName",
|
||||||
"lastName": "aLastName",
|
"lastName": "aLastName"
|
||||||
},
|
}
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.LoginIdpLinkConfirm>({
|
id<KcContextBase.LoginIdpLinkConfirm>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
"pageId": "login-idp-link-confirm.ftl",
|
"pageId": "login-idp-link-confirm.ftl",
|
||||||
"idpAlias": "FranceConnect",
|
"idpAlias": "FranceConnect"
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.LoginIdpLinkEmail>({
|
id<KcContextBase.LoginIdpLinkEmail>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
"pageId": "login-idp-link-email.ftl",
|
"pageId": "login-idp-link-email.ftl",
|
||||||
"idpAlias": "FranceConnect",
|
"idpAlias": "FranceConnect",
|
||||||
"brokerContext": {
|
"brokerContext": {
|
||||||
"username": "anUsername",
|
"username": "anUsername"
|
||||||
},
|
}
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.LoginConfigTotp>({
|
id<KcContextBase.LoginConfigTotp>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
@ -407,21 +407,21 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
digits: 6,
|
digits: 6,
|
||||||
lookAheadWindow: 1,
|
lookAheadWindow: 1,
|
||||||
type: "totp",
|
type: "totp",
|
||||||
period: 30,
|
period: 30
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
}),
|
}),
|
||||||
id<KcContextBase.LogoutConfirm>({
|
id<KcContextBase.LogoutConfirm>({
|
||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
"pageId": "logout-confirm.ftl",
|
"pageId": "logout-confirm.ftl",
|
||||||
"url": {
|
"url": {
|
||||||
...kcContextCommonMock.url,
|
...kcContextCommonMock.url,
|
||||||
"logoutConfirmAction": "Continuer?",
|
"logoutConfirmAction": "Continuer?"
|
||||||
},
|
},
|
||||||
"client": {
|
"client": {
|
||||||
"clientId": "myApp",
|
"clientId": "myApp",
|
||||||
"baseUrl": "#",
|
"baseUrl": "#"
|
||||||
},
|
},
|
||||||
"logoutConfirm": { "code": "123", skipLink: false },
|
"logoutConfirm": { "code": "123", skipLink: false }
|
||||||
}),
|
})
|
||||||
];
|
];
|
||||||
|
@ -130,7 +130,7 @@ const messages = {
|
|||||||
"invalidPasswordMinSpecialCharsMessage": "Contrasenya incorrecta: ha de contenir almenys {0} caràcters especials.",
|
"invalidPasswordMinSpecialCharsMessage": "Contrasenya incorrecta: ha de contenir almenys {0} caràcters especials.",
|
||||||
"invalidPasswordNotUsernameMessage": "Contrasenya incorrecta: no pot ser igual al nom d'usuari.",
|
"invalidPasswordNotUsernameMessage": "Contrasenya incorrecta: no pot ser igual al nom d'usuari.",
|
||||||
"invalidPasswordRegexPatternMessage": "Contrasenya incorrecta: no compleix l'expressió regular.",
|
"invalidPasswordRegexPatternMessage": "Contrasenya incorrecta: no compleix l'expressió regular.",
|
||||||
"invalidPasswordHistoryMessage": "Contrasenya incorrecta: no pot ser igual a cap de les últimes {0} contrasenyes.",
|
"invalidPasswordHistoryMessage": "Contrasenya incorrecta: no pot ser igual a cap de les últimes {0} contrasenyes."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -149,7 +149,7 @@ const messages = {
|
|||||||
"invalidPasswordRegexPatternMessage": "Neplatné heslo: neshoduje se zadaným regulárním výrazem.",
|
"invalidPasswordRegexPatternMessage": "Neplatné heslo: neshoduje se zadaným regulárním výrazem.",
|
||||||
"invalidPasswordHistoryMessage": "Neplatné heslo: Nesmí se opakovat žádné z posledních {0} hesel.",
|
"invalidPasswordHistoryMessage": "Neplatné heslo: Nesmí se opakovat žádné z posledních {0} hesel.",
|
||||||
"invalidPasswordBlacklistedMessage": "Neplatné heslo: heslo je na černé listině.",
|
"invalidPasswordBlacklistedMessage": "Neplatné heslo: heslo je na černé listině.",
|
||||||
"invalidPasswordGenericMessage": "Neplatné heslo: nové heslo neodpovídá pravidlům hesla.",
|
"invalidPasswordGenericMessage": "Neplatné heslo: nové heslo neodpovídá pravidlům hesla."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -149,7 +149,7 @@ const messages = {
|
|||||||
"invalidPasswordRegexPatternMessage": "Ungültiges Passwort: Es entspricht nicht dem Regex-Muster.",
|
"invalidPasswordRegexPatternMessage": "Ungültiges Passwort: Es entspricht nicht dem Regex-Muster.",
|
||||||
"invalidPasswordHistoryMessage": "Ungültiges Passwort: Es darf nicht einem der letzten {0} Passwörter entsprechen.",
|
"invalidPasswordHistoryMessage": "Ungültiges Passwort: Es darf nicht einem der letzten {0} Passwörter entsprechen.",
|
||||||
"invalidPasswordBlacklistedMessage": "Ungültiges Passwort: Das Passwort steht auf der Blocklist (schwarzen Liste).",
|
"invalidPasswordBlacklistedMessage": "Ungültiges Passwort: Das Passwort steht auf der Blocklist (schwarzen Liste).",
|
||||||
"invalidPasswordGenericMessge": "Ungültiges Passwort: Das neue Passwort verletzt die Passwort-Richtlinien.",
|
"invalidPasswordGenericMessge": "Ungültiges Passwort: Das neue Passwort verletzt die Passwort-Richtlinien."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -318,7 +318,7 @@ const messages = {
|
|||||||
"openshift.scope.user_info": "User information",
|
"openshift.scope.user_info": "User information",
|
||||||
"openshift.scope.user_check-access": "User access information",
|
"openshift.scope.user_check-access": "User access information",
|
||||||
"openshift.scope.user_full": "Full Access",
|
"openshift.scope.user_full": "Full Access",
|
||||||
"openshift.scope.list-projects": "List projects",
|
"openshift.scope.list-projects": "List projects"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -130,7 +130,7 @@ const messages = {
|
|||||||
"invalidPasswordMinSpecialCharsMessage": "Contraseña incorrecta: debe contener al menos {0} caracteres especiales.",
|
"invalidPasswordMinSpecialCharsMessage": "Contraseña incorrecta: debe contener al menos {0} caracteres especiales.",
|
||||||
"invalidPasswordNotUsernameMessage": "Contraseña incorrecta: no puede ser igual al nombre de usuario.",
|
"invalidPasswordNotUsernameMessage": "Contraseña incorrecta: no puede ser igual al nombre de usuario.",
|
||||||
"invalidPasswordRegexPatternMessage": "Contraseña incorrecta: no cumple la expresión regular.",
|
"invalidPasswordRegexPatternMessage": "Contraseña incorrecta: no cumple la expresión regular.",
|
||||||
"invalidPasswordHistoryMessage": "Contraseña incorrecta: no puede ser igual a ninguna de las últimas {0} contraseñas.",
|
"invalidPasswordHistoryMessage": "Contraseña incorrecta: no puede ser igual a ninguna de las últimas {0} contraseñas."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -143,7 +143,7 @@ const messages = {
|
|||||||
"invalidPasswordMinSpecialCharsMessage": "Mot de passe invalide: doit contenir au moins {0} caractère(s) spéciaux.",
|
"invalidPasswordMinSpecialCharsMessage": "Mot de passe invalide: doit contenir au moins {0} caractère(s) spéciaux.",
|
||||||
"invalidPasswordNotUsernameMessage": "Mot de passe invalide: ne doit pas être identique au nom d'utilisateur.",
|
"invalidPasswordNotUsernameMessage": "Mot de passe invalide: ne doit pas être identique au nom d'utilisateur.",
|
||||||
"invalidPasswordRegexPatternMessage": "Mot de passe invalide: ne valide pas l'expression rationnelle.",
|
"invalidPasswordRegexPatternMessage": "Mot de passe invalide: ne valide pas l'expression rationnelle.",
|
||||||
"invalidPasswordHistoryMessage": "Mot de passe invalide: ne doit pas être égal aux {0} derniers mots de passe.",
|
"invalidPasswordHistoryMessage": "Mot de passe invalide: ne doit pas être égal aux {0} derniers mots de passe."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -303,7 +303,7 @@ const messages = {
|
|||||||
"openshift.scope.user_info": "Informazioni utente",
|
"openshift.scope.user_info": "Informazioni utente",
|
||||||
"openshift.scope.user_check-access": "Informazioni per l'accesso dell'utente",
|
"openshift.scope.user_check-access": "Informazioni per l'accesso dell'utente",
|
||||||
"openshift.scope.user_full": "Accesso completo",
|
"openshift.scope.user_full": "Accesso completo",
|
||||||
"openshift.scope.list-projects": "Elenca progetti",
|
"openshift.scope.list-projects": "Elenca progetti"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -317,7 +317,7 @@ const messages = {
|
|||||||
"openshift.scope.user_info": "ユーザー情報",
|
"openshift.scope.user_info": "ユーザー情報",
|
||||||
"openshift.scope.user_check-access": "ユーザーアクセス情報",
|
"openshift.scope.user_check-access": "ユーザーアクセス情報",
|
||||||
"openshift.scope.user_full": "フルアクセス",
|
"openshift.scope.user_full": "フルアクセス",
|
||||||
"openshift.scope.list-projects": "プロジェクトの一覧表示",
|
"openshift.scope.list-projects": "プロジェクトの一覧表示"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -136,7 +136,7 @@ const messages = {
|
|||||||
"invalidPasswordMinSpecialCharsMessage": "Neteisingas slaptažodis: privaloma įvesti {0} specialų simbolį.",
|
"invalidPasswordMinSpecialCharsMessage": "Neteisingas slaptažodis: privaloma įvesti {0} specialų simbolį.",
|
||||||
"invalidPasswordNotUsernameMessage": "Neteisingas slaptažodis: slaptažodis negali sutapti su naudotojo vardu.",
|
"invalidPasswordNotUsernameMessage": "Neteisingas slaptažodis: slaptažodis negali sutapti su naudotojo vardu.",
|
||||||
"invalidPasswordRegexPatternMessage": "Neteisingas slaptažodis: slaptažodis netenkina regex taisyklės(ių).",
|
"invalidPasswordRegexPatternMessage": "Neteisingas slaptažodis: slaptažodis netenkina regex taisyklės(ių).",
|
||||||
"invalidPasswordHistoryMessage": "Neteisingas slaptažodis: slaptažodis negali sutapti su prieš tai buvusiais {0} slaptažodžiais.",
|
"invalidPasswordHistoryMessage": "Neteisingas slaptažodis: slaptažodis negali sutapti su prieš tai buvusiais {0} slaptažodžiais."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -136,7 +136,7 @@ const messages = {
|
|||||||
"invalidPasswordNotUsernameMessage": "Ongeldig wachtwoord: het mag niet overeenkomen met de gebruikersnaam.",
|
"invalidPasswordNotUsernameMessage": "Ongeldig wachtwoord: het mag niet overeenkomen met de gebruikersnaam.",
|
||||||
"invalidPasswordRegexPatternMessage": "Ongeldig wachtwoord: het voldoet niet aan het door de beheerder ingestelde patroon.",
|
"invalidPasswordRegexPatternMessage": "Ongeldig wachtwoord: het voldoet niet aan het door de beheerder ingestelde patroon.",
|
||||||
"invalidPasswordHistoryMessage": "Ongeldig wachtwoord: het mag niet overeen komen met een van de laatste {0} wachtwoorden.",
|
"invalidPasswordHistoryMessage": "Ongeldig wachtwoord: het mag niet overeen komen met een van de laatste {0} wachtwoorden.",
|
||||||
"invalidPasswordGenericMessage": "Ongeldig wachtwoord: het nieuwe wachtwoord voldoet niet aan het wachtwoordbeleid.",
|
"invalidPasswordGenericMessage": "Ongeldig wachtwoord: het nieuwe wachtwoord voldoet niet aan het wachtwoordbeleid."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -146,7 +146,7 @@ const messages = {
|
|||||||
"locale_nl": "Nederlands",
|
"locale_nl": "Nederlands",
|
||||||
"locale_pt-BR": "Português (Brasil)",
|
"locale_pt-BR": "Português (Brasil)",
|
||||||
"locale_ru": "Русский",
|
"locale_ru": "Русский",
|
||||||
"locale_zh-CN": "中文简体",
|
"locale_zh-CN": "中文简体"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -133,7 +133,7 @@ const messages = {
|
|||||||
"invalidPasswordMinSpecialCharsMessage": "Senha inválida: deve conter pelo menos {0} caractere(s) especial",
|
"invalidPasswordMinSpecialCharsMessage": "Senha inválida: deve conter pelo menos {0} caractere(s) especial",
|
||||||
"invalidPasswordNotUsernameMessage": "Senha inválida: não deve ser igual ao nome de usuário",
|
"invalidPasswordNotUsernameMessage": "Senha inválida: não deve ser igual ao nome de usuário",
|
||||||
"invalidPasswordRegexPatternMessage": "Senha inválida: não corresponde ao padrão da expressão regular.",
|
"invalidPasswordRegexPatternMessage": "Senha inválida: não corresponde ao padrão da expressão regular.",
|
||||||
"invalidPasswordHistoryMessage": "Senha inválida: não pode ser igual a qualquer uma das {0} últimas senhas.",
|
"invalidPasswordHistoryMessage": "Senha inválida: não pode ser igual a qualquer uma das {0} últimas senhas."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -136,7 +136,7 @@ const messages = {
|
|||||||
"invalidPasswordNotUsernameMessage": "Некорректный пароль: пароль не должен совпадать с именем пользователя.",
|
"invalidPasswordNotUsernameMessage": "Некорректный пароль: пароль не должен совпадать с именем пользователя.",
|
||||||
"invalidPasswordRegexPatternMessage": "Некорректный пароль: пароль не удовлетворяет регулярному выражению.",
|
"invalidPasswordRegexPatternMessage": "Некорректный пароль: пароль не удовлетворяет регулярному выражению.",
|
||||||
"invalidPasswordHistoryMessage": "Некорректный пароль: пароль не должен совпадать с последним(и) {0} паролями.",
|
"invalidPasswordHistoryMessage": "Некорректный пароль: пароль не должен совпадать с последним(и) {0} паролями.",
|
||||||
"invalidPasswordGenericMessage": "Некорректный пароль: новый пароль не соответствует правилам пароля.",
|
"invalidPasswordGenericMessage": "Некорректный пароль: новый пароль не соответствует правилам пароля."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -173,7 +173,7 @@ const messages = {
|
|||||||
"resourcesSharedWithMe": "Zdroje zdieľané so mnou",
|
"resourcesSharedWithMe": "Zdroje zdieľané so mnou",
|
||||||
"permissionRequestion": "Žiadosti o povolenie",
|
"permissionRequestion": "Žiadosti o povolenie",
|
||||||
"permission": "Oprávnenie",
|
"permission": "Oprávnenie",
|
||||||
"shares": "podiel (y)",
|
"shares": "podiel (y)"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -132,7 +132,7 @@ const messages = {
|
|||||||
"invalidPasswordNotUsernameMessage": "Ogiltigt lösenord: Får inte vara samma som användarnamnet.",
|
"invalidPasswordNotUsernameMessage": "Ogiltigt lösenord: Får inte vara samma som användarnamnet.",
|
||||||
"invalidPasswordRegexPatternMessage": "Ogiltigt lösenord: matchar inte kravet för lösenordsmönster.",
|
"invalidPasswordRegexPatternMessage": "Ogiltigt lösenord: matchar inte kravet för lösenordsmönster.",
|
||||||
"invalidPasswordHistoryMessage": "Ogiltigt lösenord: Får inte vara samma som de senaste {0} lösenorden.",
|
"invalidPasswordHistoryMessage": "Ogiltigt lösenord: Får inte vara samma som de senaste {0} lösenorden.",
|
||||||
"invalidPasswordGenericMessage": "Ogiltigt lösenord: Det nya lösenordet stämmer inte med lösenordspolicyn.",
|
"invalidPasswordGenericMessage": "Ogiltigt lösenord: Det nya lösenordet stämmer inte med lösenordspolicyn."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -302,7 +302,7 @@ const messages = {
|
|||||||
"addTeam": "Kaynağınızı paylaşmak için ekip ekleyin",
|
"addTeam": "Kaynağınızı paylaşmak için ekip ekleyin",
|
||||||
"myPermissions": "İzinlerim",
|
"myPermissions": "İzinlerim",
|
||||||
"waitingforApproval": "Onay bekleniyor",
|
"waitingforApproval": "Onay bekleniyor",
|
||||||
"anyPermission": "Herhangi bir izin",
|
"anyPermission": "Herhangi bir izin"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -148,7 +148,7 @@ const messages = {
|
|||||||
"locale_lt": "Lietuvių",
|
"locale_lt": "Lietuvių",
|
||||||
"locale_pt-BR": "Português (Brasil)",
|
"locale_pt-BR": "Português (Brasil)",
|
||||||
"locale_ru": "Русский",
|
"locale_ru": "Русский",
|
||||||
"locale_zh-CN": "中文简体",
|
"locale_zh-CN": "中文简体"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -10,7 +10,7 @@ const messages = {
|
|||||||
"invalidPasswordMinSpecialCharsMessage": "Contrasenya incorrecta: ha de contenir almenys {0} caràcters especials.",
|
"invalidPasswordMinSpecialCharsMessage": "Contrasenya incorrecta: ha de contenir almenys {0} caràcters especials.",
|
||||||
"invalidPasswordMinUpperCaseCharsMessage": "Contrasenya incorrecta: ha de contenir almenys {0} lletres majúscules.",
|
"invalidPasswordMinUpperCaseCharsMessage": "Contrasenya incorrecta: ha de contenir almenys {0} lletres majúscules.",
|
||||||
"invalidPasswordNotUsernameMessage": "Contrasenya incorrecta: no pot ser igual al nom d'usuari.",
|
"invalidPasswordNotUsernameMessage": "Contrasenya incorrecta: no pot ser igual al nom d'usuari.",
|
||||||
"invalidPasswordRegexPatternMessage": "Contrasenya incorrecta: no compleix l'expressió regular.",
|
"invalidPasswordRegexPatternMessage": "Contrasenya incorrecta: no compleix l'expressió regular."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -12,7 +12,7 @@ const messages = {
|
|||||||
"invalidPasswordRegexPatternMessage": "Ungültiges Passwort: stimmt nicht mit Regex-Muster überein.",
|
"invalidPasswordRegexPatternMessage": "Ungültiges Passwort: stimmt nicht mit Regex-Muster überein.",
|
||||||
"invalidPasswordHistoryMessage": "Ungültiges Passwort: darf nicht identisch mit einem der letzten {0} Passwörter sein.",
|
"invalidPasswordHistoryMessage": "Ungültiges Passwort: darf nicht identisch mit einem der letzten {0} Passwörter sein.",
|
||||||
"invalidPasswordBlacklistedMessage": "Ungültiges Passwort: Passwort ist zu bekannt und auf der schwarzen Liste.",
|
"invalidPasswordBlacklistedMessage": "Ungültiges Passwort: Passwort ist zu bekannt und auf der schwarzen Liste.",
|
||||||
"invalidPasswordGenericMessage": "Ungültiges Passwort: neues Passwort erfüllt die Passwort-Anforderungen nicht.",
|
"invalidPasswordGenericMessage": "Ungültiges Passwort: neues Passwort erfüllt die Passwort-Anforderungen nicht."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -37,7 +37,7 @@ const messages = {
|
|||||||
"Without a configured Sector Identifier URI, client redirect URIs must not contain multiple host components.",
|
"Without a configured Sector Identifier URI, client redirect URIs must not contain multiple host components.",
|
||||||
"pairwiseMalformedSectorIdentifierURI": "Malformed Sector Identifier URI.",
|
"pairwiseMalformedSectorIdentifierURI": "Malformed Sector Identifier URI.",
|
||||||
"pairwiseFailedToGetRedirectURIs": "Failed to get redirect URIs from the Sector Identifier URI.",
|
"pairwiseFailedToGetRedirectURIs": "Failed to get redirect URIs from the Sector Identifier URI.",
|
||||||
"pairwiseRedirectURIsMismatch": "Client redirect URIs does not match redirect URIs fetched from the Sector Identifier URI.",
|
"pairwiseRedirectURIsMismatch": "Client redirect URIs does not match redirect URIs fetched from the Sector Identifier URI."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -10,7 +10,7 @@ const messages = {
|
|||||||
"invalidPasswordMinSpecialCharsMessage": "Contraseña incorrecta: debe contener al menos {0} caracteres especiales.",
|
"invalidPasswordMinSpecialCharsMessage": "Contraseña incorrecta: debe contener al menos {0} caracteres especiales.",
|
||||||
"invalidPasswordNotUsernameMessage": "Contraseña incorrecta: no puede ser igual al nombre de usuario.",
|
"invalidPasswordNotUsernameMessage": "Contraseña incorrecta: no puede ser igual al nombre de usuario.",
|
||||||
"invalidPasswordRegexPatternMessage": "Contraseña incorrecta: no cumple la expresión regular.",
|
"invalidPasswordRegexPatternMessage": "Contraseña incorrecta: no cumple la expresión regular.",
|
||||||
"invalidPasswordHistoryMessage": "Contraseña incorrecta: no puede ser igual a ninguna de las últimas {0} contraseñas.",
|
"invalidPasswordHistoryMessage": "Contraseña incorrecta: no puede ser igual a ninguna de las últimas {0} contraseñas."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -10,7 +10,7 @@ const messages = {
|
|||||||
"invalidPasswordMinSpecialCharsMessage": "Mot de passe invalide : doit contenir au moins {0} caractère(s) spéciaux.",
|
"invalidPasswordMinSpecialCharsMessage": "Mot de passe invalide : doit contenir au moins {0} caractère(s) spéciaux.",
|
||||||
"invalidPasswordNotUsernameMessage": "Mot de passe invalide : ne doit pas être identique au nom d'utilisateur.",
|
"invalidPasswordNotUsernameMessage": "Mot de passe invalide : ne doit pas être identique au nom d'utilisateur.",
|
||||||
"invalidPasswordRegexPatternMessage": "Mot de passe invalide : ne valide pas l'expression rationnelle.",
|
"invalidPasswordRegexPatternMessage": "Mot de passe invalide : ne valide pas l'expression rationnelle.",
|
||||||
"invalidPasswordHistoryMessage": "Mot de passe invalide : ne doit pas être égal aux {0} derniers mot de passe.",
|
"invalidPasswordHistoryMessage": "Mot de passe invalide : ne doit pas être égal aux {0} derniers mot de passe."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -30,7 +30,7 @@ const messages = {
|
|||||||
"設定されたセレクター識別子URIがない場合は、クライアントのリダイレクトURIは複数のホスト・コンポーネントを含むことはできません。",
|
"設定されたセレクター識別子URIがない場合は、クライアントのリダイレクトURIは複数のホスト・コンポーネントを含むことはできません。",
|
||||||
"pairwiseMalformedSectorIdentifierURI": "不正なセレクター識別子URIです。",
|
"pairwiseMalformedSectorIdentifierURI": "不正なセレクター識別子URIです。",
|
||||||
"pairwiseFailedToGetRedirectURIs": "セクター識別子URIからリダイレクトURIを取得できませんでした。",
|
"pairwiseFailedToGetRedirectURIs": "セクター識別子URIからリダイレクトURIを取得できませんでした。",
|
||||||
"pairwiseRedirectURIsMismatch": "クライアントのリダイレクトURIは、セクター識別子URIからフェッチされたリダイレクトURIと一致しません。",
|
"pairwiseRedirectURIsMismatch": "クライアントのリダイレクトURIは、セクター識別子URIからフェッチされたリダイレクトURIと一致しません。"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -24,7 +24,7 @@ const messages = {
|
|||||||
"Kuomet nesukonfigūruotas sektoriaus identifikatoriaus URL, kliento nukreipimo nuorodos privalo talpinti ne daugiau kaip vieną skirtingą serverio vardo komponentą.",
|
"Kuomet nesukonfigūruotas sektoriaus identifikatoriaus URL, kliento nukreipimo nuorodos privalo talpinti ne daugiau kaip vieną skirtingą serverio vardo komponentą.",
|
||||||
"pairwiseMalformedSectorIdentifierURI": "Neteisinga sektoriaus identifikatoriaus URI.",
|
"pairwiseMalformedSectorIdentifierURI": "Neteisinga sektoriaus identifikatoriaus URI.",
|
||||||
"pairwiseFailedToGetRedirectURIs": "Nepavyko gauti nukreipimo nuorodų iš sektoriaus identifikatoriaus URI.",
|
"pairwiseFailedToGetRedirectURIs": "Nepavyko gauti nukreipimo nuorodų iš sektoriaus identifikatoriaus URI.",
|
||||||
"pairwiseRedirectURIsMismatch": "Kliento nukreipimo nuoroda neatitinka nukreipimo nuorodų iš sektoriaus identifikatoriaus URI.",
|
"pairwiseRedirectURIsMismatch": "Kliento nukreipimo nuoroda neatitinka nukreipimo nuorodų iš sektoriaus identifikatoriaus URI."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -27,7 +27,7 @@ const messages = {
|
|||||||
"Zonder een geconfigureerde Sector Identifier URI mogen client redirect URIs niet meerdere host componenten hebben.",
|
"Zonder een geconfigureerde Sector Identifier URI mogen client redirect URIs niet meerdere host componenten hebben.",
|
||||||
"pairwiseMalformedSectorIdentifierURI": "Onjuist notatie in Sector Identifier URI.",
|
"pairwiseMalformedSectorIdentifierURI": "Onjuist notatie in Sector Identifier URI.",
|
||||||
"pairwiseFailedToGetRedirectURIs": "Kon geen redirect URIs verkrijgen van de Sector Identifier URI.",
|
"pairwiseFailedToGetRedirectURIs": "Kon geen redirect URIs verkrijgen van de Sector Identifier URI.",
|
||||||
"pairwiseRedirectURIsMismatch": "Client redirect URIs komen niet overeen met redict URIs ontvangen van de Sector Identifier URI.",
|
"pairwiseRedirectURIsMismatch": "Client redirect URIs komen niet overeen met redict URIs ontvangen van de Sector Identifier URI."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -15,7 +15,7 @@ const messages = {
|
|||||||
"ldapErrorMissingClientId": "KlientID må være tilgjengelig i config når sikkerhetsdomenerollemapping ikke brukes.",
|
"ldapErrorMissingClientId": "KlientID må være tilgjengelig i config når sikkerhetsdomenerollemapping ikke brukes.",
|
||||||
"ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType": "Ikke mulig å bevare gruppearv og samtidig bruke UID medlemskapstype.",
|
"ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType": "Ikke mulig å bevare gruppearv og samtidig bruke UID medlemskapstype.",
|
||||||
"ldapErrorCantWriteOnlyForReadOnlyLdap": "Kan ikke sette write-only når LDAP leverandør-modus ikke er WRITABLE",
|
"ldapErrorCantWriteOnlyForReadOnlyLdap": "Kan ikke sette write-only når LDAP leverandør-modus ikke er WRITABLE",
|
||||||
"ldapErrorCantWriteOnlyAndReadOnly": "Kan ikke sette både write-only og read-only",
|
"ldapErrorCantWriteOnlyAndReadOnly": "Kan ikke sette både write-only og read-only"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -18,7 +18,7 @@ const messages = {
|
|||||||
"ldapErrorCantWriteOnlyForReadOnlyLdap": "Não é possível definir modo de somente escrita quando o provedor LDAP não suporta escrita",
|
"ldapErrorCantWriteOnlyForReadOnlyLdap": "Não é possível definir modo de somente escrita quando o provedor LDAP não suporta escrita",
|
||||||
"ldapErrorCantWriteOnlyAndReadOnly": "Não é possível definir somente escrita e somente leitura ao mesmo tempo",
|
"ldapErrorCantWriteOnlyAndReadOnly": "Não é possível definir somente escrita e somente leitura ao mesmo tempo",
|
||||||
"clientRedirectURIsFragmentError": "URIs de redirecionamento não podem conter fragmentos",
|
"clientRedirectURIsFragmentError": "URIs de redirecionamento não podem conter fragmentos",
|
||||||
"clientRootURLFragmentError": "URL raiz não pode conter fragmentos",
|
"clientRootURLFragmentError": "URL raiz não pode conter fragmentos"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -25,7 +25,7 @@ const messages = {
|
|||||||
"Без конфигурации по части идентификатора URI, URI перенаправления клиента не может содержать несколько компонентов хоста.",
|
"Без конфигурации по части идентификатора URI, URI перенаправления клиента не может содержать несколько компонентов хоста.",
|
||||||
"pairwiseMalformedSectorIdentifierURI": "Искаженная часть идентификатора URI.",
|
"pairwiseMalformedSectorIdentifierURI": "Искаженная часть идентификатора URI.",
|
||||||
"pairwiseFailedToGetRedirectURIs": "Не удалось получить идентификаторы URI перенаправления из части идентификатора URI.",
|
"pairwiseFailedToGetRedirectURIs": "Не удалось получить идентификаторы URI перенаправления из части идентификатора URI.",
|
||||||
"pairwiseRedirectURIsMismatch": "Клиент URI переадресации не соответствует URI переадресации, полученной из части идентификатора URI.",
|
"pairwiseRedirectURIsMismatch": "Клиент URI переадресации не соответствует URI переадресации, полученной из части идентификатора URI."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -25,7 +25,7 @@ const messages = {
|
|||||||
"Without a configured Sector Identifier URI, client redirect URIs must not contain multiple host components.",
|
"Without a configured Sector Identifier URI, client redirect URIs must not contain multiple host components.",
|
||||||
"pairwiseMalformedSectorIdentifierURI": "Malformed Sector Identifier URI.",
|
"pairwiseMalformedSectorIdentifierURI": "Malformed Sector Identifier URI.",
|
||||||
"pairwiseFailedToGetRedirectURIs": "无法从服务器获得重定向URL",
|
"pairwiseFailedToGetRedirectURIs": "无法从服务器获得重定向URL",
|
||||||
"pairwiseRedirectURIsMismatch": "客户端的重定向URI与服务器端获取的URI配置不匹配。",
|
"pairwiseRedirectURIsMismatch": "客户端的重定向URI与服务器端获取的URI配置不匹配。"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -34,7 +34,7 @@ const messages = {
|
|||||||
"eventUpdateTotpSubject": "Actualització de OTP",
|
"eventUpdateTotpSubject": "Actualització de OTP",
|
||||||
"eventUpdateTotpBody": "OTP s'ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.",
|
"eventUpdateTotpBody": "OTP s'ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.",
|
||||||
"eventUpdateTotpBodyHtml":
|
"eventUpdateTotpBodyHtml":
|
||||||
"<p>OTP s'ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.</p>",
|
"<p>OTP s'ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l'administrador.</p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -62,7 +62,7 @@ const messages = {
|
|||||||
"linkExpirationFormatter.timePeriodUnit.days.1": "den",
|
"linkExpirationFormatter.timePeriodUnit.days.1": "den",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.2": "dny",
|
"linkExpirationFormatter.timePeriodUnit.days.2": "dny",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.3": "dny",
|
"linkExpirationFormatter.timePeriodUnit.days.3": "dny",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.4": "dny",
|
"linkExpirationFormatter.timePeriodUnit.days.4": "dny"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -38,7 +38,7 @@ const messages = {
|
|||||||
"<p>Ihr Passwort wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>",
|
"<p>Ihr Passwort wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>",
|
||||||
"eventUpdateTotpSubject": "OTP Aktualisiert",
|
"eventUpdateTotpSubject": "OTP Aktualisiert",
|
||||||
"eventUpdateTotpBody": "OTP wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.",
|
"eventUpdateTotpBody": "OTP wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.",
|
||||||
"eventUpdateTotpBodyHtml": "<p>OTP wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>",
|
"eventUpdateTotpBodyHtml": "<p>OTP wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -54,7 +54,7 @@ const messages = {
|
|||||||
"linkExpirationFormatter.timePeriodUnit.days": "days",
|
"linkExpirationFormatter.timePeriodUnit.days": "days",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.1": "day",
|
"linkExpirationFormatter.timePeriodUnit.days.1": "day",
|
||||||
"emailVerificationBodyCode": "Please verify your email address by entering in the following code.\n\n{0}\n\n.",
|
"emailVerificationBodyCode": "Please verify your email address by entering in the following code.\n\n{0}\n\n.",
|
||||||
"emailVerificationBodyCodeHtml": "<p>Please verify your email address by entering in the following code.</p><p><b>{0}</b></p>",
|
"emailVerificationBodyCodeHtml": "<p>Please verify your email address by entering in the following code.</p><p><b>{0}</b></p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -33,7 +33,7 @@ const messages = {
|
|||||||
"eventUpdateTotpSubject": "Actualización de OTP",
|
"eventUpdateTotpSubject": "Actualización de OTP",
|
||||||
"eventUpdateTotpBody": "OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.",
|
"eventUpdateTotpBody": "OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.",
|
||||||
"eventUpdateTotpBodyHtml":
|
"eventUpdateTotpBodyHtml":
|
||||||
"<p>OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>",
|
"<p>OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -37,7 +37,7 @@ const messages = {
|
|||||||
"eventUpdateTotpBody":
|
"eventUpdateTotpBody":
|
||||||
"Le OTP a été mis à jour pour votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.",
|
"Le OTP a été mis à jour pour votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.",
|
||||||
"eventUpdateTotpBodyHtml":
|
"eventUpdateTotpBodyHtml":
|
||||||
"<p>Le OTP a été mis à jour pour votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.</p>",
|
"<p>Le OTP a été mis à jour pour votre compte {0} depuis {1}. Si vous n'étiez pas à l'origine de cette requête, veuillez contacter votre administrateur.</p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -59,7 +59,7 @@ const messages = {
|
|||||||
"linkExpirationFormatter.timePeriodUnit.days": "giorni",
|
"linkExpirationFormatter.timePeriodUnit.days": "giorni",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.1": "giorno",
|
"linkExpirationFormatter.timePeriodUnit.days.1": "giorno",
|
||||||
"emailVerificationBodyCode": "Per favore verifica il tuo indirizzo email inserendo il codice seguente.\n\n{0}\n\n.",
|
"emailVerificationBodyCode": "Per favore verifica il tuo indirizzo email inserendo il codice seguente.\n\n{0}\n\n.",
|
||||||
"emailVerificationBodyCodeHtml": "<p>Per favore verifica il tuo indirizzo email inserendo il codice seguente.</p><p><b>{0}</b></p>",
|
"emailVerificationBodyCodeHtml": "<p>Per favore verifica il tuo indirizzo email inserendo il codice seguente.</p><p><b>{0}</b></p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -53,7 +53,7 @@ const messages = {
|
|||||||
"linkExpirationFormatter.timePeriodUnit.days": "日",
|
"linkExpirationFormatter.timePeriodUnit.days": "日",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.1": "日",
|
"linkExpirationFormatter.timePeriodUnit.days.1": "日",
|
||||||
"emailVerificationBodyCode": "次のコードを入力してメールアドレスを確認してください。\n\n{0}\n\n.",
|
"emailVerificationBodyCode": "次のコードを入力してメールアドレスを確認してください。\n\n{0}\n\n.",
|
||||||
"emailVerificationBodyCodeHtml": "<p>次のコードを入力してメールアドレスを確認してください。</p><p><b>{0}</b></p>",
|
"emailVerificationBodyCodeHtml": "<p>次のコードを入力してメールアドレスを確認してください。</p><p><b>{0}</b></p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -37,7 +37,7 @@ const messages = {
|
|||||||
"eventUpdatePasswordBodyHtml": "<p>{1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi</p>",
|
"eventUpdatePasswordBodyHtml": "<p>{1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi</p>",
|
||||||
"eventUpdateTotpSubject": "OTP atnaujinimas",
|
"eventUpdateTotpSubject": "OTP atnaujinimas",
|
||||||
"eventUpdateTotpBody": "OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi",
|
"eventUpdateTotpBody": "OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi",
|
||||||
"eventUpdateTotpBodyHtml": "<p>OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>",
|
"eventUpdateTotpBodyHtml": "<p>OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -47,7 +47,7 @@ const messages = {
|
|||||||
"linkExpirationFormatter.timePeriodUnit.hours": "uur",
|
"linkExpirationFormatter.timePeriodUnit.hours": "uur",
|
||||||
"linkExpirationFormatter.timePeriodUnit.hours.1": "uur",
|
"linkExpirationFormatter.timePeriodUnit.hours.1": "uur",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days": "dagen",
|
"linkExpirationFormatter.timePeriodUnit.days": "dagen",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.1": "dag",
|
"linkExpirationFormatter.timePeriodUnit.days.1": "dag"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -38,7 +38,7 @@ const messages = {
|
|||||||
"eventUpdateTotpSubject": "Oppdater engangskode",
|
"eventUpdateTotpSubject": "Oppdater engangskode",
|
||||||
"eventUpdateTotpBody": "Engangskode ble oppdatert for kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.",
|
"eventUpdateTotpBody": "Engangskode ble oppdatert for kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.",
|
||||||
"eventUpdateTotpBodyHtml":
|
"eventUpdateTotpBodyHtml":
|
||||||
"<p>Engangskode ble oppdatert for kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>",
|
"<p>Engangskode ble oppdatert for kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -65,7 +65,7 @@ const messages = {
|
|||||||
"linkExpirationFormatter.timePeriodUnit.days": "dni",
|
"linkExpirationFormatter.timePeriodUnit.days": "dni",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.1": "dzień",
|
"linkExpirationFormatter.timePeriodUnit.days.1": "dzień",
|
||||||
"emailVerificationBodyCode": "Potwierdź swój adres e-mail wprowadzając następujący kod.\n\n{0}\n\n.",
|
"emailVerificationBodyCode": "Potwierdź swój adres e-mail wprowadzając następujący kod.\n\n{0}\n\n.",
|
||||||
"emailVerificationBodyCodeHtml": "<p>Potwierdź swój adres e-mail, wprowadzając następujący kod.</p><p><b>{0}</b></p>",
|
"emailVerificationBodyCodeHtml": "<p>Potwierdź swój adres e-mail, wprowadzając następujący kod.</p><p><b>{0}</b></p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -56,7 +56,7 @@ const messages = {
|
|||||||
"linkExpirationFormatter.timePeriodUnit.days": "dias",
|
"linkExpirationFormatter.timePeriodUnit.days": "dias",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.1": "dia",
|
"linkExpirationFormatter.timePeriodUnit.days.1": "dia",
|
||||||
"emailVerificationBodyCode": "Verifique seu endereço de e-mail digitando o seguinte código.\n\n{0}\n\n.",
|
"emailVerificationBodyCode": "Verifique seu endereço de e-mail digitando o seguinte código.\n\n{0}\n\n.",
|
||||||
"emailVerificationBodyCodeHtml": "<p>Verifique seu endereço de e-mail digitando o seguinte código.</p><p><b>{0}</b></p>",
|
"emailVerificationBodyCodeHtml": "<p>Verifique seu endereço de e-mail digitando o seguinte código.</p><p><b>{0}</b></p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -38,7 +38,7 @@ const messages = {
|
|||||||
"eventUpdateTotpSubject": "Обновление OTP",
|
"eventUpdateTotpSubject": "Обновление OTP",
|
||||||
"eventUpdateTotpBody": "OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.",
|
"eventUpdateTotpBody": "OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.",
|
||||||
"eventUpdateTotpBodyHtml":
|
"eventUpdateTotpBodyHtml":
|
||||||
"<p>OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>",
|
"<p>OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -51,7 +51,7 @@ const messages = {
|
|||||||
"linkExpirationFormatter.timePeriodUnit.hours": "hodiny",
|
"linkExpirationFormatter.timePeriodUnit.hours": "hodiny",
|
||||||
"linkExpirationFormatter.timePeriodUnit.hours.1": "hodina",
|
"linkExpirationFormatter.timePeriodUnit.hours.1": "hodina",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days": "dni",
|
"linkExpirationFormatter.timePeriodUnit.days": "dni",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.1": "deň ",
|
"linkExpirationFormatter.timePeriodUnit.days.1": "deň "
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -39,7 +39,7 @@ const messages = {
|
|||||||
"eventUpdateTotpSubject": "Uppdatera OTP",
|
"eventUpdateTotpSubject": "Uppdatera OTP",
|
||||||
"eventUpdateTotpBody": "OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.",
|
"eventUpdateTotpBody": "OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.",
|
||||||
"eventUpdateTotpBodyHtml":
|
"eventUpdateTotpBodyHtml":
|
||||||
"<p>OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>",
|
"<p>OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -55,7 +55,7 @@ const messages = {
|
|||||||
"linkExpirationFormatter.timePeriodUnit.days": "gün",
|
"linkExpirationFormatter.timePeriodUnit.days": "gün",
|
||||||
"linkExpirationFormatter.timePeriodUnit.days.1": "gün",
|
"linkExpirationFormatter.timePeriodUnit.days.1": "gün",
|
||||||
"emailVerificationBodyCode": "Lütfen aşağıdaki kodu girerek e-posta adresinizi doğrulayın.\n\n{0}\n\n.",
|
"emailVerificationBodyCode": "Lütfen aşağıdaki kodu girerek e-posta adresinizi doğrulayın.\n\n{0}\n\n.",
|
||||||
"emailVerificationBodyCodeHtml": "<p>Lütfen aşağıdaki kodu girerek e-posta adresinizi doğrulayın.</p><p><b>{0}</b></p>",
|
"emailVerificationBodyCodeHtml": "<p>Lütfen aşağıdaki kodu girerek e-posta adresinizi doğrulayın.</p><p><b>{0}</b></p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -34,7 +34,7 @@ const messages = {
|
|||||||
"eventUpdatePasswordBodyHtml": "<p>您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员</p>",
|
"eventUpdatePasswordBodyHtml": "<p>您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员</p>",
|
||||||
"eventUpdateTotpSubject": "更新 OTP",
|
"eventUpdateTotpSubject": "更新 OTP",
|
||||||
"eventUpdateTotpBody": "您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。",
|
"eventUpdateTotpBody": "您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。",
|
||||||
"eventUpdateTotpBodyHtml": "<p>您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。</p>",
|
"eventUpdateTotpBodyHtml": "<p>您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。</p>"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -182,7 +182,7 @@ const messages = {
|
|||||||
"missingParameterMessage": "Paràmetres que falten: {0}",
|
"missingParameterMessage": "Paràmetres que falten: {0}",
|
||||||
"clientNotFoundMessage": "Client no trobat",
|
"clientNotFoundMessage": "Client no trobat",
|
||||||
"invalidParameterMessage": "Paràmetre no vàlid: {0}",
|
"invalidParameterMessage": "Paràmetre no vàlid: {0}",
|
||||||
"alreadyLoggedIn": "You are already logged in.",
|
"alreadyLoggedIn": "You are already logged in."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -233,7 +233,7 @@ const messages = {
|
|||||||
"requiredAction.UPDATE_PASSWORD": "Aktualizace hesla",
|
"requiredAction.UPDATE_PASSWORD": "Aktualizace hesla",
|
||||||
"requiredAction.UPDATE_PROFILE": "Aktualizovat profil",
|
"requiredAction.UPDATE_PROFILE": "Aktualizovat profil",
|
||||||
"requiredAction.VERIFY_EMAIL": "Ověřit e-mail",
|
"requiredAction.VERIFY_EMAIL": "Ověřit e-mail",
|
||||||
"p3pPolicy": 'CP="Toto není politika P3P!"',
|
"p3pPolicy": 'CP="Toto není politika P3P!"'
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -244,7 +244,7 @@ const messages = {
|
|||||||
"clientCertificate": "X509 Client Zertifikat:",
|
"clientCertificate": "X509 Client Zertifikat:",
|
||||||
"noCertificate": "[Kein Zertifikat]",
|
"noCertificate": "[Kein Zertifikat]",
|
||||||
"pageNotFound": "Seite nicht gefunden",
|
"pageNotFound": "Seite nicht gefunden",
|
||||||
"internalServerError": "Es ist ein interner Server-Fehler aufgetreten",
|
"internalServerError": "Es ist ein interner Server-Fehler aufgetreten"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -328,7 +328,7 @@ const messages = {
|
|||||||
"webauthn-error-auth-verification": "Security key authentication result is invalid.",
|
"webauthn-error-auth-verification": "Security key authentication result is invalid.",
|
||||||
"webauthn-error-register-verification": "Security key registration result is invalid.",
|
"webauthn-error-register-verification": "Security key registration result is invalid.",
|
||||||
"webauthn-error-user-not-found": "Unknown user authenticated by the Security key.",
|
"webauthn-error-user-not-found": "Unknown user authenticated by the Security key.",
|
||||||
"identity-provider-redirector": "Connect with another Identity Provider",
|
"identity-provider-redirector": "Connect with another Identity Provider"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -182,7 +182,7 @@ const messages = {
|
|||||||
"missingParameterMessage": "Parámetros que faltan: {0}",
|
"missingParameterMessage": "Parámetros que faltan: {0}",
|
||||||
"clientNotFoundMessage": "Cliente no encontrado",
|
"clientNotFoundMessage": "Cliente no encontrado",
|
||||||
"invalidParameterMessage": "Parámetro no válido: {0}",
|
"invalidParameterMessage": "Parámetro no válido: {0}",
|
||||||
"alreadyLoggedIn": "You are already logged in.",
|
"alreadyLoggedIn": "You are already logged in."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -249,7 +249,7 @@ const messages = {
|
|||||||
"clientCertificate": "X509 certificat client:",
|
"clientCertificate": "X509 certificat client:",
|
||||||
"noCertificate": "[Pas de certificat]",
|
"noCertificate": "[Pas de certificat]",
|
||||||
"pageNotFound": "Page non trouvée",
|
"pageNotFound": "Page non trouvée",
|
||||||
"internalServerError": "Une erreur interne du serveur s'est produite",
|
"internalServerError": "Une erreur interne du serveur s'est produite"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -310,7 +310,7 @@ const messages = {
|
|||||||
"webauthn-error-auth-verification": "Il risultato dell'autenticazione con la chiave di sicurezza non è valido.",
|
"webauthn-error-auth-verification": "Il risultato dell'autenticazione con la chiave di sicurezza non è valido.",
|
||||||
"webauthn-error-register-verification": "Il risultato della registrazione della chiave di sicurezza non è valido.",
|
"webauthn-error-register-verification": "Il risultato della registrazione della chiave di sicurezza non è valido.",
|
||||||
"webauthn-error-user-not-found": "Utente sconosciuto autenticato con la chiave di sicurezza.",
|
"webauthn-error-user-not-found": "Utente sconosciuto autenticato con la chiave di sicurezza.",
|
||||||
"identity-provider-redirector": "Connettiti con un altro identity provider.",
|
"identity-provider-redirector": "Connettiti con un altro identity provider."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -327,7 +327,7 @@ const messages = {
|
|||||||
"webauthn-error-auth-verification": "セキュリティーキーの認証結果が無効です。",
|
"webauthn-error-auth-verification": "セキュリティーキーの認証結果が無効です。",
|
||||||
"webauthn-error-register-verification": "セキュリティーキーの登録結果が無効です。",
|
"webauthn-error-register-verification": "セキュリティーキーの登録結果が無効です。",
|
||||||
"webauthn-error-user-not-found": "セキュリティーキーで認証された不明なユーザー。",
|
"webauthn-error-user-not-found": "セキュリティーキーで認証された不明なユーザー。",
|
||||||
"identity-provider-redirector": "別のアイデンティティー・プロバイダーと接続する",
|
"identity-provider-redirector": "別のアイデンティティー・プロバイダーと接続する"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -197,7 +197,7 @@ const messages = {
|
|||||||
"clientNotFoundMessage": "Nenurodytas klientas.",
|
"clientNotFoundMessage": "Nenurodytas klientas.",
|
||||||
"clientDisabledMessage": "Kliento galiojimas išjungtas.",
|
"clientDisabledMessage": "Kliento galiojimas išjungtas.",
|
||||||
"invalidParameterMessage": "Neteisingas parametras: {0}",
|
"invalidParameterMessage": "Neteisingas parametras: {0}",
|
||||||
"alreadyLoggedIn": "Jūs jau esate prisijungę.",
|
"alreadyLoggedIn": "Jūs jau esate prisijungę."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -264,7 +264,7 @@ const messages = {
|
|||||||
"U bent verplicht om uw e-mailadres te verifiëren. Een e-mail met de verificatiecode is naar {0} gestuurd. Voer deze code hieronder in.",
|
"U bent verplicht om uw e-mailadres te verifiëren. Een e-mail met de verificatiecode is naar {0} gestuurd. Voer deze code hieronder in.",
|
||||||
"console-email-code": "E-mail Code:",
|
"console-email-code": "E-mail Code:",
|
||||||
"console-accept-terms": "Accepteert u de voorwaarden? [y/n]:",
|
"console-accept-terms": "Accepteert u de voorwaarden? [y/n]:",
|
||||||
"console-accept": "y",
|
"console-accept": "y"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -209,7 +209,7 @@ const messages = {
|
|||||||
"clientNotFoundMessage": "Klient ikke funnet.",
|
"clientNotFoundMessage": "Klient ikke funnet.",
|
||||||
"clientDisabledMessage": "Klient deaktivert.",
|
"clientDisabledMessage": "Klient deaktivert.",
|
||||||
"invalidParameterMessage": "Ugyldig parameter: {0}",
|
"invalidParameterMessage": "Ugyldig parameter: {0}",
|
||||||
"alreadyLoggedIn": "Du er allerede innlogget.",
|
"alreadyLoggedIn": "Du er allerede innlogget."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -280,7 +280,7 @@ const messages = {
|
|||||||
"Musisz zweryfikować swój adres e-mail. Wiadomość e-mail z kodem weryfikacyjnym została wysłana do {0}. Podaj ten kod poniżej.",
|
"Musisz zweryfikować swój adres e-mail. Wiadomość e-mail z kodem weryfikacyjnym została wysłana do {0}. Podaj ten kod poniżej.",
|
||||||
"console-email-code": "Kod z e-mail:",
|
"console-email-code": "Kod z e-mail:",
|
||||||
"console-accept-terms": "Akceptujesz warunki? [t/n]:",
|
"console-accept-terms": "Akceptujesz warunki? [t/n]:",
|
||||||
"console-accept": "t",
|
"console-accept": "t"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -326,7 +326,7 @@ const messages = {
|
|||||||
"webauthn-error-auth-verification": "O resultado da autenticação da Chave de Segurança é inválido.",
|
"webauthn-error-auth-verification": "O resultado da autenticação da Chave de Segurança é inválido.",
|
||||||
"webauthn-error-register-verification": "O resultado do registro da Chave de Segurança é inválido.",
|
"webauthn-error-register-verification": "O resultado do registro da Chave de Segurança é inválido.",
|
||||||
"webauthn-error-user-not-found": "Usuário desconhecido autenticado pela Chave de Segurança.",
|
"webauthn-error-user-not-found": "Usuário desconhecido autenticado pela Chave de Segurança.",
|
||||||
"identity-provider-redirector": "Conecte-se com outro Provedor de Identidade",
|
"identity-provider-redirector": "Conecte-se com outro Provedor de Identidade"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -199,7 +199,7 @@ const messages = {
|
|||||||
"clientNotFoundMessage": "Клиент не найден.",
|
"clientNotFoundMessage": "Клиент не найден.",
|
||||||
"clientDisabledMessage": "Клиент отключен.",
|
"clientDisabledMessage": "Клиент отключен.",
|
||||||
"invalidParameterMessage": "Неверный параметр: {0}",
|
"invalidParameterMessage": "Неверный параметр: {0}",
|
||||||
"alreadyLoggedIn": "Вы уже вошли.",
|
"alreadyLoggedIn": "Вы уже вошли."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -238,7 +238,7 @@ const messages = {
|
|||||||
"clientCertificate": "certifikát klienta X509:",
|
"clientCertificate": "certifikát klienta X509:",
|
||||||
"noCertificate": "[Bez certifikátu]",
|
"noCertificate": "[Bez certifikátu]",
|
||||||
"pageNotFound": "Stránka nebola nájdená",
|
"pageNotFound": "Stránka nebola nájdená",
|
||||||
"internalServerError": "Vyskytla sa interná chyba servera",
|
"internalServerError": "Vyskytla sa interná chyba servera"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -195,7 +195,7 @@ const messages = {
|
|||||||
"clientNotFoundMessage": "Klienten hittades ej.",
|
"clientNotFoundMessage": "Klienten hittades ej.",
|
||||||
"clientDisabledMessage": "Klienten är inaktiverad.",
|
"clientDisabledMessage": "Klienten är inaktiverad.",
|
||||||
"invalidParameterMessage": "Ogiltig parameter: {0}",
|
"invalidParameterMessage": "Ogiltig parameter: {0}",
|
||||||
"alreadyLoggedIn": "Du är redan inloggad.",
|
"alreadyLoggedIn": "Du är redan inloggad."
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -281,7 +281,7 @@ const messages = {
|
|||||||
"E-posta adresinizi doğrulamanız gerekiyor. Bir doğrulama kodu içeren {0} adresine bir e-posta gönderildi. Lütfen bu kodu aşağıdaki girdiye giriniz.",
|
"E-posta adresinizi doğrulamanız gerekiyor. Bir doğrulama kodu içeren {0} adresine bir e-posta gönderildi. Lütfen bu kodu aşağıdaki girdiye giriniz.",
|
||||||
"console-email-code": "E-posta Kodu:",
|
"console-email-code": "E-posta Kodu:",
|
||||||
"console-accept-terms": "Şartları kabul et? [e/h]:",
|
"console-accept-terms": "Şartları kabul et? [e/h]:",
|
||||||
"console-accept": "e",
|
"console-accept": "e"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
@ -206,7 +206,7 @@ const messages = {
|
|||||||
"clientNotFoundMessage": "客户端未找到",
|
"clientNotFoundMessage": "客户端未找到",
|
||||||
"clientDisabledMessage": "客户端已禁用",
|
"clientDisabledMessage": "客户端已禁用",
|
||||||
"invalidParameterMessage": "无效的参数 : {0}",
|
"invalidParameterMessage": "无效的参数 : {0}",
|
||||||
"alreadyLoggedIn": "您已经登录",
|
"alreadyLoggedIn": "您已经登录"
|
||||||
};
|
};
|
||||||
|
|
||||||
export default messages;
|
export default messages;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user