I have a tutorial page, and need a global redirect
that will send to user to /tutoroal if they don't pass a DB check:
User->passedTutorial()
Can I make this with a route configuration calling a controller/model method ?
This sounds more like a security context/question. Have you considered creating a custom role, eg ROLE_USER_PASSED?
You could then either check for this role in security.yml or annotate your controllers with @Security("has_role('ROLE_USER_PASSED')")
You can do that using @Security annotation like described there: http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/security.html.
Particularly:
/**
* @Security("user.passedTutorial()")
*/
UPD.
Finally problem can be solved using expression in access_control section of security.yml: http://symfony.com/doc/current/cookbook/security/access_control.html#securing-by-an-expression
By doing so it's still needed to implement access_denied_handler in used firewall (http://symfony.com/doc/current/reference/configuration/security.html) so that it will check the request/user again and perform redirect.