Separate into 4 modules
* init_instance: load the cubicweb repository from the
`pyramid_cubicweb.instance` configuration key
* defaults: provides cw-like defaults for the authentication and session
management
* core: make cubicweb use the authentication and session management of
pyramid.
It assumes the application provides the auth policies and session factory,
and that the `cubicweb.*` registry entries are correctly initialised.
This is this only required module or pyramid_cubicweb, the other
ones are optional if the application provides its own versions of what they
do.
* bwcompat: provides a catchall route that delegate the request handling to
an old-fashion cubicweb publisher (ie using url_resolver and controllers).
Related to #4291173
from pyramid.authentication import SessionAuthenticationPolicy
from pyramid.authorization import ACLAuthorizationPolicy
from pyramid.session import SignedCookieSessionFactory
from pyramid_cubicweb.core import get_principals
def includeme(config):
config.set_session_factory(
SignedCookieSessionFactory(
secret=config.registry.settings['session.secret']
))
config.set_authentication_policy(
SessionAuthenticationPolicy(callback=get_principals))
config.set_authorization_policy(ACLAuthorizationPolicy())