This repository is what we call a "subtree split": a read-only copy of one directory of the main repository. It is used by Composer to allow developers to depend on specific bundles.
If you want to report or contribute, you should instead open your issue on the main repository: https://github.com/Novactive/Nova-eZPlatform-Bundles
Documentation is available in this repository via .md files but also packaged here: https://novactive.github.io/Nova-eZPlatform-Bundles/master/ProtectedContentBundle/README.md.html
A bundle that provides quick password protection on Contents.
Allows you to add 1 on N password on a Content in the Admin UI. Once a protection is set, the Content becomes Protected. In this situation you can have 3 new variables in the view full
- canReadProtectedContent (always)
- requestProtectedContentPasswordForm (if content is protected by password)
- requestProtectedContentEmailForm (if content is protected with email verification)
Allowing you do:
<h2>{{ ibexa_content_name(content) }}</h2>
{% ifnotcanReadProtectedContent %}
{% ifrequestProtectedContentPasswordFormisdefined %}
<p>This content has been protected by a password</p>
<divclass="protected-content-form">
{{ form(requestProtectedContentPasswordForm) }}
</div>
{% elseifrequestProtectedContentEmailFormisdefined %}
<p>This content has been protected by an email verification</p>
<divclass="protected-content-form">
{{ form(requestProtectedContentEmailForm) }}
</div>
{% endif %}
{% else %}
{% forfieldin content.fieldsByLanguage(language|default(null)) %}
<h3>{{ field.fieldDefIdentifier }}</h3>
{{ ez_render_field(content, field.fieldDefIdentifier) }}
{% endfor %}
{% endif %}You can also manage this globally through the pagelayout wrapping the content block.
Once you have unlocked the content, canReadProtectedContent will be true
HTTP Cache is disabled for Protected Content.
Add the lib to your composer.json, run composer require novactive/ezprotectedcontentbundle to refresh dependencies.
Then inject the bundle in the bundles.php of your application.
Novactive\Bundle\eZProtectedContentBundle\NovaeZProtectedContentBundle::class => [ 'all'=> true ],_novaezprotectedcontent_routes:
resource: '@NovaeZProtectedContentBundle/Resources/config/routing/main.yml'cp vendor/novactive/ezprotectedcontentbundle/bundle/Resources/migrations/* src/Migrations/Ibexa/migrations/
php bin/console ibexa:migrations:migrate --allow-no-migration --disable-locking -vbin/console novaezprotectedcontent:installThis module add a cookie to unlock the contents that match it, for that reason you want to keep all the cookie that starts with PasswordProvided::COOKIE_PREFIX (i.e: protected-content-).
// Remove all cookies besides Session ID, as JS tracker cookies and so will make the responses effectively un-cachedif (req.http.cookie) {
setreq.http.cookie=";"+req.http.cookie;
setreq.http.cookie=regsuball(req.http.cookie, "; +", ";");
setreq.http.cookie=regsuball(req.http.cookie, ";[ ]*(eZSESSID[^=]*|protected-content-[^=]*)=", "; \1=");
setreq.http.cookie=regsuball(req.http.cookie, ";[^ ][^;]*", "");
setreq.http.cookie=regsuball(req.http.cookie, "^[; ]+|[; ]+$", "");
}