Skip to content

Instantly share code, notes, and snippets.

@richardhj
Last active November 29, 2017 10:59
Show Gist options
  • Save richardhj/5c01c31dbdbd30d3b2b14df201393e20 to your computer and use it in GitHub Desktop.
Save richardhj/5c01c31dbdbd30d3b2b14df201393e20 to your computer and use it in GitHub Desktop.
Event Listeners MetaModels Contao Frontend Editing Permission Owner
<?php
use ContaoCommunityAlliance\DcGeneral\Event\PreEditModelEvent;
use ContaoCommunityAlliance\DcGeneral\Event\PrePersistModelEvent;
// Copy-replace following vars:
// 'mm_employee'
// 'owner'
return [
PreEditModelEvent::NAME => [
function (PreEditModelEvent $event) {
if ('FE' !== TL_MODE
|| 'mm_employee' !== $event->getEnvironment()
->getDataDefinition()
->getBasicDefinition()
->getDataProvider()) {
return;
}
/** @var \MetaModels\DcGeneral\Data\Model $model */
$model = $event->getModel();
if ($model->getItem()->get('owner') !== \Contao\FrontendUser::getInstance()->id) {
die_nicely('be_forbidden', 'Forbidden');
}
},
],
PrePersistModelEvent::NAME => [
function (PrePersistModelEvent $event) {
if ('FE' !== TL_MODE
|| 'mm_employee' !== $event->getEnvironment()
->getDataDefinition()
->getBasicDefinition()
->getDataProvider()) {
return;
}
/** @var \MetaModels\DcGeneral\Data\Model $model */
$model = $event->getModel();
if (null === $model->getItem()->get('owner')) {
$model->getItem()->set('owner', \Contao\FrontendUser::getInstance()->id);
}
},
],
];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment