markocupic/contao-oauth2-client

Contao OAuth2 Client

1.1.16 2024-08-18 10:17 UTC

README

Logo Marko Cupic

Contao OAuth2 Client

This extension serves as a base plugin for OAuth2 Login Bundles like contao-github-login or contao-azure-login and contains a backend and frontend authenticator.

demo.mp4

Follow these steps to create your custom oauth2-login plugin.

  • Create a bundle and name it vendorname/contao-***-login
  • In your composer require 'markocupic/contao-oauth2-client', the OAuth base extension league/oauth2-github an e.g. league/oauth2-client. Have a look at knpuniversity/oauth2-client-bundle to find the client library of your choice.
  • Create for your backend and frontend login the ***BackendClientFactory class (e.g. GoogleBackendClientFactory) and ***FrontendClientFactory class (e.g. GoogleFrontendClientFactory). Both classes have to extend Markocupic\ContaoOAuth2Client\OAuth2\Client\AbstractClientFactory.
  • As client name you should choose something like this: github_frontend or google_backend. Use only letters and the underscore.
  • Create your button generator class ButtonGenerator that has to implement Markocupic\ContaoOAuth2Client\ButtonGenerator\ButtonGeneratorInterface.
  • If the Contao user is not identified by the claim email, you have to write your own token handler that has to implement Markocupic\ContaoOAuth2Client\OAuth2\Token\TokenHandlerInterface.
  • Create your Extension and Configuration class in the src/DependencyInjection folder.
  • Create your button and store it in the templates/backend directory of your bundle.
  • Create the frontend template mod_login_***.html.twig that extends @MarkocupicContaoOAuth2Client/frontend/modules/_mod_login_oauth2_base.html.twig and store it under contao\templates\modules\mod_login_***.html.twig.
  • Create the login button component and store it in under templates\component\_login_button.htl.twig.