update keycloak and add custom account console attributes modification demo

This commit is contained in:
zak905 2021-05-31 16:54:58 +02:00
parent 6b874b4f44
commit 9d816c5f60
9 changed files with 142 additions and 5 deletions

View file

@ -1,12 +1,13 @@
FROM openjdk:11-jre-slim
ENV KEYCLOAK_VERSION 12.0.3
WORKDIR /keycloak
ENV KEYCLOAK_VERSION 12.0.4
RUN apt-get update && apt-get install -y wget && wget https://github.com/keycloak/keycloak/releases/download/${KEYCLOAK_VERSION}/keycloak-${KEYCLOAK_VERSION}.tar.gz
RUN tar xvf keycloak-${KEYCLOAK_VERSION}.tar.gz && rm keycloak-${KEYCLOAK_VERSION}.tar.gz
WORKDIR keycloak-${KEYCLOAK_VERSION}
RUN tar xvf keycloak-${KEYCLOAK_VERSION}.tar.gz --strip-components=1 && rm keycloak-${KEYCLOAK_VERSION}.tar.gz
#add admin user
RUN ./bin/add-user-keycloak.sh -u admin -p admin --realm master

View file

@ -947,6 +947,7 @@
"strictTransportSecurity": "max-age=31536000; includeSubDomains"
},
"smtpServer": {},
"accountTheme": "custom",
"eventsEnabled": false,
"eventsListeners": [
"api-key-registration-generation",

View file

@ -47,4 +47,34 @@
</plugins>
</build>
<profiles>
<profile>
<id>dev</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<modules>
<jarModule>
<groupId>com.gwidgets</groupId>
<artifactId>api-key-module</artifactId>
<includeInApplicationXml>true</includeInApplicationXml>
<bundleFileName>api-key-module.jar</bundleFileName>
<bundleDir>/</bundleDir>
</jarModule>
</modules>
<outputDirectory>
${project.build.directory}/deploy
</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View file

@ -13,7 +13,7 @@
<properties>
<java.version>11</java.version>
<keycloak.version>12.0.3</keycloak.version>
<keycloak.version>12.0.4</keycloak.version>
</properties>
<dependencies>

View file

@ -0,0 +1,8 @@
{
"themes": [
{
"name" : "custom",
"types": ["account"]
}
]
}

View file

@ -0,0 +1,90 @@
<#import "template.ftl" as layout>
<@layout.mainLayout active='account' bodyClass='user'; section>
<div class="row">
<div class="col-md-10">
<h2>${msg("editAccountHtmlTitle")}</h2>
</div>
<div class="col-md-2 subtitle">
<span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
</div>
</div>
<form action="${url.accountUrl}" class="form-horizontal" method="post">
<input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
<#if !realm.registrationEmailAsUsername>
<div class="form-group ${messagesPerField.printIfExists('username','has-error')}">
<div class="col-sm-2 col-md-2">
<label for="username" class="control-label">${msg("username")}</label> <#if realm.editUsernameAllowed><span class="required">*</span></#if>
</div>
<div class="col-sm-10 col-md-10">
<input type="text" class="form-control" id="username" name="username" <#if !realm.editUsernameAllowed>disabled="disabled"</#if> value="${(account.username!'')}"/>
</div>
</div>
</#if>
<div class="form-group ${messagesPerField.printIfExists('email','has-error')}">
<div class="col-sm-2 col-md-2">
<label for="email" class="control-label">${msg("email")}</label> <span class="required">*</span>
</div>
<div class="col-sm-10 col-md-10">
<input type="text" class="form-control" id="email" name="email" autofocus value="${(account.email!'')}"/>
</div>
</div>
<div class="form-group ${messagesPerField.printIfExists('firstName','has-error')}">
<div class="col-sm-2 col-md-2">
<label for="firstName" class="control-label">${msg("firstName")}</label> <span class="required">*</span>
</div>
<div class="col-sm-10 col-md-10">
<input type="text" class="form-control" id="firstName" name="firstName" value="${(account.firstName!'')}"/>
</div>
</div>
<div class="form-group ${messagesPerField.printIfExists('lastName','has-error')}">
<div class="col-sm-2 col-md-2">
<label for="lastName" class="control-label">${msg("lastName")}</label> <span class="required">*</span>
</div>
<div class="col-sm-10 col-md-10">
<input type="text" class="form-control" id="lastName" name="lastName" value="${(account.lastName!'')}"/>
</div>
</div>
<div class="form-group">
<div class="col-sm-2 col-md-2">
<label for="api-key" class="control-label">API KEY</label> <span class="required">*</span>
</div>
<div class="col-sm-10 col-md-10">
<input type="text" class="form-control" readonly id="user.attributes.api-key" name="user.attributes.api\-key" value="${(account.attributes.api\-key!'')}" />
</div>
</div>
<div class="form-group">
<div class="col-sm-2 col-md-2">
<label for="api-key" class="control-label">Custom attribute</label> <span class="required">*</span>
</div>
<div class="col-sm-10 col-md-10">
<input type="text" class="form-control" id="user.attributes.custom" name="user.attributes.custom" value="${(account.attributes.custom!'')}" />
</div>
</div>
<div class="form-group">
<div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
<div class="">
<#if url.referrerURI??><a href="${url.referrerURI}">${kcSanitize(msg("backToApplication")?no_esc)}</a></#if>
<button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Save">${msg("doSave")}</button>
<button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Cancel">${msg("doCancel")}</button>
</div>
</div>
</div>
</form>
</@layout.mainLayout>

View file

@ -0,0 +1 @@
parent=keycloak

View file

@ -7,6 +7,7 @@ services:
command: ["-Dkeycloak.migration.action=import", "-Dkeycloak.migration.provider=dir", "-Dkeycloak.migration.dir=/import", "-Dkeycloak.profile.feature.upload_scripts=enabled", "-Dkeycloak.migration.strategy=OVERWRITE_EXISTING"]
volumes:
- ./api-key-ear/import:/import
- ./api-key-ear/target/deploy:/keycloak/standalone/deployments
ports:
- "8080:8080"
dashboard-service:

View file

@ -4,6 +4,11 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<groupId>com.gwidgets</groupId>