keycloak-memoizeit
Changes
distribution/appliance-dist/pom.xml 1(+1 -0)
forms/common-themes/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProvider 2(+1 -1)
forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/applications.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/oauth-clients.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-claims.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-credentials.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-detail.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-installation.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-list.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-revocation.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-role-detail.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-role-list.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-scope-mappings.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-sessions.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-claims.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-credentials.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-detail.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-installation.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-list.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-revocation.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-scope-mappings.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-audit.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-audit-config.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-auth-detail.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-auth-list.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-create.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-credentials.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-default-roles.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-detail.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-detail_mock.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-social.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-tokens.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-detail.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-mappings.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-brute-force.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-realm.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-revocation.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-credentials.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-detail.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-sessions.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/templates/kc-dropdown.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/base/resources/templates/kc-navigation.html 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/keycloak/resources/css/admin-console.css 28(+0 -28)
forms/common-themes/src/main/resources/theme/admin/keycloak/resources/css/img/sprite-table-nav.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/keycloak/resources/img/header-bkgrnd.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/keycloak/resources/img/icon-collapse-expand.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/keycloak/resources/img/icon-sidebar-active.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/keycloak/resources/img/icon-sidebar-active.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/keycloak/resources/img/sprite-arrow-down.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/keycloak/resources/img/sprite-arrow-down.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/keycloak/resources/img/sprites-white.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/admin/keycloak/resources/img/sprites-white.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/angular.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/angular-bootstrap.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/angular-bootstrap-prettify.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/angular-cookies.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/angular-loader.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/angular-mocks.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/angular-resource.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/angular-route.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/angular-sanitize.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/angular-scenario.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/jstd-scenario-adapter.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/jstd-scenario-adapter-config.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/select2.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/ui-bootstrap-tpls-0.4.0.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/version.json 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/angular/version.txt 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/components/font-awesome/fonts/FontAwesome.otf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/components/font-awesome/fonts/fontawesome-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/components/font-awesome/fonts/fontawesome-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/components/font-awesome/fonts/fontawesome-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/components/font-awesome/fonts/fontawesome-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/fileupload/angular-file-upload.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/fileupload/angular-file-upload.min.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/fileupload/angular-file-upload-html5-shim.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/fileupload/angular-file-upload-html5-shim.min.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/fileupload/angular-file-upload-shim.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/fileupload/angular-file-upload-shim.min.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/fileupload/FileAPI.min.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/jquery/jquery.idletimeout.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/jquery/jquery.idletimer.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/jquery/jquery-1.10.2.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/css/patternfly.css 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/css/patternfly.min.css 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Light-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Light-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Light-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Light-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/img/bg-login.jpg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/img/brand.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/img/brand.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/img/brand-lg.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/img/logo.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/img/logo.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/js/patternfly.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/patternfly/js/patternfly.min.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/component.json 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/LICENSE 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/README.md 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/release.sh 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2.css 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2.jquery.json 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2.min.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_ar.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_ca.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_cs.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_da.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_de.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_el.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_en.js.template 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_es.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_et.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_eu.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_fi.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_fr.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_gl.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_he.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_hr.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_hu.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_id.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_is.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_it.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_ja.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_ko.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_lt.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_lv.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_mk.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_nl.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_no.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_pl.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_pt-BR.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_pt-PT.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_ro.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_ru.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_sk.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_sv.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_tr.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_ua.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_vi.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_zh-CN.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2_locale_zh-TW.js 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2-spinner.gif 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/select2-3.4.1/select2x2.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/zocial/zocial.css 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/zocial/zocial-regular-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/zocial/zocial-regular-webfont.svg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/zocial/zocial-regular-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/keycloak/resources/lib/zocial/zocial-regular-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/css/patternfly.css 9168(+0 -9168)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.svg 146(+0 -146)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-BoldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.svg 146(+0 -146)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Bold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.svg 146(+0 -146)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-ExtraBoldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.svg 146(+0 -146)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-ExtraBold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.svg 146(+0 -146)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Italic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.svg 146(+0 -146)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-LightItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Light-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Light-webfont.svg 146(+0 -146)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Light-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Light-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.svg 146(+0 -146)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Regular-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.svg 146(+0 -146)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-SemiboldItalic-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.svg 146(+0 -146)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/OpenSans-Semibold-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.eot 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.svg 34(+0 -34)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.ttf 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/fonts/PatternFlyIcons-webfont.woff 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/img/bg-login.jpg 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/img/brand.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/img/brand.svg 84(+0 -84)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/img/brand-lg.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/img/logo.png 0(+0 -0)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/img/logo.svg 22(+0 -22)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/js/patternfly.js 68(+0 -68)
forms/common-themes/src/main/resources/theme/common/patternfly/resources/lib/patternfly/js/patternfly.min.js 1(+0 -1)
pom.xml 1(+0 -1)
server/pom.xml 5(+0 -5)
server/src/main/webapp/WEB-INF/web.xml 19(+2 -17)
testsuite/integration/pom.xml 5(+0 -5)
Details
diff --git a/distribution/appliance-dist/assembly.xml b/distribution/appliance-dist/assembly.xml
index 1b81f38..957cc36 100755
--- a/distribution/appliance-dist/assembly.xml
+++ b/distribution/appliance-dist/assembly.xml
@@ -47,7 +47,7 @@
<outputDirectory>keycloak</outputDirectory>
</fileSet>
<fileSet>
- <directory>${project.build.directory}/unpacked/deployments/auth-server.war</directory>
+ <directory>src/main/welcome-content</directory>
<outputDirectory>keycloak/welcome-content</outputDirectory>
<includes>
<include>*.*</include>
distribution/appliance-dist/pom.xml 1(+1 -0)
diff --git a/distribution/appliance-dist/pom.xml b/distribution/appliance-dist/pom.xml
index c1a7bb4..e981729 100755
--- a/distribution/appliance-dist/pom.xml
+++ b/distribution/appliance-dist/pom.xml
@@ -84,6 +84,7 @@
<outputDirectory>${project.build.directory}/unpacked/adapter</outputDirectory>
</artifactItem>
</artifactItems>
+ <excludes>**/welcome-content/*</excludes>
</configuration>
</execution>
</executions>
diff --git a/distribution/appliance-dist/src/main/welcome-content/index.html b/distribution/appliance-dist/src/main/welcome-content/index.html
new file mode 100644
index 0000000..ad7660e
--- /dev/null
+++ b/distribution/appliance-dist/src/main/welcome-content/index.html
@@ -0,0 +1,32 @@
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~ Copyright (c) 2011, Red Hat, Inc., and individual contributors
+ ~ as indicated by the @author tags. See the copyright.txt file in the
+ ~ distribution for a full listing of individual contributors.
+ ~
+ ~ This is free software; you can redistribute it and/or modify it
+ ~ under the terms of the GNU Lesser General Public License as
+ ~ published by the Free Software Foundation; either version 2.1 of
+ ~ the License, or (at your option) any later version.
+ ~
+ ~ This software is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public
+ ~ License along with this software; if not, write to the Free
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+ <title>Welcome to Keycloak</title>
+ <meta http-equiv="refresh" content="0; url=/auth/" />
+</head>
+
+<body>
+</body>
+</html>
diff --git a/forms/common-freemarker/src/main/java/org/keycloak/freemarker/Theme.java b/forms/common-freemarker/src/main/java/org/keycloak/freemarker/Theme.java
index 265496c..dd02e62 100644
--- a/forms/common-freemarker/src/main/java/org/keycloak/freemarker/Theme.java
+++ b/forms/common-freemarker/src/main/java/org/keycloak/freemarker/Theme.java
@@ -10,7 +10,7 @@ import java.util.Properties;
*/
public interface Theme {
- public enum Type { LOGIN, ACCOUNT, COMMON };
+ public enum Type { LOGIN, ACCOUNT, ADMIN, COMMON };
public String getName();
diff --git a/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ThemeLoader.java b/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ThemeLoader.java
index 5327979..c64bff6 100755
--- a/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ThemeLoader.java
+++ b/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ThemeLoader.java
@@ -48,6 +48,11 @@ public class ThemeLoader {
for (String parentName = theme.getParentName(); parentName != null; parentName = theme.getParentName()) {
theme = findTheme(providers, parentName, type);
themes.add(theme);
+
+ if (theme.getImportName() != null) {
+ String[] s = theme.getImportName().split("/");
+ themes.add(findTheme(providers, s[1], Theme.Type.valueOf(s[0].toUpperCase())));
+ }
}
return new ExtendingTheme(themes);
diff --git a/forms/common-themes/src/main/java/org/keycloak/theme/FolderTheme.java b/forms/common-themes/src/main/java/org/keycloak/theme/FolderTheme.java
index 2427b65..aa2312e 100644
--- a/forms/common-themes/src/main/java/org/keycloak/theme/FolderTheme.java
+++ b/forms/common-themes/src/main/java/org/keycloak/theme/FolderTheme.java
@@ -29,7 +29,7 @@ public class FolderTheme implements Theme {
if (propertiesFile .isFile()) {
properties.load(new FileInputStream(propertiesFile));
parentName = properties.getProperty("parent");
- parentName = properties.getProperty("import");
+ importName = properties.getProperty("import");
}
}
diff --git a/forms/common-themes/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProvider b/forms/common-themes/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProvider
index 8a9390d..f9f661b 100644
--- a/forms/common-themes/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProvider
+++ b/forms/common-themes/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProvider
@@ -1,2 +1,2 @@
-org.keycloak.theme.DefaultLoginThemeProvider
+org.keycloak.theme.DefaultKeycloakThemeProvider
org.keycloak.theme.FolderThemeProvider
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/account/keycloak/theme.properties b/forms/common-themes/src/main/resources/theme/account/keycloak/theme.properties
index b5952d5..611dff9 100644
--- a/forms/common-themes/src/main/resources/theme/account/keycloak/theme.properties
+++ b/forms/common-themes/src/main/resources/theme/account/keycloak/theme.properties
@@ -1,2 +1,4 @@
parent=patternfly
+import=common/keycloak
+
styles= ../patternfly/lib/patternfly/css/patternfly.css ../patternfly/css/account.css css/account.css
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/account/patternfly/theme.properties b/forms/common-themes/src/main/resources/theme/account/patternfly/theme.properties
index 8033479..971b6c0 100644
--- a/forms/common-themes/src/main/resources/theme/account/patternfly/theme.properties
+++ b/forms/common-themes/src/main/resources/theme/account/patternfly/theme.properties
@@ -1,4 +1,4 @@
parent=base
-import=common/patternfly
+import=common/keycloak
styles=lib/patternfly/css/patternfly.css css/account.css
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/theme.properties b/forms/common-themes/src/main/resources/theme/admin/base/theme.properties
new file mode 100644
index 0000000..5eb8ef9
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/admin/base/theme.properties
@@ -0,0 +1 @@
+import=common/keycloak
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/admin/keycloak/resources/css/styles.css b/forms/common-themes/src/main/resources/theme/admin/keycloak/resources/css/styles.css
new file mode 100644
index 0000000..d5ca9aa
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/admin/keycloak/resources/css/styles.css
@@ -0,0 +1,34 @@
+@import url("../lib/patternfly/css/patternfly.css");
+@import url("../lib/select2-3.4.1/select2.css");
+
+@import url("admin-console.css");
+@import url("tables.css");
+@import url("sprites.css");
+
+.navbar-pf {
+ background-image: url('../img/header-bkgrnd.png');
+ border-top: 3px solid rgba(255, 255, 255, 0.15);
+}
+
+.navbar-pf .navbar-primary {
+ font-size: 13px;
+ background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,.4) 100%);
+ background-image: linear-gradient(to bottom, rgba(0,0,0,.1) 0%, rgba(0,0,0,.4) 100%);
+}
+
+.navbar-pf .navbar-header {
+ border-bottom: 1px solid rgba(255,255,255,.15);
+}
+
+.navbar-pf .navbar-primary li.dropdown.context > a,
+.navbar-pf .navbar-primary li.dropdown.context > a:hover,
+.navbar-pf .navbar-primary li.dropdown.context.open > a,
+.navbar-pf .navbar-primary > .active > a,
+.navbar-pf .navbar-primary > .active > a:hover{
+ background-color: rgba(0,0,0,0.1);
+ background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%);
+ background-image: linear-gradient(to bottom, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%);
+ border-bottom: none;
+ border-right-color: rgba(255,255,255,0.15);
+ border-top-color: rgba(255,255,255,0.05);
+}
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/admin/keycloak/theme.properties b/forms/common-themes/src/main/resources/theme/admin/keycloak/theme.properties
new file mode 100644
index 0000000..13a3608
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/admin/keycloak/theme.properties
@@ -0,0 +1,2 @@
+parent=patternfly
+import=common/keycloak
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/admin/patternfly/resources/css/styles.css b/forms/common-themes/src/main/resources/theme/admin/patternfly/resources/css/styles.css
new file mode 100644
index 0000000..726012a
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/admin/patternfly/resources/css/styles.css
@@ -0,0 +1,6 @@
+@import url("../lib/patternfly/css/patternfly.css");
+@import url("../lib/select2-3.4.1/select2.css");
+
+@import url("admin-console.css");
+@import url("tables.css");
+@import url("sprites.css");
diff --git a/forms/common-themes/src/main/resources/theme/admin/patternfly/theme.properties b/forms/common-themes/src/main/resources/theme/admin/patternfly/theme.properties
new file mode 100644
index 0000000..e67231f
--- /dev/null
+++ b/forms/common-themes/src/main/resources/theme/admin/patternfly/theme.properties
@@ -0,0 +1,2 @@
+parent=base
+import=common/keycloak
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/login/keycloak/theme.properties b/forms/common-themes/src/main/resources/theme/login/keycloak/theme.properties
index 54da766..599759a 100644
--- a/forms/common-themes/src/main/resources/theme/login/keycloak/theme.properties
+++ b/forms/common-themes/src/main/resources/theme/login/keycloak/theme.properties
@@ -1,2 +1,4 @@
parent=patternfly
+import=common/keycloak
+
styles= ../patternfly/lib/patternfly/css/patternfly.css ../patternfly/css/login.css ../patternfly/lib/zocial/zocial.css css/login.css
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/login/patternfly/theme.properties b/forms/common-themes/src/main/resources/theme/login/patternfly/theme.properties
index 6ac168b..c6ae402 100644
--- a/forms/common-themes/src/main/resources/theme/login/patternfly/theme.properties
+++ b/forms/common-themes/src/main/resources/theme/login/patternfly/theme.properties
@@ -1,5 +1,5 @@
parent=base
-import=common/patternfly
+import=common/keycloak
styles=lib/patternfly/css/patternfly.css lib/zocial/zocial.css css/login.css
meta=viewport==width=device-width,initial-scale=1
diff --git a/model/api/src/main/java/org/keycloak/models/Config.java b/model/api/src/main/java/org/keycloak/models/Config.java
index 25f5332..d1ed6af 100644
--- a/model/api/src/main/java/org/keycloak/models/Config.java
+++ b/model/api/src/main/java/org/keycloak/models/Config.java
@@ -25,6 +25,9 @@ public class Config {
public static final String THEME_DEFAULT_KEY = "keycloak.theme.default";
public static final String THEME_DEFAULT_DEFAULT = "keycloak";
public static final String THEME_DIR_KEY = "keycloak.theme.dir";
+ public static final String THEME_ADMIN_KEY = "keycloak.theme.admin";
+ public static final String THEME_ADMIN_DEFAULT = "keycloak";
+
public static final String JBOSS_SERVER_CONFIG_DIR_KEY = "jboss.server.config.dir";
public static final String TIMER_PROVIDER_KEY = "keycloak.timer";
@@ -106,4 +109,12 @@ public class Config {
System.setProperty(THEME_DEFAULT_KEY, defaultTheme);
}
+ public static String getThemeAdmin() {
+ return System.getProperty(THEME_ADMIN_KEY, THEME_ADMIN_DEFAULT);
+ }
+
+ public static void setThemeAdmin(String adminTheme) {
+ System.setProperty(THEME_ADMIN_KEY, adminTheme);
+ }
+
}
pom.xml 1(+0 -1)
diff --git a/pom.xml b/pom.xml
index 31ae93b..e62a6d4 100755
--- a/pom.xml
+++ b/pom.xml
@@ -97,7 +97,6 @@
<module>services</module>
<module>social</module>
<module>forms</module>
- <module>admin-ui</module>
<module>examples</module>
<module>testsuite</module>
<module>server</module>
server/pom.xml 5(+0 -5)
diff --git a/server/pom.xml b/server/pom.xml
index a4313c2..fc93352 100755
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -133,11 +133,6 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
- <artifactId>keycloak-admin-ui</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.keycloak</groupId>
<artifactId>keycloak-js-adapter</artifactId>
<version>${project.version}</version>
</dependency>
server/src/main/webapp/WEB-INF/web.xml 19(+2 -17)
diff --git a/server/src/main/webapp/WEB-INF/web.xml b/server/src/main/webapp/WEB-INF/web.xml
index 626ec53..356425f 100755
--- a/server/src/main/webapp/WEB-INF/web.xml
+++ b/server/src/main/webapp/WEB-INF/web.xml
@@ -15,25 +15,16 @@
</init-param>
<init-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
- <param-value>/rest</param-value>
+ <param-value>/</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
- <servlet>
- <servlet-name>TmpAdminRedirectServlet</servlet-name>
- <servlet-class>org.keycloak.services.tmp.TmpAdminRedirectServlet</servlet-class>
- </servlet>
-
<listener>
<listener-class>org.keycloak.services.listeners.KeycloakSessionDestroyListener</listener-class>
</listener>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- </welcome-file-list>
-
<filter>
<filter-name>Keycloak Client Connection Filter</filter-name>
<filter-class>org.keycloak.services.filters.ClientConnectionFilter</filter-class>
@@ -56,13 +47,7 @@
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
- <url-pattern>/rest/*</url-pattern>
- </servlet-mapping>
-
- <servlet-mapping>
- <servlet-name>TmpAdminRedirectServlet</servlet-name>
- <url-pattern>/admin</url-pattern>
- <url-pattern>/admin/</url-pattern>
+ <url-pattern>/*</url-pattern>
</servlet-mapping>
<!--
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/AdminService.java b/services/src/main/java/org/keycloak/services/resources/admin/AdminService.java
index 54c4da0..7be45c5 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/AdminService.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/AdminService.java
@@ -47,7 +47,7 @@ import java.util.Set;
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
-@Path("/admin")
+@Path("/rest/admin")
public class AdminService {
protected static final Logger logger = Logger.getLogger(AdminService.class);
@@ -74,7 +74,7 @@ public class AdminService {
@Context
protected ProviderSession providerSession;
- protected String adminPath = "/admin/index.html";
+ protected String adminPath = "/admin/";
protected AppAuthManager authManager;
protected TokenManager tokenManager;
@@ -373,7 +373,7 @@ public class AdminService {
logger.debug("loginRedirect SUCCESS");
NewCookie cookie = authManager.createCookie(adminRealm, adminConsole, code, AdminService.saasCookiePath(uriInfo).build());
- URI redirectUri = UriBuilder.fromUri(uriInfo.getBaseUri()).path("../").path(adminPath).build();
+ URI redirectUri = UriBuilder.fromUri(uriInfo.getBaseUri()).path(adminPath).build();
if (path != null) {
redirectUri = redirectUri.resolve("#" + UriBuilder.fromPath(path).build().toString());
}
diff --git a/services/src/main/java/org/keycloak/services/resources/AdminResource.java b/services/src/main/java/org/keycloak/services/resources/AdminResource.java
new file mode 100755
index 0000000..668ffa5
--- /dev/null
+++ b/services/src/main/java/org/keycloak/services/resources/AdminResource.java
@@ -0,0 +1,60 @@
+package org.keycloak.services.resources;
+
+import org.jboss.resteasy.logging.Logger;
+import org.keycloak.models.Config;
+import org.keycloak.freemarker.Theme;
+import org.keycloak.freemarker.ThemeLoader;
+
+import javax.activation.FileTypeMap;
+import javax.activation.MimetypesFileTypeMap;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+/**
+ * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
+ */
+@Path("/admin")
+public class AdminResource {
+
+ private static final Logger logger = Logger.getLogger(AdminResource.class);
+
+ private static FileTypeMap mimeTypes = MimetypesFileTypeMap.getDefaultFileTypeMap();
+
+ @Context
+ private UriInfo uriInfo;
+
+ @GET
+ public Response getResource() throws URISyntaxException {
+ String requestUri = uriInfo.getRequestUri().toString();
+ if (!requestUri.endsWith("/")) {
+ return Response.seeOther(new URI(requestUri + "/")).build();
+ } else {
+ return getResource("index.html");
+ }
+ }
+
+ @GET
+ @Path("/{path:.*}")
+ public Response getResource(@PathParam("path") String path) {
+ try {
+ Theme theme = ThemeLoader.createTheme(Config.getThemeAdmin(), Theme.Type.ADMIN);
+ InputStream resource = theme.getResourceAsStream(path);
+ if (resource != null) {
+ return Response.ok(resource).type(mimeTypes.getContentType(path)).build();
+ } else {
+ return Response.status(Response.Status.NOT_FOUND).build();
+ }
+ } catch (Exception e) {
+ logger.warn("Failed to get theme resource", e);
+ return Response.serverError().build();
+ }
+ }
+
+}
diff --git a/services/src/main/java/org/keycloak/services/resources/JsResource.java b/services/src/main/java/org/keycloak/services/resources/JsResource.java
new file mode 100644
index 0000000..c28d8bd
--- /dev/null
+++ b/services/src/main/java/org/keycloak/services/resources/JsResource.java
@@ -0,0 +1,27 @@
+package org.keycloak.services.resources;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
+import java.io.InputStream;
+
+/**
+ * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
+ */
+@Path("/js")
+public class JsResource {
+
+ @GET
+ @Path("/keycloak.js")
+ @Produces("text/javascript")
+ public Response getJs() {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("keycloak.js");
+ if (inputStream != null) {
+ return Response.ok(inputStream).build();
+ } else {
+ return Response.status(Response.Status.NOT_FOUND).build();
+ }
+ }
+
+}
diff --git a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
index 7f49ff5..7c8371b 100755
--- a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
+++ b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
@@ -78,7 +78,10 @@ public class KeycloakApplication extends Application {
singletons.add(new SocialResource(tokenManager, socialRequestManager));
classes.add(SkeletonKeyContextResolver.class);
classes.add(QRCodeResource.class);
+ classes.add(AdminResource.class);
classes.add(ThemeResource.class);
+ classes.add(JsResource.class);
+ classes.add(WelcomeResource.class);
setupDefaultRealm(context.getContextPath());
diff --git a/services/src/main/java/org/keycloak/services/resources/QRCodeResource.java b/services/src/main/java/org/keycloak/services/resources/QRCodeResource.java
index 3ae4b67..b219613 100755
--- a/services/src/main/java/org/keycloak/services/resources/QRCodeResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/QRCodeResource.java
@@ -20,7 +20,7 @@ import java.io.OutputStream;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
-@Path("/qrcode")
+@Path("/rest/qrcode")
public class QRCodeResource {
@GET
diff --git a/services/src/main/java/org/keycloak/services/resources/RealmsResource.java b/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
index 0b8126c..daa8762 100755
--- a/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
@@ -28,7 +28,7 @@ import javax.ws.rs.core.UriInfo;
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
-@Path("/realms")
+@Path("/rest/realms")
public class RealmsResource {
protected static Logger logger = Logger.getLogger(RealmsResource.class);
diff --git a/services/src/main/java/org/keycloak/services/resources/SocialResource.java b/services/src/main/java/org/keycloak/services/resources/SocialResource.java
index b59a28c..683a399 100755
--- a/services/src/main/java/org/keycloak/services/resources/SocialResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/SocialResource.java
@@ -76,7 +76,7 @@ import java.util.Map.Entry;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
-@Path("/social")
+@Path("/rest/social")
public class SocialResource {
protected static Logger logger = Logger.getLogger(SocialResource.class);
diff --git a/services/src/main/java/org/keycloak/services/resources/ThemeResource.java b/services/src/main/java/org/keycloak/services/resources/ThemeResource.java
index 4d06466..8a2df04 100755
--- a/services/src/main/java/org/keycloak/services/resources/ThemeResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/ThemeResource.java
@@ -16,7 +16,7 @@ import java.io.InputStream;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
-@Path("/theme")
+@Path("/rest/theme")
public class ThemeResource {
private static final Logger logger = Logger.getLogger(ThemeResource.class);
diff --git a/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java b/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java
new file mode 100644
index 0000000..6df21f2
--- /dev/null
+++ b/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java
@@ -0,0 +1,46 @@
+package org.keycloak.services.resources;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+/**
+ * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
+ */
+@Path("/")
+public class WelcomeResource {
+
+ @Context
+ private UriInfo uriInfo;
+
+ @GET
+ @Produces("text/html")
+ public Response getWelcomePage() throws URISyntaxException {
+ String requestUri = uriInfo.getRequestUri().toString();
+ if (!requestUri.endsWith("/")) {
+ return Response.seeOther(new URI(requestUri + "/")).build();
+ } else {
+ return getResource("index.html");
+ }
+ }
+
+ @GET
+ @Path("/welcome-content/{name}")
+ @Produces("text/html")
+ public Response getResource(@PathParam("name") String name) {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("welcome-content/" + name);
+ if (inputStream != null) {
+ return Response.ok(inputStream).build();
+ } else {
+ return Response.status(Response.Status.NOT_FOUND).build();
+ }
+ }
+
+}
diff --git a/services/src/main/resources/META-INF/mime.types b/services/src/main/resources/META-INF/mime.types
index 432f4c8..1f77e9d 100644
--- a/services/src/main/resources/META-INF/mime.types
+++ b/services/src/main/resources/META-INF/mime.types
@@ -1 +1,4 @@
-text/css css CSS
\ No newline at end of file
+text/css css CSS
+text/javascript js JS
+text/javascript js JS
+image/svg+xml svg SVG
\ No newline at end of file
diff --git a/services/src/main/resources/welcome-content/favicon.ico b/services/src/main/resources/welcome-content/favicon.ico
new file mode 100644
index 0000000..b30dce5
Binary files /dev/null and b/services/src/main/resources/welcome-content/favicon.ico differ
testsuite/integration/pom.xml 5(+0 -5)
diff --git a/testsuite/integration/pom.xml b/testsuite/integration/pom.xml
index f2d9eb0..28fc5cb 100755
--- a/testsuite/integration/pom.xml
+++ b/testsuite/integration/pom.xml
@@ -87,11 +87,6 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
- <artifactId>keycloak-admin-ui</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.keycloak</groupId>
<artifactId>keycloak-audit-api</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java b/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
index 167bdd6..e8c4029 100755
--- a/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
+++ b/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
@@ -23,42 +23,32 @@ package org.keycloak.testutils;
import io.undertow.Undertow;
import io.undertow.Undertow.Builder;
-import io.undertow.server.handlers.resource.FileResource;
-import io.undertow.server.handlers.resource.FileResourceManager;
-import io.undertow.server.handlers.resource.Resource;
-import io.undertow.server.handlers.resource.ResourceChangeListener;
-import io.undertow.server.handlers.resource.ResourceManager;
-import io.undertow.server.handlers.resource.URLResource;
import io.undertow.servlet.Servlets;
import io.undertow.servlet.api.DefaultServletConfig;
import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.FilterInfo;
-import io.undertow.servlet.api.ServletInfo;
import org.jboss.resteasy.logging.Logger;
import org.jboss.resteasy.plugins.server.undertow.UndertowJaxrsServer;
import org.jboss.resteasy.spi.ResteasyDeployment;
import org.keycloak.models.Config;
-import org.keycloak.provider.ProviderSessionFactory;
-import org.keycloak.services.filters.ClientConnectionFilter;
-import org.keycloak.theme.DefaultLoginThemeProvider;
-import org.keycloak.services.tmp.TmpAdminRedirectServlet;
-import org.keycloak.util.JsonSerialization;
-import org.keycloak.models.Constants;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
+import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.representations.idm.RealmRepresentation;
+import org.keycloak.services.filters.ClientConnectionFilter;
import org.keycloak.services.filters.KeycloakSessionServletFilter;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.services.resources.KeycloakApplication;
+import org.keycloak.theme.DefaultKeycloakThemeProvider;
+import org.keycloak.util.JsonSerialization;
import javax.servlet.DispatcherType;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.net.URL;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@@ -135,12 +125,12 @@ public class KeycloakServer {
}
File dir = new File(resources).getAbsoluteFile();
- if (!dir.isDirectory() || !new File(dir, "admin-ui").isDirectory()) {
+ if (!dir.isDirectory() || !new File(dir, "forms").isDirectory()) {
throw new RuntimeException("Invalid resources directory");
}
if (Config.getThemeDir() == null) {
- System.setProperty(DefaultLoginThemeProvider.class.getName() + ".disabled", "");
+ System.setProperty(DefaultKeycloakThemeProvider.class.getName() + ".disabled", "");
Config.setThemeDir(file(dir.getAbsolutePath(), "forms", "common-themes", "src", "main", "resources", "theme").getAbsolutePath());
}
@@ -258,26 +248,21 @@ public class KeycloakServer {
server = new UndertowJaxrsServer().start(builder);
- DeploymentInfo di = server.undertowDeployment(deployment, "rest");
+ DeploymentInfo di = server.undertowDeployment(deployment, "");
di.setClassLoader(getClass().getClassLoader());
di.setContextPath("/auth");
di.setDeploymentName("Keycloak");
- di.setResourceManager(new KeycloakResourceManager(config.getResourcesHome()));
di.setDefaultServletConfig(new DefaultServletConfig(true));
- di.addWelcomePage("index.html");
+ di.addWelcomePage("welcome-content/index.html");
FilterInfo filter = Servlets.filter("SessionFilter", KeycloakSessionServletFilter.class);
di.addFilter(filter);
- di.addFilterUrlMapping("SessionFilter", "/rest/*", DispatcherType.REQUEST);
+ di.addFilterUrlMapping("SessionFilter", "/*", DispatcherType.REQUEST);
FilterInfo connectionFilter = Servlets.filter("ClientConnectionFilter", ClientConnectionFilter.class);
di.addFilter(connectionFilter);
- di.addFilterUrlMapping("ClientConnectionFilter", "/rest/*", DispatcherType.REQUEST);
-
- ServletInfo tmpAdminRedirectServlet = Servlets.servlet("TmpAdminRedirectServlet", TmpAdminRedirectServlet.class);
- tmpAdminRedirectServlet.addMappings("/admin", "/admin/");
- di.addServlet(tmpAdminRedirectServlet);
+ di.addFilterUrlMapping("ClientConnectionFilter", "/*", DispatcherType.REQUEST);
server.deploy(di);
@@ -310,52 +295,6 @@ public class KeycloakServer {
info("Stopped Keycloak");
}
- public static class KeycloakResourceManager implements ResourceManager {
-
- private String resourcesHome;
-
- public KeycloakResourceManager(String resourcesHome) {
- this.resourcesHome = resourcesHome;
- }
-
- @Override
- public Resource getResource(String path) throws IOException {
- if (resourcesHome == null) {
- String realPath = "META-INF/resources" + path;
- URL url = getClass().getClassLoader().getResource(realPath);
- return new URLResource(url, url.openConnection(), path);
- } else {
- File file;
- if (path.startsWith("/admin/")) {
- file = file(resourcesHome, "admin-ui", "src", "main", "resources", "META-INF", "resources", path.replace('/', File.separatorChar));
- } else if (path.startsWith("/js/")) {
- file = file(resourcesHome, "integration", "js", "src", "main", "resources", "META-INF", "resources", path.replace('/', File.separatorChar));
- } else {
- throw new IOException("Unknown resource " + path);
- }
- return new FileResource(file, new FileResourceManager(file.getParentFile(), 1), path);
- }
- }
-
- @Override
- public boolean isResourceChangeListenerSupported() {
- return false;
- }
-
- @Override
- public void registerResourceChangeListener(ResourceChangeListener listener) {
- }
-
- @Override
- public void removeResourceChangeListener(ResourceChangeListener listener) {
- }
-
- @Override
- public void close() throws IOException {
- }
-
- }
-
private static File file(String... path) {
StringBuilder s = new StringBuilder();
for (String p : path) {