silasjoisten / sonata-oauth2-login-bundle
Login via Google with Email Validation in a Sonata Project
Installs: 79 286
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 5
Open Issues: 3
Type:symfony-bundle
Requires
- php: ^8.0
- google/apiclient: ^2.1
- hwi/oauth-bundle: ^1.1
- php-http/guzzle6-adapter: ^2.0
- php-http/httplug: ^2.2
- sonata-project/user-bundle: ^4.7|^5.1
- twig/twig: ^3.0
Requires (Dev)
This package is auto-updated.
Last update: 2025-03-28 00:30:07 UTC
README
Installation
composer require silasjoisten/sonata-oauth2-login-bundle
Register the Bundle in app/AppKernel.php:
class AppKernel extends Kernel { public function registerBundles() { // .. new Http\HttplugBundle\HttplugBundle(), new HWI\Bundle\OAuthBundle\HWIOAuthBundle(), new SilasJoisten\Sonata\Oauth2LoginBundle\SonataOauth2LoginBundle(), // .. } // .. }
Configuration
Include the Routing:
SonataOauth2LoginBundle: resource: "@SonataOauth2LoginBundle/Resources/config/routing.xml"
Configure the Bundle:
sonata_oauth2_login: valid_email_domains: ["@your-domain.com"] default_user_roles: ["ROLE_SONATA_ADMIN"] #optional value custom_emails: test@example.com: ["ROLE_SUPER_ADMIN"] test2@example.de: ["ROLE_SONATA_ADMIN"]
You can add as much valid domains as you want
Configure the HWIOauthBundle:
# app/config/security.yml security: providers: hwi: id: sonata_oauth2_login.user.provider #... firewalls: YOUR_FIREWALL: #pattern: /admin(.*) REMOVE THIS LINE IF YOU ARE USING SONATA ADMIN oauth: resource_owners: google: "/login/check-google" login_path: /admin/login # For Sonata Admin use_forward: false default_target_path: /admin/dashboard # For Sonata Admin failure_path: /admin/login # For Sonata Admin oauth_user_provider: service: sonata_oauth2_login.user.provider
# app/config/config.yml hwi_oauth: firewall_names: [YOUR_FIREWALL] resource_owners: google: type: "google" client_id: "YOUR_CLIENT_ID" client_secret: "YOUR_CLIENT_SECRET" scope: "email profile" options: csrf: true access_type: offline
Usage
To use the OAuth2 login you just need to call the Twig function to render the button in your login template like this:
{{ render_login_button() }}
Optional: You can pass an array inside to to set custom class and value