Flask application initialization.

        :param app: The Flask application.
        :param entry_point_actions: The entrypoint for actions extensions.
            (Default: ``'invenio_access.actions'``)
        :param entry_point_system_roles: The entrypoint for  system roles
            extensions. (Default: ``'invenio_access.system_roles'``)
        :param cache: The cache system. (Default: ``None``)

def init_app(self, app, entry_point_actions='invenio_access.actions',
                 entry_point_system_roles='invenio_access.system_roles',
                 **kwargs):
        """Flask application initialization.

        :param app: The Flask application.
        :param entry_point_actions: The entrypoint for actions extensions.
            (Default: ``'invenio_access.actions'``)
        :param entry_point_system_roles: The entrypoint for  system roles
            extensions. (Default: ``'invenio_access.system_roles'``)
        :param cache: The cache system. (Default: ``None``)
        """
        self.init_config(app)
        state = _AccessState(
            app, entry_point_actions=entry_point_actions,
            entry_point_system_roles=entry_point_system_roles,
            cache=kwargs.get('cache'))
        app.extensions['invenio-access'] = state

        if app.config.get('ACCESS_LOAD_SYSTEM_ROLE_NEEDS', True):
            identity_loaded.connect_via(app)(
                load_permissions_on_identity_loaded
            )

        return state