Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to customize FOS UserBundle URLs

I've installed FOSUserBundle and I'd like to customize the urls to be /account/login, /account/register, /account/logout instead of /login, /register, /logout

I know I can modify the routing config of the bundle, but it doesn't seem to be the proper way.

like image 797
petekaner Avatar asked Oct 26 '13 15:10

petekaner


1 Answers

How to override / change FOSUserBundle's routes

You can override i.e the /register route in your app/config/routing.yml by re-declaring it after importing FOSUserBundle's XML routes as resources.

fos_user_register:     resource: "@FOSUserBundle/Resources/config/routing/registration.xml"     prefix: /register  # ...  fos_user_registration_register:     path:      /account/register     defaults:  { _controller: FOSUserBundle:Registration:register } 

... or just change the prefix when importing:

fos_user_register:     resource: "@FOSUserBundle/Resources/config/routing/registration.xml"     prefix: /account/register  # no need to override the route 

The same goes for /login and /logout :

fos_user_security:     resource: "@FOSUserBundle/Resources/config/routing/security.xml"  # ...  fos_user_security_login:     path:      /account/login     defaults:  { _controller: FOSUserBundle:Security:login, _method: POST }  fos_user_security_logout:     path:      /account/login     defaults:  { _controller: FOSUserBundle:Security:logout, _method: POST } 

Another way to override login and logout url's

login and logout paths can aswell be configured directly in your app/config/security.yml:

security:     firewalls:          your_firewall:             # ...             form_login:                 login_path: /account/login  # instead of fos_user_security_login                 # ...             logout:                 path: /account/logout       # instead of fos_user_security_logout                 # ... 

List of all of FOSUserBundle's routes in YAML format

You can directly change and then include these in your app/config/routing.yml ( no need to import the ones the bundle provides as resources then) ... or put them all into a single file and include that one as a resource...

# -> from @FOSUserBundle/Resources/routing/change_password.xml  fos_user_change_password:     pattern: /profile/password/change     defaults: { _controller: FOSUserBundle:ChangePassword:changePassword }     requirements:         _method: GET|POST  # -> from @FOSUserBundle/Resources/routing/group.xml  fos_user_group_list:     pattern: /groups/list     defaults: { _controller: FOSUserBundle:Group:list }     requirements:         _method: GET  fos_user_group_new:     pattern: /groups/new     pattern:     defaults: { _controller: FOSUserBundle:Group:new }     requirements:         _method: GET  fos_user_group_show:     pattern: /groups/{groupname}     defaults: { _controller: FOSUserBundle:Group:show }     requirements:         _method: GET  fos_user_group_edit:     pattern: /groups/{groupname}/edit     defaults: { _controller: FOSUserBundle:Group:edit }     requirements:         _method: GET|POST  fos_user_group_delete:     pattern: /groups/{groupname}/delete     defaults: { _controller: FOSUserBundle:Group:delete }     requirements:         _method: GET  # -> from @FOSUserBundle/Resources/routing/profile.xml  fos_user_profile_show:     pattern: /profile/show     defaults: { _controller: FOSUserBundle:Profile:show }     requirements:         _method: GET  fos_user_profile_edit:     pattern: /profile/edit     defaults: { _controller: FOSUserBundle:Profile:edit }     requirements:         _method: GET|POST  # -> from @FOSUserBundle/Resources/routing/registration.xml  fos_user_registration_register:     pattern: /registration     defaults: { _controller: FOSUserBundle:Registration:register }     requirements:         _method: GET|POST  fos_user_registration_check_email:     pattern: /registration/check-email     defaults: { _controller: FOSUserBundle:Registration:checkEmail }     requirements:         _method: GET  fos_user_registration_confirm:     pattern: /registration/confirm/{token}     defaults: { _controller: FOSUserBundle:Registration:confirm }     requirements:         _method: GET  fos_user_registration_confirmed:     pattern: /registration/confirmed     defaults: { _controller: FOSUserBundle:Registration:confirmed }     requirements:         _method: GET  # -> from @FOSUserBundle/Resources/routing/resetting.xml  fos_user_resetting_request:     pattern: /profile/password/reset     defaults: { _controller: FOSUserBundle:Resetting:request }     requirements:         _method: GET  fos_user_resetting_send_email:     pattern: /profile/password/reset     defaults: { _controller: FOSUserBundle:Resetting:sendEmail }     requirements:         _method: POST  fos_user_resetting_check_email:     pattern: /profile/password/reset/check-email     defaults: { _controller: FOSUserBundle:Registration:checkEmail }     requirements:         _method: GET  fos_user_resetting_reset:     pattern: /profile/password/reset/{token}     defaults: { _controller: FOSUserBundle:Registration:reset }     requirements:         _method: GET|POST  # -> from @FOSUserBundle/Resources/routing/security.xml  fos_user_security_login:     pattern: /login     defaults: { _controller: FOSUserBundle:Security:login }     requirements:         _method: GET|POST  fos_user_security_check:     pattern: /login_check     defaults: { _controller: FOSUserBundle:Security:check }  fos_user_security_logout:     pattern: /logout     defaults: { _controller: FOSUserBundle:Security:logout }     requirements:         _method: GET|POST 
like image 63
Nicolai Fröhlich Avatar answered Sep 22 '22 22:09

Nicolai Fröhlich