From 2c53c2d19367e47fb163874ac8ccf1682cea4e1b Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Thu, 5 Dec 2024 08:27:22 +0100 Subject: [PATCH] remove keycloak-themes - moved to https://git.ozg-sh.de/ozgcloud-devops/keycloak-themes --- keycloak-templates/.empty | 0 keycloak-templates/themes/README.md | 24 --- .../themes/ozg-by/login/footer-links.ftl | 3 - .../themes/ozg-by/login/theme.properties | 2 - .../themes/ozg-sh/login/footer-links.ftl | 3 - .../themes/ozg-sh/login/theme.properties | 2 - .../themes/ozg/login/footer-links.ftl | 5 - .../themes/ozg/login/resources/css/styles.css | 156 ---------------- .../login/resources/img/OZG_Cloud_Logo.png | Bin 13267 -> 0 bytes .../themes/ozg/login/template.ftl | 174 ------------------ .../themes/ozg/login/theme.properties | 3 - 11 files changed, 372 deletions(-) delete mode 100644 keycloak-templates/.empty delete mode 100644 keycloak-templates/themes/README.md delete mode 100644 keycloak-templates/themes/ozg-by/login/footer-links.ftl delete mode 100644 keycloak-templates/themes/ozg-by/login/theme.properties delete mode 100644 keycloak-templates/themes/ozg-sh/login/footer-links.ftl delete mode 100644 keycloak-templates/themes/ozg-sh/login/theme.properties delete mode 100644 keycloak-templates/themes/ozg/login/footer-links.ftl delete mode 100644 keycloak-templates/themes/ozg/login/resources/css/styles.css delete mode 100644 keycloak-templates/themes/ozg/login/resources/img/OZG_Cloud_Logo.png delete mode 100644 keycloak-templates/themes/ozg/login/template.ftl delete mode 100644 keycloak-templates/themes/ozg/login/theme.properties diff --git a/keycloak-templates/.empty b/keycloak-templates/.empty deleted file mode 100644 index e69de29..0000000 diff --git a/keycloak-templates/themes/README.md b/keycloak-templates/themes/README.md deleted file mode 100644 index eeadc58..0000000 --- a/keycloak-templates/themes/README.md +++ /dev/null @@ -1,24 +0,0 @@ -Creating Themes -=============== - -Themes are used to configure the look and feel of login pages and the account management console. - -Custom themes packaged in a JAR file should be deployed to the `${kc.home.dir}/providers` directory. After that, run -the `build` command to install them before starting the server. - -You are also able to create your custom themes in this directory, directly. Themes within this directory do not require -the `build` command to be installed. - -When running the server in development mode using `start-dev`, themes are not cached so that you can easily work on them without a need to restart -the server when making changes. - -See the theme section in the [Server Developer Guide](https://www.keycloak.org/docs/latest/server_development/#_themes) for more details about how to create custom themes. - -Overriding the built-in templates ---------------------------------- - -While creating custom themes, especially when overriding templates, it may be useful to use the built-in templates as -a reference. These can be found within the theme directory of `../lib/lib/main/org.keycloak.keycloak-themes-24.0.5.jar`, which can be opened using any -standard ZIP archive tool. - -**Built-in themes should not be modified directly, instead a custom theme should be created.** \ No newline at end of file diff --git a/keycloak-templates/themes/ozg-by/login/footer-links.ftl b/keycloak-templates/themes/ozg-by/login/footer-links.ftl deleted file mode 100644 index 16572fc..0000000 --- a/keycloak-templates/themes/ozg-by/login/footer-links.ftl +++ /dev/null @@ -1,3 +0,0 @@ -<#macro content> - <li class="ozg-login-footer__item"><a href="${properties.staticUrlBarrierefreiheit}/barrierefreiheit" target="_blank" rel="noopener noreferrer">Barrierefreiheit</a></li> -</#macro> \ No newline at end of file diff --git a/keycloak-templates/themes/ozg-by/login/theme.properties b/keycloak-templates/themes/ozg-by/login/theme.properties deleted file mode 100644 index 8a1b5d6..0000000 --- a/keycloak-templates/themes/ozg-by/login/theme.properties +++ /dev/null @@ -1,2 +0,0 @@ -parent=ozg -staticUrlBarrierefreiheit=https://by-static.dev.by.ozg-cloud.de/barrierefreiheit \ No newline at end of file diff --git a/keycloak-templates/themes/ozg-sh/login/footer-links.ftl b/keycloak-templates/themes/ozg-sh/login/footer-links.ftl deleted file mode 100644 index 16572fc..0000000 --- a/keycloak-templates/themes/ozg-sh/login/footer-links.ftl +++ /dev/null @@ -1,3 +0,0 @@ -<#macro content> - <li class="ozg-login-footer__item"><a href="${properties.staticUrlBarrierefreiheit}/barrierefreiheit" target="_blank" rel="noopener noreferrer">Barrierefreiheit</a></li> -</#macro> \ No newline at end of file diff --git a/keycloak-templates/themes/ozg-sh/login/theme.properties b/keycloak-templates/themes/ozg-sh/login/theme.properties deleted file mode 100644 index ded1d12..0000000 --- a/keycloak-templates/themes/ozg-sh/login/theme.properties +++ /dev/null @@ -1,2 +0,0 @@ -parent=ozg -staticUrlBarrierefreiheit=https://sh-static.dev.by.ozg-cloud.de/barrierefreiheit \ No newline at end of file diff --git a/keycloak-templates/themes/ozg/login/footer-links.ftl b/keycloak-templates/themes/ozg/login/footer-links.ftl deleted file mode 100644 index f200a87..0000000 --- a/keycloak-templates/themes/ozg/login/footer-links.ftl +++ /dev/null @@ -1,5 +0,0 @@ -<#macro content> - <li class="ozg-login-footer__item"><a href="${properties.staticUrlBarrierefreiheit}/barrierefreiheit" target="_blank" rel="noopener noreferrer">Barrierefreiheit</a></li> - <!-- li class="ozg-login-footer__item" target="_blank"><a href="${properties.staticUrlDatenschutz}/datenschutz" rel="noopener noreferrer">Datenschutz</a></li> - <li class="ozg-login-footer__item" target="_blank"><a href="${properties.staticUrlImpressum}/impressum" rel="noopener noreferrer">Impressum</a></li> --> -</#macro> \ No newline at end of file diff --git a/keycloak-templates/themes/ozg/login/resources/css/styles.css b/keycloak-templates/themes/ozg/login/resources/css/styles.css deleted file mode 100644 index 216257c..0000000 --- a/keycloak-templates/themes/ozg/login/resources/css/styles.css +++ /dev/null @@ -1,156 +0,0 @@ -a { - color: #1565c0; - text-decoration: none; -} - -a:hover { - color: #1565c0; - text-decoration: underline; -} - -a:focus { - color: #1565c0; - outline: 2px solid #1565c0; - outline-offset: 4px; - border-radius: 6px; - text-decoration: none; -} - -.login-pf a:hover { - color: #1565c0; -} - -.login-pf body { - background-image: none; - background-color: #f9f9f9; - font-size: 16px; - font-family: Roboto, "Helvetica Neue", sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.ozg-login-h1 { - font-size: 24px; - font-weight: 500; - color: #1565c0; - padding: 32px 0 0 0; - margin-top: 0; - margin-bottom: 0; - text-align: center; -} - -.ozg-login-h2 { - font-size: 20px; - font-weight: 500; - color: #1565c0; - padding: 12px 0; - margin-top: 0; - margin-bottom: 0; - text-align: center; -} - -.ozg-login-logo { - background-image: url(../img/OZG_Cloud_logo.png); - background-repeat: no-repeat; - background-size: contain; - aspect-ratio: 1.3; - height: 110px; - margin: 0 auto; -} - -.login-pf-page .card-pf { - border-radius: 6px; -} - -.pf-c-form__label-text { - font-weight: 500; - font-size: 16px; - margin-bottom: 8px; -} - -.pf-c-form-control { - border-radius: 6px; - border-color: #4678c2; - padding: 8px 12px; -} - -.pf-c-form-control:focus { - padding: 8px 12px; - border-color: #e0e0e0; - outline: 2px solid #4678c2; - outline-offset: 2px; -} - -.pf-c-form-control[aria-invalid="true"] { - border-color: #d62424; - border-color: #e0e0e0; - border-bottom-width: 1px; -} - -.pf-c-form-control[aria-invalid="true"]:focus { - border-color: #e0e0e0; - outline: 2px solid #d62424; - outline-offset: 2px; -} - -.pf-c-button.pf-m-control { - border-color: #4678c2; - margin-left: 0; -} - -.pf-c-form__helper-text { - font-size: 14px; -} - -.required { - color: #d62424; -} - -.pf-c-button:after { - border: none; -} - -.pf-c-alert { - background-color: white; - border-top: none; - padding: 0 0 16px 0; - color: #d62424; -} - -.pf-c-alert__title { - font-size: 14px; - color: #d62424; -} - -.btn-lg { - border-radius: 6px; - font-size: 14px; - color: white; - font-weight: 500; - padding: 8px 32px; - min-width: 126px; - width: auto; -} - -.btn-lg:focus-visible { - outline: 2px solid #4678c2; - outline-offset: 2px; -} - -.ozg-login-footer { - display: flex; - flex-direction: row; - justify-content: center; - flex-wrap: wrap; - padding: 60px 0; -} - -.ozg-login-footer__item { - padding: 0 12px; - font-size: 16px; -} - -#kc-info-wrapper { - font-size: 16px; - color: #363636; -} diff --git a/keycloak-templates/themes/ozg/login/resources/img/OZG_Cloud_Logo.png b/keycloak-templates/themes/ozg/login/resources/img/OZG_Cloud_Logo.png deleted file mode 100644 index 124440050006f888cd60276dbb9a6b8d779475bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13267 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 diff --git a/keycloak-templates/themes/ozg/login/template.ftl b/keycloak-templates/themes/ozg/login/template.ftl deleted file mode 100644 index 5012960..0000000 --- a/keycloak-templates/themes/ozg/login/template.ftl +++ /dev/null @@ -1,174 +0,0 @@ -<#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true displayRequiredFields=false> -<!DOCTYPE html> -<html class="${properties.kcHtmlClass!}"<#if realm.internationalizationEnabled> lang="${locale.currentLanguageTag}"</#if>> - -<head> - <meta charset="utf-8"> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <meta name="robots" content="noindex, nofollow"> - - <#if properties.meta?has_content> - <#list properties.meta?split(' ') as meta> - <meta name="${meta?split('==')[0]}" content="${meta?split('==')[1]}"/> - </#list> - </#if> - <title>${msg("loginTitle",(realm.displayName!''))}</title> - <link rel="icon" href="${url.resourcesPath}/img/favicon.ico" /> - <#if properties.stylesCommon?has_content> - <#list properties.stylesCommon?split(' ') as style> - <link href="${url.resourcesCommonPath}/${style}" rel="stylesheet" /> - </#list> - </#if> - <#if properties.styles?has_content> - <#list properties.styles?split(' ') as style> - <link href="${url.resourcesPath}/${style}" rel="stylesheet" /> - </#list> - </#if> - <#if properties.scripts?has_content> - <#list properties.scripts?split(' ') as script> - <script src="${url.resourcesPath}/${script}" type="text/javascript"></script> - </#list> - </#if> - <script src="${url.resourcesPath}/js/menu-button-links.js" type="module"></script> - <#if scripts??> - <#list scripts as script> - <script src="${script}" type="text/javascript"></script> - </#list> - </#if> - <#if authenticationSession??> - <script type="module"> - import { checkCookiesAndSetTimer } from "${url.resourcesPath}/js/authChecker.js"; - - checkCookiesAndSetTimer( - "${authenticationSession.authSessionId}", - "${authenticationSession.tabId}", - "${url.ssoLoginInOtherTabsUrl?no_esc}" - ); - </script> - </#if> -</head> - -<body class="${properties.kcBodyClass!}"> -<div class="${properties.kcLoginClass!}"> - <header id="kc-header" class="${properties.kcHeaderClass!}"> - <div class="ozg-login-logo" role="img" aria-label="OZG-Cloud Logo"></div> - <h1 class="ozg-login-h1">${kcSanitize(msg("loginTitleHtml",(realm.displayNameHtml!'')))?no_esc}</h1> - </header> - <main class="${properties.kcFormCardClass!}"> - <div class="${properties.kcFormHeaderClass!}"> - <#if realm.internationalizationEnabled && locale.supported?size gt 1> - <div class="${properties.kcLocaleMainClass!}" id="kc-locale"> - <div id="kc-locale-wrapper" class="${properties.kcLocaleWrapperClass!}"> - <div id="kc-locale-dropdown" class="menu-button-links ${properties.kcLocaleDropDownClass!}"> - <button tabindex="1" id="kc-current-locale-link" aria-label="${msg("languages")}" aria-haspopup="true" aria-expanded="false" aria-controls="language-switch1">${locale.current}</button> - <ul role="menu" tabindex="-1" aria-labelledby="kc-current-locale-link" aria-activedescendant="" id="language-switch1" class="${properties.kcLocaleListClass!}"> - <#assign i = 1> - <#list locale.supported as l> - <li class="${properties.kcLocaleListItemClass!}" role="none"> - <a role="menuitem" id="language-${i}" class="${properties.kcLocaleItemClass!}" href="${l.url}">${l.label}</a> - </li> - <#assign i++> - </#list> - </ul> - </div> - </div> - </div> - </#if> - <#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())> - <#if displayRequiredFields> - <div class="${properties.kcContentWrapperClass!}"> - <div class="${properties.kcLabelWrapperClass!} subtitle"> - <span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span> - </div> - <div class="col-md-10"> - <h2 class="ozg-login-h2" id="kc-page-title"><#nested "header"></h2> - </div> - </div> - <#else> - <h2 class="ozg-login-h2" id="kc-page-title"><#nested "header"></h2> - </#if> - <#else> - <#if displayRequiredFields> - <div class="${properties.kcContentWrapperClass!}"> - <div class="${properties.kcLabelWrapperClass!} subtitle"> - <span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span> - </div> - <div class="col-md-10"> - <#nested "show-username"> - <div id="kc-username" class="${properties.kcFormGroupClass!}"> - <label id="kc-attempted-username">${auth.attemptedUsername}</label> - <a id="reset-login" href="${url.loginRestartFlowUrl}" aria-label="${msg("restartLoginTooltip")}"> - <div class="kc-login-tooltip"> - <i class="${properties.kcResetFlowIcon!}"></i> - <span class="kc-tooltip-text">${msg("restartLoginTooltip")}</span> - </div> - </a> - </div> - </div> - </div> - <#else> - <#nested "show-username"> - <div id="kc-username" class="${properties.kcFormGroupClass!}"> - <label id="kc-attempted-username">${auth.attemptedUsername}</label> - <a id="reset-login" href="${url.loginRestartFlowUrl}" aria-label="${msg("restartLoginTooltip")}"> - <div class="kc-login-tooltip"> - <i class="${properties.kcResetFlowIcon!}"></i> - <span class="kc-tooltip-text">${msg("restartLoginTooltip")}</span> - </div> - </a> - </div> - </#if> - </#if> - </div> - <div id="kc-content"> - <div id="kc-content-wrapper"> - <#-- App-initiated actions should not see warning messages about the need to complete the action --> - <#-- during login. --> - <#if displayMessage && message?has_content && (message.type != 'warning' || !isAppInitiatedAction??)> - <div class="alert-${message.type} ${properties.kcAlertClass!} pf-m-<#if message.type = 'error'>danger<#else>${message.type}</#if>"> - <div class="pf-c-alert__icon"> - <#if message.type = 'success'><span class="${properties.kcFeedbackSuccessIcon!}"></span></#if> - <#if message.type = 'warning'><span class="${properties.kcFeedbackWarningIcon!}"></span></#if> - <#if message.type = 'error'><span class="${properties.kcFeedbackErrorIcon!}"></span></#if> - <#if message.type = 'info'><span class="${properties.kcFeedbackInfoIcon!}"></span></#if> - </div> - <span class="${properties.kcAlertTitleClass!}">${kcSanitize(message.summary)?no_esc}</span> - </div> - </#if> - - <#nested "form"> - - <#if auth?has_content && auth.showTryAnotherWayLink()> - <form id="kc-select-try-another-way-form" action="${url.loginAction}" method="post"> - <div class="${properties.kcFormGroupClass!}"> - <input type="hidden" name="tryAnotherWay" value="on"/> - <a href="#" id="try-another-way" - onclick="document.forms['kc-select-try-another-way-form'].submit();return false;">${msg("doTryAnotherWay")}</a> - </div> - </form> - </#if> - - <#nested "socialProviders"> - - <#if displayInfo> - <div id="kc-info" class="${properties.kcSignUpClass!}"> - <div id="kc-info-wrapper" class="${properties.kcInfoAreaWrapperClass!}"> - <#nested "info"> - </div> - </div> - </#if> - </div> - </div> - </main> - <footer> - <nav> - <ul class="ozg-login-footer"> - <#import "footer-links.ftl" as footer> - <@footer.content/> - </ul> - </nav> - </footer> - </div> -</body> -</html> -</#macro> diff --git a/keycloak-templates/themes/ozg/login/theme.properties b/keycloak-templates/themes/ozg/login/theme.properties deleted file mode 100644 index 44cd95c..0000000 --- a/keycloak-templates/themes/ozg/login/theme.properties +++ /dev/null @@ -1,3 +0,0 @@ -parent=keycloak -styles=css/login.css css/styles.css -staticUrlBarrierefreiheit=https://static.dev.by.ozg-cloud.de/barrierefreiheit \ No newline at end of file -- GitLab