diff --git a/.gitignore b/.gitignore index 1c1e039..d674991 100644 --- a/.gitignore +++ b/.gitignore @@ -1,108 +1,108 @@ -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -### Intellij ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -.idea - -# User-specific stuff -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/**/usage.statistics.xml -.idea/**/dictionaries -.idea/**/shelf - -# Generated files -.idea/**/contentModel.xml - -# Sensitive or high-churn files -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml -.idea/**/dbnavigator.xml - -# Gradle -.idea/**/gradle.xml -.idea/**/libraries - -# Gradle and Maven with auto-import -# When using Gradle or Maven with auto-import, you should exclude module files, -# since they will be recreated, and may cause churn. Uncomment if using -# auto-import. -.idea/modules.xml -.idea/*.iml -.idea/modules - -# CMake -cmake-build-*/ - -# Mongo Explorer plugin -.idea/**/mongoSettings.xml - -# File-based project format -*.iws - -# IntelliJ -out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -# Editor-based Rest Client -.idea/httpRequests - -# Android studio 3.1+ serialized cache file -.idea/caches/build_file_checksums.ser - -# JetBrains templates -**___jb_tmp___ - -*.iml -modules.xml -.idea/misc.xml -*.ipr - -# Sonarlint plugin -.idea/sonarlint - -target - +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +.idea + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +.idea/modules.xml +.idea/*.iml +.idea/modules + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +# JetBrains templates +**___jb_tmp___ + +*.iml +modules.xml +.idea/misc.xml +*.ipr + +# Sonarlint plugin +.idea/sonarlint + +target + pom.xml.releaseBackup \ No newline at end of file diff --git a/LICENSE b/LICENSE index f49a4e1..753842b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,201 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md index fe59352..9e59033 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,18 @@ -# keycloak-trackmania -Extension for keycloak to support authentication through Trackmania API - -### Install -Download the JAR file from releases in GitHub, add the JAR file to `$KEYCLOAK_HOME/standalone/deployments`. -At the next startup, Trackmania will be added as a Identity Provider. - -### Create JAR file manually -Run `mvn package` - -### Release the maven package to GitHub -From the terminal, run `mvn release:prepare release:perform`. - -### License -This project is underlaid the Apache-2.0 License - -### Support -Got any questions related to the use of this extension for Keycloak? Ask us on our [Discord](https://discord.gg/evotm). +# keycloak-trackmania +Extension for keycloak to support authentication through Trackmania API + +### Install +Download the JAR file from releases in GitHub, add the JAR file to `$KEYCLOAK_HOME/standalone/deployments`. +At the next startup, Trackmania will be added as a Identity Provider. + +### Create JAR file manually +Run `mvn package` + +### Release the maven package to GitHub +From the terminal, run `mvn release:prepare release:perform`. + +### License +This project is underlaid the Apache-2.0 License + +### Support +Got any questions related to the use of this extension for Keycloak? Ask us on our [Discord](https://discord.gg/evotm). diff --git a/pom.xml b/pom.xml index 3774384..f9df4ee 100644 --- a/pom.xml +++ b/pom.xml @@ -1,100 +1,106 @@ - - - 4.0.0 - - Keycloak Trackmania - - - org.keycloak.extensions - keycloak-trackmania - jar - 1.0.2-SNAPSHOT - - - UTF-8 - 25.0.4 - - - - git@github.com:EvoTM/keycloak-trackmania.git - scm:git:${project.scm.url} - scm:git:${project.scm.url} - HEAD - - - - src/main/java - - - org.apache.maven.plugins - maven-jar-plugin - 3.2.1 - - - - - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 11 - 11 - -Xlint:unchecked - -Xlint:deprecation - false - - - - org.apache.maven.plugins - maven-release-plugin - 2.5.3 - - [ci skip] - - scm:git:${project.scm.url}/tags - - - - - - - - - github - GitHub Packages - https://maven.pkg.github.com/EvoTM/keycloak-trackmania - - - - - - org.keycloak - keycloak-server-spi - ${keycloak.version} - provided - - - org.keycloak - keycloak-server-spi-private - ${keycloak.version} - provided - - - org.keycloak - keycloak-services - ${keycloak.version} - provided - - - - + + + 4.0.0 + + Keycloak Trackmania + + + org.keycloak.extensions + keycloak-trackmania + jar + 1.0.2-SNAPSHOT + + + UTF-8 + 26.0.1 + + + + git@github.com:EvoEsports/keycloak-trackmania.git + scm:git:${project.scm.url} + scm:git:${project.scm.url} + HEAD + + + + src/main/java + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.1 + + + + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 17 + 17 + -Xlint:unchecked + -Xlint:deprecation + false + + + + org.apache.maven.plugins + maven-release-plugin + 2.5.3 + + [ci skip] + + scm:git:${project.scm.url}/tags + + + + + + + + + github + GitHub Packages + https://maven.pkg.github.com/EvoTM/keycloak-trackmania + + + + + + org.keycloak + keycloak-core + provided + ${version.keycloak} + + + org.keycloak + keycloak-server-spi + provided + ${version.keycloak} + + + org.keycloak + keycloak-server-spi-private + provided + ${version.keycloak} + + + org.keycloak + keycloak-services + provided + ${version.keycloak} + + + + \ No newline at end of file diff --git a/src/main/java/org/keycloak/social/trackmania/TrackmaniaIdentityProvider.java b/src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaIdentityProvider.java similarity index 95% rename from src/main/java/org/keycloak/social/trackmania/TrackmaniaIdentityProvider.java rename to src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaIdentityProvider.java index 5d9cedf..c93ee3b 100644 --- a/src/main/java/org/keycloak/social/trackmania/TrackmaniaIdentityProvider.java +++ b/src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaIdentityProvider.java @@ -1,56 +1,56 @@ -package org.keycloak.social.trackmania; - -import com.fasterxml.jackson.databind.JsonNode; -import org.keycloak.broker.oidc.AbstractOAuth2IdentityProvider; -import org.keycloak.broker.oidc.mappers.AbstractJsonUserAttributeMapper; -import org.keycloak.broker.provider.BrokeredIdentityContext; -import org.keycloak.broker.provider.IdentityBrokerException; -import org.keycloak.broker.provider.util.SimpleHttp; -import org.keycloak.broker.social.SocialIdentityProvider; -import org.keycloak.events.EventBuilder; -import org.keycloak.models.KeycloakSession; - -public class TrackmaniaIdentityProvider extends AbstractOAuth2IdentityProvider - implements SocialIdentityProvider { - - public static final String AUTH_URL = "https://api.trackmania.com/oauth/authorize"; - public static final String TOKEN_URL = "https://api.trackmania.com/api/access_token"; - public static final String PROFILE_URL = "https://api.trackmania.com/api/user"; - public static final String DEFAULT_SCOPE = ""; - - public TrackmaniaIdentityProvider(KeycloakSession session, TrackmaniaIdentityProviderConfig config) { - super(session, config); - config.setAuthorizationUrl(AUTH_URL); - config.setTokenUrl(TOKEN_URL); - config.setUserInfoUrl(PROFILE_URL); - } - - @Override - protected BrokeredIdentityContext extractIdentityFromProfile(EventBuilder event, JsonNode profile) { - BrokeredIdentityContext user = new BrokeredIdentityContext(getJsonProperty(profile, "account_id"), getConfig()); - - user.setUsername(getJsonProperty(profile, "display_name")); - user.setIdp(this); - - AbstractJsonUserAttributeMapper.storeUserProfileForMapper(user, profile, getConfig().getAlias()); - - return user; - } - - @Override - protected BrokeredIdentityContext doGetFederatedIdentity(String accessToken) { - JsonNode profile = null; - try { - profile = SimpleHttp.doGet(PROFILE_URL, session).header("Authorization", "Bearer " + accessToken).asJson(); - } catch (Exception e) { - throw new IdentityBrokerException("Could not obtain user profile from Trackmania.", e); - } - - return extractIdentityFromProfile(null, profile); - } - - @Override - protected String getDefaultScopes() { - return DEFAULT_SCOPE; - } -} +package org.keycloak.extensions.keycloak.trackmania; + +import com.fasterxml.jackson.databind.JsonNode; +import org.keycloak.broker.oidc.AbstractOAuth2IdentityProvider; +import org.keycloak.broker.oidc.mappers.AbstractJsonUserAttributeMapper; +import org.keycloak.broker.provider.BrokeredIdentityContext; +import org.keycloak.broker.provider.IdentityBrokerException; +import org.keycloak.broker.provider.util.SimpleHttp; +import org.keycloak.broker.social.SocialIdentityProvider; +import org.keycloak.events.EventBuilder; +import org.keycloak.models.KeycloakSession; + +public class TrackmaniaIdentityProvider extends AbstractOAuth2IdentityProvider + implements SocialIdentityProvider { + + public static final String AUTH_URL = "https://api.trackmania.com/oauth/authorize"; + public static final String TOKEN_URL = "https://api.trackmania.com/api/access_token"; + public static final String PROFILE_URL = "https://api.trackmania.com/api/user"; + public static final String DEFAULT_SCOPE = ""; + + public TrackmaniaIdentityProvider(KeycloakSession session, TrackmaniaIdentityProviderConfig config) { + super(session, config); + config.setAuthorizationUrl(AUTH_URL); + config.setTokenUrl(TOKEN_URL); + config.setUserInfoUrl(PROFILE_URL); + } + + @Override + protected BrokeredIdentityContext extractIdentityFromProfile(EventBuilder event, JsonNode profile) { + BrokeredIdentityContext user = new BrokeredIdentityContext(getJsonProperty(profile, "account_id"), getConfig()); + + user.setUsername(getJsonProperty(profile, "display_name")); + user.setIdp(this); + + AbstractJsonUserAttributeMapper.storeUserProfileForMapper(user, profile, getConfig().getAlias()); + + return user; + } + + @Override + protected BrokeredIdentityContext doGetFederatedIdentity(String accessToken) { + JsonNode profile = null; + try { + profile = SimpleHttp.doGet(PROFILE_URL, session).header("Authorization", "Bearer " + accessToken).asJson(); + } catch (Exception e) { + throw new IdentityBrokerException("Could not obtain user profile from Trackmania.", e); + } + + return extractIdentityFromProfile(null, profile); + } + + @Override + protected String getDefaultScopes() { + return DEFAULT_SCOPE; + } +} diff --git a/src/main/java/org/keycloak/social/trackmania/TrackmaniaIdentityProviderConfig.java b/src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaIdentityProviderConfig.java similarity index 84% rename from src/main/java/org/keycloak/social/trackmania/TrackmaniaIdentityProviderConfig.java rename to src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaIdentityProviderConfig.java index 5ec4b28..70c8b6b 100644 --- a/src/main/java/org/keycloak/social/trackmania/TrackmaniaIdentityProviderConfig.java +++ b/src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaIdentityProviderConfig.java @@ -1,14 +1,14 @@ -package org.keycloak.social.trackmania; - -import org.keycloak.broker.oidc.OAuth2IdentityProviderConfig; -import org.keycloak.models.IdentityProviderModel; - -public class TrackmaniaIdentityProviderConfig extends OAuth2IdentityProviderConfig { - public TrackmaniaIdentityProviderConfig(IdentityProviderModel model) { - super(model); - } - - public TrackmaniaIdentityProviderConfig() { - } - -} +package org.keycloak.extensions.keycloak.trackmania; + +import org.keycloak.broker.oidc.OAuth2IdentityProviderConfig; +import org.keycloak.models.IdentityProviderModel; + +public class TrackmaniaIdentityProviderConfig extends OAuth2IdentityProviderConfig { + public TrackmaniaIdentityProviderConfig(IdentityProviderModel model) { + super(model); + } + + public TrackmaniaIdentityProviderConfig() { + } + +} diff --git a/src/main/java/org/keycloak/social/trackmania/TrackmaniaIdentityProviderFactory.java b/src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaIdentityProviderFactory.java similarity index 92% rename from src/main/java/org/keycloak/social/trackmania/TrackmaniaIdentityProviderFactory.java rename to src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaIdentityProviderFactory.java index c6f9a56..fbe439c 100644 --- a/src/main/java/org/keycloak/social/trackmania/TrackmaniaIdentityProviderFactory.java +++ b/src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaIdentityProviderFactory.java @@ -1,32 +1,32 @@ -package org.keycloak.social.trackmania; - -import org.keycloak.broker.provider.AbstractIdentityProviderFactory; -import org.keycloak.broker.social.SocialIdentityProviderFactory; -import org.keycloak.models.IdentityProviderModel; -import org.keycloak.models.KeycloakSession; - -public class TrackmaniaIdentityProviderFactory extends AbstractIdentityProviderFactory - implements SocialIdentityProviderFactory { - - public static final String PROVIDER_ID = "trackmania"; - - @Override - public String getName() { - return "Trackmania"; - } - - @Override - public TrackmaniaIdentityProvider create(KeycloakSession session, IdentityProviderModel model) { - return new TrackmaniaIdentityProvider(session, new TrackmaniaIdentityProviderConfig(model)); - } - - @Override - public TrackmaniaIdentityProviderConfig createConfig() { - return new TrackmaniaIdentityProviderConfig(); - } - - @Override - public String getId() { - return PROVIDER_ID; - } -} +package org.keycloak.extensions.keycloak.trackmania; + +import org.keycloak.broker.provider.AbstractIdentityProviderFactory; +import org.keycloak.broker.social.SocialIdentityProviderFactory; +import org.keycloak.models.IdentityProviderModel; +import org.keycloak.models.KeycloakSession; + +public class TrackmaniaIdentityProviderFactory extends AbstractIdentityProviderFactory + implements SocialIdentityProviderFactory { + + public static final String PROVIDER_ID = "trackmania"; + + @Override + public String getName() { + return "Trackmania"; + } + + @Override + public TrackmaniaIdentityProvider create(KeycloakSession session, IdentityProviderModel model) { + return new TrackmaniaIdentityProvider(session, new TrackmaniaIdentityProviderConfig(model)); + } + + @Override + public TrackmaniaIdentityProviderConfig createConfig() { + return new TrackmaniaIdentityProviderConfig(); + } + + @Override + public String getId() { + return PROVIDER_ID; + } +} diff --git a/src/main/java/org/keycloak/social/trackmania/TrackmaniaUserAttributeMapper.java b/src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaUserAttributeMapper.java similarity index 86% rename from src/main/java/org/keycloak/social/trackmania/TrackmaniaUserAttributeMapper.java rename to src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaUserAttributeMapper.java index 4af2c4e..9260c1c 100644 --- a/src/main/java/org/keycloak/social/trackmania/TrackmaniaUserAttributeMapper.java +++ b/src/main/java/org/keycloak/extensions/keycloak/trackmania/TrackmaniaUserAttributeMapper.java @@ -1,19 +1,19 @@ -package org.keycloak.social.trackmania; - -import org.keycloak.broker.oidc.mappers.AbstractJsonUserAttributeMapper; - -public class TrackmaniaUserAttributeMapper extends AbstractJsonUserAttributeMapper { - - private static final String[] cp = new String[] { TrackmaniaIdentityProviderFactory.PROVIDER_ID }; - - @Override - public String[] getCompatibleProviders() { - return cp; - } - - @Override - public String getId() { - return "trackmania-user-attribute-mapper"; - } - -} +package org.keycloak.extensions.keycloak.trackmania; + +import org.keycloak.broker.oidc.mappers.AbstractJsonUserAttributeMapper; + +public class TrackmaniaUserAttributeMapper extends AbstractJsonUserAttributeMapper { + + private static final String[] cp = new String[] { TrackmaniaIdentityProviderFactory.PROVIDER_ID }; + + @Override + public String[] getCompatibleProviders() { + return cp; + } + + @Override + public String getId() { + return "trackmania-user-attribute-mapper"; + } + +} diff --git a/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper b/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper index 5b0f0c2..7b22358 100644 --- a/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper +++ b/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper @@ -1 +1 @@ -org.keycloak.social.trackmania.TrackmaniaUserAttributeMapper \ No newline at end of file +org.keycloak.extensions.keycloak.trackmania.TrackmaniaUserAttributeMapper \ No newline at end of file diff --git a/src/main/resources/META-INF/services/org.keycloak.broker.social.SocialIdentityProviderFactory b/src/main/resources/META-INF/services/org.keycloak.broker.social.SocialIdentityProviderFactory index 01ed8dc..2aa5e37 100644 --- a/src/main/resources/META-INF/services/org.keycloak.broker.social.SocialIdentityProviderFactory +++ b/src/main/resources/META-INF/services/org.keycloak.broker.social.SocialIdentityProviderFactory @@ -1 +1 @@ -org.keycloak.social.trackmania.TrackmaniaIdentityProviderFactory \ No newline at end of file +org.keycloak.extensions.keycloak.trackmania.TrackmaniaIdentityProviderFactory \ No newline at end of file diff --git a/src/main/resources/theme-resources/messages/admin-messages_en.properties b/src/main/resources/theme-resources/messages/admin-messages_en.properties index dda9e23..7e118eb 100644 --- a/src/main/resources/theme-resources/messages/admin-messages_en.properties +++ b/src/main/resources/theme-resources/messages/admin-messages_en.properties @@ -1,5 +1,5 @@ -trackmania-client-id=Client Id -trackmania-client-secret=Client Secret -trackmania.client-id.tooltip=Client Id for the application you created in the trackmania portal. -trackmania.client-secret.tooltip=Client Secret for the application that you created in the trackmania portal. +trackmania-client-id=Client Id +trackmania-client-secret=Client Secret +trackmania.client-id.tooltip=Client Id for the application you created in the trackmania portal. +trackmania.client-secret.tooltip=Client Secret for the application that you created in the trackmania portal. trackmania.default-scopes.tooltip=The scopes to be sent when asking for authorization. See Trackmania OAuth2 documentation for possible values. If you do not specify anything, scope defaults to an empty string. \ No newline at end of file diff --git a/src/main/resources/theme-resources/resources/partials/realm-identity-provider-trackmania.html b/src/main/resources/theme-resources/resources/partials/realm-identity-provider-trackmania.html index 2f7fe1b..5cc6451 100644 --- a/src/main/resources/theme-resources/resources/partials/realm-identity-provider-trackmania.html +++ b/src/main/resources/theme-resources/resources/partials/realm-identity-provider-trackmania.html @@ -1,143 +1,143 @@ -
- - - - -
-
-
- -
- -
- {{:: 'redirect-uri.tooltip' | translate}} -
-
-
-
- -
- -
- {{:: 'trackmania.client-id.tooltip' | translate}} -
-
- -
- -
- {{:: 'trackmania.client-secret.tooltip' | translate}} -
-
- -
- -
- {{:: 'trackmania.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}} -
- -
- -
-
- - -
-
-
-
- - +
+ + + + +
+
+
+ +
+ +
+ {{:: 'redirect-uri.tooltip' | translate}} +
+
+
+
+ +
+ +
+ {{:: 'trackmania.client-id.tooltip' | translate}} +
+
+ +
+ +
+ {{:: 'trackmania.client-secret.tooltip' | translate}} +
+
+ +
+ +
+ {{:: 'trackmania.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}} +
+ +
+ +
+
+ + +
+
+
+
+ +