preferences: ability to reset dashboard to default

This commit is contained in:
yuri
2018-08-17 14:20:24 +03:00
parent 7b982acc3e
commit e89cb2547e
7 changed files with 119 additions and 15 deletions

View File

@@ -88,7 +88,7 @@ class Preferences extends \Espo\Core\Controllers\Base
throw new BadRequest();
}
if ($this->getAcl()->getLevel('Preferences', 'read') === 'no') {
if ($this->getAcl()->getLevel('Preferences', 'edit') === 'no') {
throw new Forbidden();
}
@@ -142,5 +142,45 @@ class Preferences extends \Espo\Core\Controllers\Base
return $entity->getValueMap();
}
}
public function postActionResetDashboard($params, $data)
{
if (empty($data->id)) throw new BadRequest();
$userId = $data->id;
$this->handleUserAccess($userId);
$user = $this->getEntityManager()->getEntity('User', $userId);
$preferences = $this->getEntityManager()->getEntity('Preferences', $userId);
if (!$user) throw new NotFound();
if (!$preferences) throw new NotFound();
if ($user->isPortal()) throw new Forbidden();
if ($this->getAcl()->getLevel('Preferences', 'edit') === 'no') {
throw new Forbidden();
}
$forbiddenAttributeList = $this->getAcl()->getScopeForbiddenAttributeList('Preferences', 'edit');
if (in_array('dashboardLayout', $forbiddenAttributeList)) {
throw new Forbidden();
}
$dashboardLayout = $this->getConfig()->get('dashboardLayout');
$dashletsOptions = $this->getConfig()->get('dashletsOptions');
$preferences->set([
'dashboardLayout' => $dashboardLayout,
'dashletsOptions' => $dashletsOptions
]);
$this->getEntityManager()->saveEntity($preferences);
return (object) [
'dashboardLayout' => $preferences->get('dashboardLayout'),
'dashletsOptions' => $preferences->get('dashletsOptions')
];
}
}