markocupic / contao-oauth2-client
Contao OAuth2 Client
Installs: 309
Dependents: 2
Suggesters: 0
Security: 0
Stars: 4
Watchers: 1
Forks: 1
Open Issues: 0
Type:contao-bundle
pkg:composer/markocupic/contao-oauth2-client
Requires
- php: ^8.2
- contao/core-bundle: ^5.3
- league/oauth2-client: ^2.7
- markocupic/contao-twig-assets: ^1.1
- symfony/asset: ^6.4 || ^7.0
- symfony/config: ^6.4 || ^7.0
- symfony/dependency-injection: ^6.4 || ^7.0
- symfony/http-foundation: ^6.4 || ^7.0
- symfony/http-kernel: ^6.4 || ^7.0
- symfony/security-core: ^6.4 || ^7.0
- symfony/security-http: ^6.4 || ^7.0
Requires (Dev)
- contao/easy-coding-standard: ^5.4
- contao/manager-plugin: ^2.12
README
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-githuban 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
***BackendClientFactoryclass (e.g. GoogleBackendClientFactory) and***FrontendClientFactoryclass (e.g. GoogleFrontendClientFactory). Both classes have to extendMarkocupic\ContaoOAuth2Client\OAuth2\Client\AbstractClientFactory. - As client name you should choose something like this:
github_frontendorgoogle_backend. Use only letters and the underscore. - Create your button generator class
ButtonGeneratorthat has to implementMarkocupic\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 implementMarkocupic\ContaoOAuth2Client\OAuth2\Token\TokenHandlerInterface. - Create your
ExtensionandConfigurationclass in thesrc/DependencyInjectionfolder. - Create your button and store it in the templates/backend directory of your bundle.
- Create the frontend template
mod_login_***.html.twigthat extends@MarkocupicContaoOAuth2Client/frontend/modules/_mod_login_oauth2_base.html.twigand store it undercontao\templates\modules\mod_login_***.html.twig. - Create the login button component and store it in under
templates\component\_login_button.htl.twig.
