From 2c8da2da4b48ea081644deb7fc11931aba55ba8f Mon Sep 17 00:00:00 2001 From: Hiroyuki Wada Date: Fri, 11 Aug 2023 15:05:56 +0900 Subject: [PATCH] feat: update to keycloak 22.0.1 (support new admin console) (#37) --- .github/workflows/pull_request.yml | 17 +-- .github/workflows/release.yml | 40 +++-- pom.xml | 8 +- .../discord/DiscordIdentityProvider.java | 2 +- .../DiscordIdentityProviderConfig.java | 6 +- .../DiscordIdentityProviderFactory.java | 17 ++- .../discord/DiscordUserAttributeMapper.java | 20 +-- .../messages/admin-messages_en.properties | 7 - .../realm-identity-provider-discord-ext.html | 7 - .../realm-identity-provider-discord.html | 144 ------------------ 10 files changed, 57 insertions(+), 211 deletions(-) delete mode 100755 src/main/resources/theme-resources/messages/admin-messages_en.properties delete mode 100755 src/main/resources/theme-resources/resources/partials/realm-identity-provider-discord-ext.html delete mode 100755 src/main/resources/theme-resources/resources/partials/realm-identity-provider-discord.html diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 11271fa..9a54f17 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -7,18 +7,13 @@ jobs: name: Build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: - java-version: 1.8 - - name: Cache for maven - uses: actions/cache@v1 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- + distribution: 'temurin' + java-version: '17' + cache: 'maven' - name: Build with Maven run: mvn -B package diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b5d1edc..1e98470 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,33 +11,27 @@ jobs: runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[ci skip]')" steps: - - uses: actions/checkout@v1 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: - java-version: 1.8 - - name: Setup node 10 - uses: actions/setup-node@v1 + distribution: 'temurin' + java-version: '17' + cache: 'maven' + - name: Setup node + uses: actions/setup-node@v3 with: - node-version: '10.x' - - name: Cache for maven - uses: actions/cache@v1 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - - name: Cache for npm - uses: actions/cache@v1 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('.github/workflows/release.yml') }} - restore-keys: | - ${{ runner.os }}-node- + node-version: '16' + cache: 'yarn' - name: Setup semantic-release - run: npm install -g @conveyal/maven-semantic-release@v4.5.0 semantic-release@15 @semantic-release/exec@v3.3.8 + run: | + yarn global add @conveyal/maven-semantic-release@v4.5.0 semantic-release@15 + echo "$(yarn global bin)" >> $GITHUB_PATH - name: Release - run: semantic-release --branch master --use-conveyal-workflow --skip-maven-deploy + # maven-semantic-release requires "maven-settings.xml" in the workspace directory + run: | + mv ~/.m2/settings.xml maven-settings.xml + semantic-release --branch master --use-conveyal-workflow --skip-maven-deploy env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/pom.xml b/pom.xml index 0bcc03a..06a85b4 100755 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ jar - 17.0.0 + 22.0.1 @@ -46,10 +46,10 @@ org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.11.0 - 1.8 - 1.8 + 17 + 17 diff --git a/src/main/java/org/keycloak/social/discord/DiscordIdentityProvider.java b/src/main/java/org/keycloak/social/discord/DiscordIdentityProvider.java index 10f183e..8aa6fbc 100755 --- a/src/main/java/org/keycloak/social/discord/DiscordIdentityProvider.java +++ b/src/main/java/org/keycloak/social/discord/DiscordIdentityProvider.java @@ -18,6 +18,7 @@ package org.keycloak.social.discord; import com.fasterxml.jackson.databind.JsonNode; +import jakarta.ws.rs.core.Response; import org.jboss.logging.Logger; import org.keycloak.broker.oidc.AbstractOAuth2IdentityProvider; import org.keycloak.broker.oidc.mappers.AbstractJsonUserAttributeMapper; @@ -30,7 +31,6 @@ import org.keycloak.models.KeycloakSession; import org.keycloak.services.ErrorPageException; import org.keycloak.services.messages.Messages; -import javax.ws.rs.core.Response; import java.util.Set; /** diff --git a/src/main/java/org/keycloak/social/discord/DiscordIdentityProviderConfig.java b/src/main/java/org/keycloak/social/discord/DiscordIdentityProviderConfig.java index 2df21f2..099a989 100755 --- a/src/main/java/org/keycloak/social/discord/DiscordIdentityProviderConfig.java +++ b/src/main/java/org/keycloak/social/discord/DiscordIdentityProviderConfig.java @@ -17,14 +17,14 @@ package org.keycloak.social.discord; +import org.keycloak.broker.oidc.OAuth2IdentityProviderConfig; +import org.keycloak.models.IdentityProviderModel; + import java.util.Arrays; import java.util.Collections; import java.util.Set; import java.util.stream.Collectors; -import org.keycloak.broker.oidc.OAuth2IdentityProviderConfig; -import org.keycloak.models.IdentityProviderModel; - /** * @author Hiroyuki Wada */ diff --git a/src/main/java/org/keycloak/social/discord/DiscordIdentityProviderFactory.java b/src/main/java/org/keycloak/social/discord/DiscordIdentityProviderFactory.java index 1e9cfd3..d441458 100755 --- a/src/main/java/org/keycloak/social/discord/DiscordIdentityProviderFactory.java +++ b/src/main/java/org/keycloak/social/discord/DiscordIdentityProviderFactory.java @@ -17,11 +17,14 @@ package org.keycloak.social.discord; -import org.keycloak.broker.oidc.OAuth2IdentityProviderConfig; import org.keycloak.broker.provider.AbstractIdentityProviderFactory; import org.keycloak.broker.social.SocialIdentityProviderFactory; import org.keycloak.models.IdentityProviderModel; import org.keycloak.models.KeycloakSession; +import org.keycloak.provider.ProviderConfigProperty; +import org.keycloak.provider.ProviderConfigurationBuilder; + +import java.util.List; /** * @author Hiroyuki Wada @@ -46,6 +49,18 @@ public class DiscordIdentityProviderFactory extends AbstractIdentityProviderFact return new DiscordIdentityProviderConfig(); } + @Override + public List getConfigProperties() { + return ProviderConfigurationBuilder.create() + .property() + .name("allowedGuilds") + .type(ProviderConfigProperty.STRING_TYPE) + .label("Guild Id(s) to allow federation") + .helpText("If you want to allow federation for specific guild, enter the guild id. Please use a comma as a separator for multiple guilds.") + .add() + .build(); + } + @Override public String getId() { return PROVIDER_ID; diff --git a/src/main/java/org/keycloak/social/discord/DiscordUserAttributeMapper.java b/src/main/java/org/keycloak/social/discord/DiscordUserAttributeMapper.java index 2fc3cfc..12e4fdc 100644 --- a/src/main/java/org/keycloak/social/discord/DiscordUserAttributeMapper.java +++ b/src/main/java/org/keycloak/social/discord/DiscordUserAttributeMapper.java @@ -21,21 +21,21 @@ import org.keycloak.broker.oidc.mappers.AbstractJsonUserAttributeMapper; /** * User attribute mapper. - * + * * @author dannyAAM */ public class DiscordUserAttributeMapper extends AbstractJsonUserAttributeMapper { - private static final String[] cp = new String[] { DiscordIdentityProviderFactory.PROVIDER_ID }; + private static final String[] cp = new String[]{DiscordIdentityProviderFactory.PROVIDER_ID}; - @Override - public String[] getCompatibleProviders() { - return cp; - } + @Override + public String[] getCompatibleProviders() { + return cp; + } - @Override - public String getId() { - return "discord-user-attribute-mapper"; - } + @Override + public String getId() { + return "discord-user-attribute-mapper"; + } } diff --git a/src/main/resources/theme-resources/messages/admin-messages_en.properties b/src/main/resources/theme-resources/messages/admin-messages_en.properties deleted file mode 100755 index 8b39257..0000000 --- a/src/main/resources/theme-resources/messages/admin-messages_en.properties +++ /dev/null @@ -1,7 +0,0 @@ -discord-client-id=Client Id -discord-client-secret=Client Secret -discord-allowed-guilds=Guild Id(s) to allow federation -discord.client-id.tooltip=Client Id for the application you created in your discord developer portal. -discord.client-secret.tooltip=Client Secret for the application that you created in your discord developer portal. -discord.allowed-guilds.tooltip=If you want to allow federation for specific guild, enter the guild id. Please use a comma as a separator for multiple guilds. -discord.default-scopes.tooltip=The scopes to be sent when asking for authorization. See discord OAuth2 documentation for possible values. If you do not specify anything, scope defaults to 'identify email' In addition, plus 'guilds' if you enter guild id(s) to allow federation. \ No newline at end of file diff --git a/src/main/resources/theme-resources/resources/partials/realm-identity-provider-discord-ext.html b/src/main/resources/theme-resources/resources/partials/realm-identity-provider-discord-ext.html deleted file mode 100755 index 320fa2c..0000000 --- a/src/main/resources/theme-resources/resources/partials/realm-identity-provider-discord-ext.html +++ /dev/null @@ -1,7 +0,0 @@ -
- -
- -
- {{:: 'discord.allowed-guilds.tooltip' | translate}} -
\ No newline at end of file diff --git a/src/main/resources/theme-resources/resources/partials/realm-identity-provider-discord.html b/src/main/resources/theme-resources/resources/partials/realm-identity-provider-discord.html deleted file mode 100755 index 75b4a7c..0000000 --- a/src/main/resources/theme-resources/resources/partials/realm-identity-provider-discord.html +++ /dev/null @@ -1,144 +0,0 @@ -
- - - - -
-
-
- -
- -
- {{:: 'redirect-uri.tooltip' | translate}} -
-
-
-
- -
- -
- {{:: 'discord.client-id.tooltip' | translate}} -
-
- -
- -
- {{:: 'discord.client-secret.tooltip' | translate}} -
-
-
- -
- -
- {{:: 'discord.default-scopes.tooltip' | translate}} -
-
- -
- -
- {{:: 'identity-provider.store-tokens.tooltip' | translate}} -
-
- -
- -
- {{:: 'identity-provider.stored-tokens-readable.tooltip' | translate}} -
-
- -
- -
- {{:: 'identity-provider.enabled.tooltip' | translate}} -
-
- -
- -
- {{:: 'trust-email.tooltip' | translate}} -
-
- -
- -
- {{:: 'link-only.tooltip' | translate}} -
-
- -
- -
- {{:: 'hide-on-login-page.tooltip' | translate}} -
-
- -
- -
- {{:: 'gui-order.tooltip' | translate}} -
-
- -
-
- -
-
- {{:: 'first-broker-login-flow.tooltip' | translate}} -
-
- -
-
- -
-
- {{:: 'post-broker-login-flow.tooltip' | translate}} -
-
- -
-
- -
-
- {{:: 'prompt.tooltip' | translate}} -
- -
- -
-
- - -
-
-
-
- -