diff --git a/README.md b/README.md index 9ca0341..5c73e9d 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,8 @@ keycloak-modern-login is a Keycloak login theme that's build using Tailwind CSS, ![](docs/login-form.jpg) -![](docs/login-webauthn.jpg) +![](docs/login-webauthn.jpg) + ## State of this project diff --git a/src/types/context.ts b/src/types/context.ts index f33a8a3..1a7c3a8 100644 --- a/src/types/context.ts +++ b/src/types/context.ts @@ -325,6 +325,16 @@ export declare namespace KcContextBase { attributesByName: Record; }; }; + + export type SAMLPostForm = Common & { + pageId: "saml-post-form.ftl" + samlPost: { + url: string; + SAMLRequest?: string; + SAMLResponse?: string; + relayState?: string; + } + }; } export type Attribute = { diff --git a/src/types/samlPostData.ts b/src/types/samlPostData.ts new file mode 100644 index 0000000..6bc70c3 --- /dev/null +++ b/src/types/samlPostData.ts @@ -0,0 +1,5 @@ +export type SAMLPostData = { + SAMLRequest?: string, + SAMLResponse?: string, + relayState?: string, +} \ No newline at end of file diff --git a/src/views/saml-post-form/index.ftl b/src/views/saml-post-form/index.ftl new file mode 100644 index 0000000..21397e4 --- /dev/null +++ b/src/views/saml-post-form/index.ftl @@ -0,0 +1,6 @@ +<#import "baselayout.ftl" as layout> +<@layout.baseLayout pageId="saml-post-form.ftl" ; section> + <#if section = "scripts"> + + + diff --git a/src/views/saml-post-form/index.ts b/src/views/saml-post-form/index.ts new file mode 100644 index 0000000..9344ee4 --- /dev/null +++ b/src/views/saml-post-form/index.ts @@ -0,0 +1,7 @@ +import { createApp } from "vue"; +import index from "./index.vue"; + +if ((window as any).kcContext) { + const app = createApp(index); + app.mount("#app"); +} diff --git a/src/views/saml-post-form/index.vue b/src/views/saml-post-form/index.vue new file mode 100644 index 0000000..e5ea71e --- /dev/null +++ b/src/views/saml-post-form/index.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/views/webauthn-authenticate/index.vue b/src/views/webauthn-authenticate/index.vue index e433d12..ed6a2e8 100644 --- a/src/views/webauthn-authenticate/index.vue +++ b/src/views/webauthn-authenticate/index.vue @@ -86,7 +86,7 @@ import type { KcContextBase } from "~/types/context"; import { base64url } from "rfc4648"; export default defineComponent({ - name: "Login", + name: "WebAuthnAuthenticate", components: { Layout, ErrorBox, diff --git a/webpack.config.js b/webpack.config.js index 5807125..ba34e35 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -5,7 +5,7 @@ const { CleanWebpackPlugin } = require("clean-webpack-plugin"); const CopyWebpackPlugin = require("copy-webpack-plugin"); const THEME_NAME = "modern-login"; -const customPages = ["login", "webauthn-authenticate"]; +const customPages = ["login", "webauthn-authenticate", "saml-post-form"]; module.exports = function (env, argv) { const isDevelopment = argv.mode !== "production";