Question

im using SonataAdminBundle to develop my application with Symfony2. For the user login im trying to add google authentication. I configured HWIOAuthBundle as their documentation. everything smoothly configured and running. after google authentication prompt, it redirects to the following URL

http://mydomain.com/login/check-google?code=4/i38GBohe0J5q8PLQPdDjOvqVc_EC.4udVR17DB98cOl05ti8ZT3a9L-sEhAI 

with this URL, there is no any action assign with it so its giving error,

Unable to find the controller for path "/login/check-google". Maybe you forgot to add the matching route in your routing configuration? 

im using FOSUserBundle.

This is my config.yml,

hwi_oauth:
      # configuration of oauth resource owners to use
      resource_owners:
          google:
              type:                google
              client_id:           xxxxxx.apps.googleusercontent.com
              client_secret:       xxxxxxxxxxx
              scope:               "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
              options:
                  access_type:     online

      # name of the firewall the oauth bundle is active in
      firewall_name: secured_area

      # optional FOSUserBundle integration
      fosub:
          # try 30 times to check if a username is available (foo, foo1, foo2 etc)
          username_iterations: 30

          # mapping between resource owners (see below) and properties
          properties:
              google: googleId

      # if you want to use 'connect' and do not use the FOSUB integration, configure these separately
      connect: ~


      # optional HTTP Client configuration
      http_client:
          timeout:       5
          verify_peer:   true
          ignore_errors: true
          max_redirects: 5

Security.yml

security:

        encoders:
            FOS\UserBundle\Model\UserInterface: sha512

        role_hierarchy:
            ROLE_ADMIN:       ROLE_USER
            ROLE_SUPER_ADMIN: ROLE_ADMIN

        providers:
            fos_userbundle:
                id: fos_user.user_manager

        firewalls:
            main:
                pattern:      .*
                form-login:
                    provider:       fos_userbundle
                    login_path:     /login
                    use_forward:    false
                    check_path:     /login_check
                    failure_path:   null
                    default_target_path: /admin/dashboard
                logout:
                    path:   /admin/logout
                    target: /login
                anonymous:    true

            secured_area:
                pattern:    ^/
                form_login:
                    provider: fos_userbundle
                    login_path: /connect
                    check_path: /login/login_check
                anonymous:    true
                oauth:
                    resource_owners:
                        google:             "/login/check-google"
                    login_path:        /connect
                    failure_path:      /connect

                    # FOSUB integration
                    oauth_user_provider:
                        service: hwi_oauth.user.provider.fosub_bridge

        access_control:
            # The WDT has to be allowed to anonymous users to avoid requiring the login with the AJAX request
            - { path: ^/wdt/, role: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/profiler/, role: IS_AUTHENTICATED_ANONYMOUSLY }

            # AsseticBundle paths used when using the controller for assets
            - { path: ^/js/, role: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/css/, role: IS_AUTHENTICATED_ANONYMOUSLY }

            # URL of FOSUserBundle which need to be available to anonymous users
            - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY } # for the case of a failed login

routing.yml

hwi_oauth_security:
    resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
    prefix: /connect

hwi_oauth_connect:
    resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
    prefix: /connect

hwi_oauth_redirect:
    resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
    prefix: /connect

google_login:
    pattern: /login/check-google
Was it helpful?

Solution

First thing that I can see wrong in your code is in Security.yml:

Your main firewall matches all routes

RegEx ".*" = "0 to infinite times [greedy] Any character (except newline)"

Edit your firewall's pattern to match routes that you want to make them responsible with, taking in consideration that if a pattern matches a route, following firewalls will not be checked.

firewalls:
    secured_area:
        pattern: ^/secured
    main:
        pattern: ^/

See what happens and if you have any more errors i'll edit my response accordingly.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top