• Stars
    star
    632
  • Rank 71,124 (Top 2 %)
  • Language
    TypeScript
  • Created almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔏 Create Keycloak themes using React

🔏 Create Keycloak themes using React 🔏

Home - Documentation - Storybook - Starter project

This build tool generates a Keycloak theme Learn more

Whether or not React is your preferred framework, Keycloakify offers a solid option for building Keycloak themes. It's not just a convenient way to create a Keycloak theme when using React; it's a well-regarded solution that many developers appreciate.

📣 🛑 Account themes generated by Keycloakify are not currently compatible with Keycloak 22.
We are working on a solution. Follow progress.
Login and email themes are not affected.
UPDATE: The PR that should future proof Keycloakify account themes has been greenlighted by the Keycloak team. Resolution is only a matter of time.

Keycloakify is fully compatible with Keycloak, starting from version 11 and is anticipated to maintain compatibility with all future versions.
You can update your Keycloak, your Keycloakify generated theme won't break.
To understand the basis of my confidence in this, you can visit this discussion thread where I've explained in detail.

Sponsor 👼

We are exclusively sponsored by Cloud IAM, a French company offering Keycloak as a service.
Their dedicated support helps us continue the development and maintenance of this project.

Cloud IAM provides the following services:

  • Simplify and secure your Keycloak Identity and Access Management. Keycloak as a Service.
  • Custom theme building for your brand using Keycloakify.

Logo Dark

Logo Light

Checkout Cloud IAM and use promo code keycloakify5
5% of your annual subscription will be donated to us, and you'll get 5% off too.

Thank you, Cloud IAM, for your support!

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Waldemar Reusch
Waldemar Reusch

💻
William Will
William Will

💻
Bystrova Ann
Bystrova Ann

💻
Michael Kreuzmayr
Michael Kreuzmayr

💻
Mary
Mary

💻
German Öö
German Öö

💻
Julien Bouquillon
Julien Bouquillon

💻
Aidan Gilmore
Aidan Gilmore

💻
Void
Void

💻
juffe
juffe

💻
Lazaros Toumanidis
Lazaros Toumanidis

💻
Marc
Marc

💻
Kasir Barati
Kasir Barati

📖
Alex Oliynyk
Alex Oliynyk

💻
Thomas Silvestre
Thomas Silvestre

💻
satanshiro
satanshiro

💻
Koen Poelhekke
Koen Poelhekke

💻
Sergey Kupletsky
Sergey Kupletsky

⚠️ 💻

Changelog highlights

8.0

  • Much smaller .jar size. 70.2 MB -> 7.8 MB.
    Keycloakify now detects which of the static resources from the default theme are actually used by your theme and only include those in the .jar.
  • Build time: The first build is slowed but the subsequent build are faster. Update your CI so that the cache is persisted across CI build.

Breaking changes

There are very few breaking changes in this major version.

  • The --external-assets build option has been removed it was a performance optimization that is no longer relevant now that we have lazy loading.

  • kcContext.usernameEditDisabled is now kcContext.usernameHidden, the type was lying, it has been updated to reflect what's actually on the kcContext at runtime. If you want to see in detail what should be updated see issue, or you can search and replace usernameEditDisabled -> usernameHidden it'll do the trick.

  • The usePrepareTemplate prototype has been changed, you can search and replace:

src/keycloak-theme/login/Template.tsx

url,
"stylesCommon": [
    "node_modules/patternfly/dist/css/patternfly.min.css",
    "node_modules/patternfly/dist/css/patternfly-additions.min.css",
    "lib/zocial/zocial.css"
],
"styles": ["css/login.css"],

by

"styles": [
    `${url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly.min.css`,
    `${url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly-additions.min.css`,
    `${url.resourcesCommonPath}/lib/zocial/zocial.css`,
    `${url.resourcesPath}/css/login.css`
],

and

src/keycloak-theme/account/Template.css

url,
"stylesCommon": ["node_modules/patternfly/dist/css/patternfly.min.css", "node_modules/patternfly/dist/css/patternfly-additions.min.css"],
"styles": ["css/account.css"],

by

"styles": [
    `${url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly.min.css`,
    `${url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly-additions.min.css`,
    `${url.resourcesPath}/css/account.css`
],

7.15

  • The i18n messages you defines in your theme are now also maid available to Keycloak. In practice this mean that you can now customize the kcContext.message.summary that display a general alert and the values returned by kcContext.messagesPerField.get() that are used to display specific error on some field of the form. See video

7.14

  • Deprecate the extraPages build option. Keycloakify is now able to analyze your code to detect extra pages.

7.13

7.12

  • You can now pack multiple themes variant in a single .jar bundle. In vanilla Keycloak themes you have the ability to extend a base theme. There is now an idiomatic way of achieving the same result. Learn more.

7.9

  • Separate script for copying the default theme static assets to the public directory.
    Theses assets are only needed for testing your theme locally in Storybook or with a mockPageId.
    You are now expected to have a "prepare": "copy-keycloak-resources-to-public", in your package.json scripts.
    This script will create public/keycloak-assets when you run yarn install (If you are using another package manager like pnpm makes sure that "prepare" is actually ran.)
    See the updated starter. public/keycloak-assets shouldn't be tracked by GIT and is automatically ignored.

7.7

7.0 🍾

  • Account theme support 🚀
  • It's much easier to customize pages at the CSS level, you can now see in the browser dev tool the customizable classes.
  • New interactive CLI tool npx eject-keycloak-page, that enables to select the page you want to customize at the component level.
  • There is a Storybook
  • Remember me is fixed

6.13

  • Build work behind corporate proxies, see issue.

6.12

Massive improvement in the developer experience:

6.11.4

  • You no longer need to have Maven installed to build the theme. Thanks to @lordvlad, see PR.
  • Feature new build options: bundler, groupId, artifactId, version.
    Theses options can be user to customize the output name of the .jar. You can use environnement variables to overrides the values read in the package.json. Thanks to @lordvlad.

6.10.0

  • Widows compat (thanks to @lordvlad, see PR). WSL is no longer required 🎉

6.8.4

  • @emotion/react is no longer a peer dependency of Keycloakify.

6.8.0

  • It is now possible to pass a custom <Template /> component as a prop to <KcApp /> and every individual page (<Login />, <RegisterUserProfile />, ...) it enables to customize only the header and footer for example without having to switch to a full-component level customization. See issue.

6.7.0

  • Add support for webauthn-authenticate.ftl thanks to @mstrodl's hacktoberfest PR.

6.6.0

  • Add support for login-password.ftl thanks to @mstrodl's hacktoberfest PR.

6.5.0

  • Add support for login-username.ftl thanks to @mstrodl's hacktoberfest PR.

6.4.0

  • You can now optionally pass a doFetchDefaultThemeResources: boolean prop to every page component and the default <KcApp /> This enables you to prevent the default CSS and JS that comes with the builtin Keycloak theme to be downloaded.
    You'll get a black slate.

6.0.0

  • Bundle size drastically reduced, locals and component dynamically loaded.
  • First print much quicker, use of React.lazy() everywhere.
  • Real i18n API.
  • Actual documentation for build options.

Checkout the migration guide

5.8.0

5.7.0

  • Feat logout-confirm.ftl. PR

5.6.4

Fix login-verify-email.ftl page. Before - After

v5.6.0

Add support for login-config-totp.ftl page #127.

v5.3.0

Rename keycloak_theme_email to keycloak_email.
If you already had a keycloak_theme_email you should rename it keycloak_email.

v5.0.0

Migration guide
New i18n system.
Import of terms and services have changed. See example.

v4.10.0

Add login-idp-link-email.ftl page See PR.

v4.8.0

Email template customization.

v4.7.4

M1 Mac support (for testing locally with a dockerized Keycloak).

v4.7.2

WARNING: This is broken.
Testing with local Keycloak container working with M1 Mac. Thanks to @eduardosanzb.
Be aware: When running M1s you are testing with Keycloak v15 else the local container spun will be a Keycloak v16.1.0.

v4.7.0

Register with user profile enabled: Out of the box options validator support.
Example

v4.6.0

tss-react and powerhooks are no longer peer dependencies of keycloakify. After updating Keycloakify you can remove tss-react and powerhooks from your dependencies if you don't use them explicitly.

v4.5.3

There is a new recommended way to setup highly customized theme. See here.
Unlike with the previous recommended method, with this new method your theme wont break on minor Keycloakify update.

v4.3.0

Feature login-update-password.ftl.
Every time a page is added it's a breaking change for non CSS-only theme.
Change this and this to update.

v4

  • Out of the box frontend form validation 🥳
  • Improvements (and breaking changes in import { useKcMessage } from "keycloakify".

v3

No breaking changes except that @emotion/react, tss-react and powerhooks are now peerDependencies instead of being just dependencies.
It's important to avoid problem when using keycloakify alongside mui and when passing params from the app to the login page.

v2.5

v2

  • It's now possible to implement custom .ftl pages.
  • Support for Keycloak plugins that introduce non standard ftl values. (Like for example this plugin that define authorizedMailDomains in register.ftl).

More Repositories

1

pynsee

pynsee package contains tools to easily search and download french data from INSEE and IGN APIs
Python
69
star
2

onyxia

🔬 A data science oriented container launcher
Shell
69
star
3

utilitR

Source of the utilitR French R documentation
CSS
62
star
4

cartiflette

Projet visant à simplifier la récupération des shapefiles officiels
Jupyter Notebook
49
star
5

onyxia-ui

🌓 Onyxia UI toolkit
TypeScript
34
star
6

onyxia-quarto

Quarto template for Onyxia presentations
SCSS
28
star
7

DoReMIFaSol

Téléchargement des données sur le site de l'Insee
R
26
star
8

s3-operator

A simple operator to dynamically create S3 buckets and policies
Go
24
star
9

images-datascience

Collection of Docker images to build the data science catalog of the Onyxia project
Shell
24
star
10

lockdown-maps-R

Population Movements at Spring 2020 Lockdown in France - Interactive Data Visualizations
R
21
star
11

helm-charts-datascience

A collection of helm (https://helm.sh) charts for datascience. Usable with Onyxia (https://github.com/inseefrlab/onyxia-api).
Mustache
17
star
12

mapvotr

Package de production de contours de bureaux de vote à partir des adresses du REU
R
15
star
13

R-Insee-Data

R
15
star
14

onyxia-api

API for Onyxia Datalab
Java
14
star
15

helm-charts-interactive-services

Collection of helm charts to deploy services from Onyxia's data science catalog
Mustache
14
star
16

inseeLocalData

An R client for the local data Insee's API available at https://api.insee.fr
R
13
star
17

keycloak-hashicorp-vault-ext

Keycloak extension to obtain secrets from HashiCorp Vault
Java
11
star
18

template-shiny-deployment

A helm chart template to deploy a Shiny app on the SSP Cloud.
11
star
19

devoxx-2023

HCL
10
star
20

traitement-adresses-REU

Traitements des adresses du Répertoire Électoral Unique
Jupyter Notebook
10
star
21

ssphub

CSS
10
star
22

exemples-recensement-parquet

Dépôt pour les codes d'exemples d'utilisation des données du recensement au format parquet
Lua
9
star
23

formation-mlops

Une formation d'initiation au MLOps avec MLFlow
Jupyter Notebook
9
star
24

rtauargus

τ-Argus from R
R
9
star
25

pandoc-filter-fr-nbsp

A Pandoc Lua Filter for French documents replacing spaces with no-break spaces
Lua
9
star
26

formation-git

Formation développée à l'Insee pour découvrir Git via RStudio et Gitlab
TeX
8
star
27

apinsee

An R package to manage Insee APIs tokens
R
8
star
28

helm-charts

Collection of helm (https://helm.sh/) charts used at @inseefr
Smarty
7
star
29

marathon-to-kubernetes

A small library to convert marathon JSON to kubernetes YML
Java
7
star
30

sspcloud-init-scripts

Initialization scripts for interactive services
Jupyter Notebook
7
star
31

sspcloud-tutorials

Jupyter Notebook
6
star
32

cloud-scripts

Various scripts to setup DCOS on AWS, GKE ...
HCL
6
star
33

funathon2023

Dépôt centralisant le contenu produit pour le Funathon 2023
CSS
6
star
34

formation-bonnes-pratiques-R

CSS
6
star
35

ESA-Nowcasting-2023

Repository of the Insee team competing for the European Statistics Awards for Nowcasting (https://statistics-awards.eu/)
R
6
star
36

astrovision

The compulsory Python library to work with satellite imagery
Python
6
star
37

k8s-onboarding

A simple onboarding app to welcome new developpers to your Kubernetes cluster
Java
5
star
38

Macronometrics

Toolbox for the simulation of small-medium scale macroeconometric models
Python
5
star
39

predicat

API pour la classification des libellés de caisse
Jupyter Notebook
5
star
40

helm-charts-automation

Mustache
5
star
41

formation-bonnes-pratiques-git-R

Une formation aux bonnes pratiques de développement avec Git et R
R
5
star
42

grandedim

Codes correspondant au document de travail "L'économétrie en grande dimension"
Jupyter Notebook
5
star
43

helm-charts-databases

A collection of helm charts to deploy BDD inside Onyxia Datalab
Mustache
5
star
44

validinsee

Valider certaines données produites par l’Insee avec R
R
5
star
45

formation-r-lissage-spatial

R
4
star
46

utilitr-bonnes-pratiques

4
star
47

rstudio

Dockerfile
4
star
48

AdventOfCodeLeaderboard

Java
4
star
49

formation-webscraping

Dépôt pour formation au webscraping
JavaScript
4
star
50

sspcloud

Issue tracker pour la plateforme sspcloud : https://www.sspcloud.fr/
4
star
51

appariement

Exemples d'appariements de données individuelles et ressources d'auto-formation
Shell
4
star
52

DT-reseaux-neurones

Source code for INSEE Working Paper on use cases of neural networks with Official Statistics
4
star
53

detection-habitat-spontane

Utilisation des données satellites pour identifier l'habitat spontané en Guyane et Mayotte
Jupyter Notebook
4
star
54

Universe-Datascience

A collection of public marathon contracts for datascience. Based on work from https://github.com/mesosphere/universe
Python
4
star
55

vscode-python

A docker image based on https://github.com/cdr/code-server tailored for python programming
Dockerfile
4
star
56

Trevas-Lab-UI

Web UI to play around VTL.
JavaScript
3
star
57

SASTauArgus

Macros SAS macros effectuant des appels au logiciel Tau-Argus de gestion de la confidentialité pour des tableaux de données.
SAS
3
star
58

DoReMIFaSolData

Données associées au package DoReMIFaSol
R
3
star
59

onyxia-onboarding

Onboarding for the Onyxia datalab
Go
3
star
60

DT-tvcoef

DT Utilisation de modèles de régression à coefficients variant dans le temps pour la prévision conjoncturelle
R
3
star
61

www.sspcloud.fr

Source for sspcloud.fr website
TypeScript
3
star
62

Macronometrics-Notebook

Notebooks and models associated with the macronometrics package (https://github.com/inseefrlab/macronometrics)
Python
3
star
63

datacollection-management-api

Java
3
star
64

funathon2023_sujet1

150 ans d'agriculture en France
JavaScript
3
star
65

lunatic-mui

Library of questionnaire components using Material UI
TypeScript
2
star
66

Trevas-Lab

Java API to consume Trevas engine.
Java
2
star
67

utilitr-template

Package R permettant d'encapsuler les modèles de documents pour le projet utilitR
CSS
2
star
68

jupyter-datascience

Docker image based on https://github.com/jupyter/docker-stacks with Spark and Hadoop
Shell
2
star
69

satellite-images-inference

Python
2
star
70

funcamp-r-grimoire

Part of funcampR project, funcamp-r-grimoire is a collection of R tutorials for beginners, with enigmas related to icaRius serious game. Tutorials are orchestrated as learnr and shiny Rmd applications.
R
2
star
71

datacollection-management-ui

JavaScript
2
star
72

fmtsas

Importe dans R les données servant à créer un format SAS
R
2
star
73

utilitr-presentation

CSS
2
star
74

funcamp-r

General presentation of funcamp-r project
2
star
75

tvCoef

Time-varying regression models
R
2
star
76

docs.sspcloud.fr

This is the documentation website for the SSPCloud opensource project.
CSS
2
star
77

edt

TypeScript
2
star
78

DCAT-COG

2
star
79

onyxia-onboarding-operator

An operator for onyxia's onboarding tasks
Go
2
star
80

funathon2024_sujet2

R
2
star
81

TRSwapping

Implémentation d'un Target Record Swapping sur R
C++
2
star
82

docs.onyxia.sh

Documentation GitBook of Onyxia
2
star
83

ESA-Nowcasting-2024

Repository of the Insee team competing for the European Statistics Awards for Nowcasting 2024 (https://statistics-awards.eu/)
R
2
star
84

Trevas-Jupyter

Jupyter notebook providing VTL support through Trevas engine
Java
2
star
85

DT-est-tr-tc

DT Estimation en temps réel de la tendance-cycle : apport de l’utilisation des moyennes mobiles asymétriques
R
2
star
86

dims_reduction_tables_workshop_20231215

Code to reproduce the results of the paper "A way to deal with 5-dimensional table with R and Tau-Argus" presented at a joint Workshop in December, 15 2023 in Paris
R
2
star
87

tabloid

Package R pour faciliter la réalisation de tableaux croisés de statistiques descriptives
R
2
star
88

funathon2024

Dépôt centralisant le contenu produit pour le Funathon 2024
CSS
2
star
89

manuel-protection-tableaux

Manuel décrivant les principes, les méthodes et les outils permettant de protéger des tableaux contre les risques de divulgation d'informations confidentielles et en suivant les règles de diffusion de l'Insee.
HTML
2
star
90

cartiflette-website

Lua
2
star
91

torch-fastText

"""Efficient""" text classification with Pytorch
Python
2
star
92

template-shiny-app

A template to package and dockerize a R Shiny app.
R
2
star
93

llm-open-data-insee

Jupyter Notebook
1
star
94

onyxia-ops

🐙 GitOps repository for managing Onyxia Datalab deployment
1
star
95

funcampR

Projet d'organisation d'une journée ludique d'apprentissage sur R ouverture au système statistique public
HTML
1
star
96

helm-charts-shiny-apps

1
star
97

keycloak-http-storage-provider

keycloak extension to fetch user info from an http api
Java
1
star
98

datacollection-ui

JavaScript
1
star
99

hackathon-ntts-2023

Repository of the French team competing in the European Big Data Hackathon 2023 (satellite event of the Conference on NTTS)
Jupyter Notebook
1
star
100

funathon2023_sujet5

Analyse textuelle des commentaires clients de restaurants
Jupyter Notebook
1
star