update keycloak and add custom account console attributes modification demo
This commit is contained in:
parent
6b874b4f44
commit
9d816c5f60
9 changed files with 142 additions and 5 deletions
|
@ -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
|
||||
|
|
|
@ -947,6 +947,7 @@
|
|||
"strictTransportSecurity": "max-age=31536000; includeSubDomains"
|
||||
},
|
||||
"smtpServer": {},
|
||||
"accountTheme": "custom",
|
||||
"eventsEnabled": false,
|
||||
"eventsListeners": [
|
||||
"api-key-registration-generation",
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"themes": [
|
||||
{
|
||||
"name" : "custom",
|
||||
"types": ["account"]
|
||||
}
|
||||
]
|
||||
}
|
90
api-key-module/src/main/resources/theme/custom/account/account.ftl
Executable file
90
api-key-module/src/main/resources/theme/custom/account/account.ftl
Executable 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>
|
|
@ -0,0 +1 @@
|
|||
parent=keycloak
|
|
@ -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:
|
||||
|
|
5
pom.xml
5
pom.xml
|
@ -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>
|
||||
|
|
Loading…
Add table
Reference in a new issue