From 267f2db66f514db43d0801237213799cd6797ee4 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 25 May 2009 00:27:08 +0000 Subject: Change the semantics of IForbiddenAppFactory. --- repoze/bfg/router.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'repoze/bfg/router.py') diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py index 885a08184..2af5df4c7 100644 --- a/repoze/bfg/router.py +++ b/repoze/bfg/router.py @@ -18,6 +18,7 @@ from repoze.bfg.interfaces import IRoutesMapper from repoze.bfg.interfaces import ISecurityPolicy from repoze.bfg.interfaces import ISettings from repoze.bfg.interfaces import IForbiddenAppFactory +from repoze.bfg.interfaces import IUnauthorizedAppFactory from repoze.bfg.interfaces import IView from repoze.bfg.interfaces import IViewPermission @@ -55,7 +56,28 @@ class Router(object): self.request_factory = registry.queryUtility(IRequestFactory) security_policy = registry.queryUtility(ISecurityPolicy) - self.forbidden_app_factory = registry.queryUtility(IForbiddenAppFactory) + unauthorized_app_factory = registry.queryUtility( + IUnauthorizedAppFactory) + + forbidden = None + + if unauthorized_app_factory is not None: + warning = ( + 'Instead of registering a utility against the ' + 'repoze.bfg.interfaces.IUnauthorizedAppFactory interface ' + 'to return a custom forbidden response, you should now ' + 'register a "repoze.interfaces.IForbiddenAppFactory". ' + 'The IUnauthorizedAppFactory interface was deprecated in ' + 'repoze.bfg 0.8.2 and will be removed in a subsequent version ' + 'of repoze.bfg. See the "Hooks" chapter of the repoze.bfg ' + 'documentation for more information about ' + 'IForbiddenAppFactory.') + self.logger and self.logger.warn(warning) + def forbidden(context, request): + return unauthorized_app_factory() + + self.forbidden_app_factory = registry.queryUtility(IForbiddenAppFactory, + default=forbidden) if security_policy is not None: if hasattr(security_policy, 'forbidden'): -- cgit v1.2.3