/** * {@inheritDoc} */ public function hydrate(Request $request, EntityInterface $entity, ErrorStore $errorStore) { if ($this->shouldHydrate($request, 'o:name')) { $entity->setName($request->getValue('o:name')); } if ($this->shouldHydrate($request, 'o:email')) { $entity->setEmail($request->getValue('o:email')); } $role = $request->getValue('o:role'); if ($role && $this->shouldHydrate($request, 'o:role')) { $this->authorize($entity, 'change-role'); // Ask specially for permission to set an admin role $acl = $this->getServiceLocator()->get('Omeka\\Acl'); if ($acl->isAdminRole($role)) { $this->authorize($entity, 'change-role-admin'); } $entity->setRole($role); } if ($this->shouldHydrate($request, 'o:is_active')) { $isActive = (bool) $request->getValue('o:is_active', $entity->isActive()); if ($isActive !== $entity->isActive()) { $this->authorize($entity, 'activate-user'); $entity->setIsActive($isActive); } } }