コード例 #1
0
 public function save()
 {
     if (Loader::helper('validation/token')->validate('save_permissions')) {
         $root = (new Filesystem())->getRootFolder();
         $tp = new TaskPermission();
         if ($tp->canAccessTaskPermissions()) {
             $permissions = PermissionKey::getList('file_folder');
             foreach ($permissions as $pk) {
                 $pk->setPermissionObject($root);
                 $paID = $_POST['pkID'][$pk->getPermissionKeyID()];
                 $pt = $pk->getPermissionAssignmentObject();
                 $pt->clearPermissionAssignment();
                 if ($paID > 0) {
                     $pa = Access::getByID($paID, $pk);
                     if (is_object($pa)) {
                         $pt->assignPermissionAccess($pa);
                     }
                 }
             }
             $this->redirect('/dashboard/system/files/permissions', 'updated');
         }
     } else {
         $this->error->add(Loader::helper("validation/token")->getErrorMessage());
     }
 }
コード例 #2
0
 public function getPermissionAccessObject()
 {
     $cache = Core::make('cache/request');
     $identifier = sprintf('permission/assignment/access/%s/%s', $this->pk->getPermissionKeyHandle(), $this->getPermissionObject()->getPermissionObjectIdentifier());
     $item = $cache->getItem($identifier);
     if (!$item->isMiss()) {
         return $item->get();
     }
     $db = Loader::db();
     $r = $db->GetOne('select paID from PagePermissionAssignments where cID = ? and pkID = ?', array($this->getPermissionObject()->getPermissionsCollectionID(), $this->pk->getPermissionKeyID()));
     $pa = $r ? Access::getByID($r, $this->pk, false) : null;
     if (is_object($pa)) {
         if ($this->getPermissionObject()->isPageDraft() && $this->getPermissionObject()->getCollectionInheritance() == 'PARENT' && is_object($pageType = $this->getPermissionObject()->getPageTypeObject()) && isset($this->inheritedPageTypeDraftPermissions[$this->pk->getPermissionKeyHandle()])) {
             $pk = Key::getByHandle($this->inheritedPageTypeDraftPermissions[$this->pk->getPermissionKeyHandle()]);
             $pk->setPermissionObject($pageType);
             $access = $pk->getPermissionAccessObject();
             if (is_object($access)) {
                 $list_items = $access->getAccessListItems();
                 $pa->setListItems($list_items);
             }
         }
     }
     $cache->save($item->set($pa));
     return $pa;
 }
コード例 #3
0
 public function handlePageUpdate($event)
 {
     $page = $event->getPageObject();
     $pk = PermissionKey::getByHandle('view_page');
     $pk->setPermissionObject($page);
     $list = $pk->getAccessListItems();
     foreach ($list as $pa) {
         $pae = $pa->getAccessEntityObject();
         if ($pae->getAccessEntityTypeHandle() == 'group') {
             if ($pae->getGroupObject()->getGroupID() == GUEST_GROUP_ID) {
                 $pd = $pa->getPermissionDurationObject();
                 if (!is_object($pd)) {
                     $pd = new PermissionDuration();
                 }
                 $publicDate = strtotime($page->getCollectionDatePublic());
                 $pd->setStartDateAllDay(0);
                 $pd->setEndDateAllDay(0);
                 $pd->setStartDate($dateStart = date('Y-m-d H:i:s', $publicDate));
                 $pd->save();
                 $paa = PermissionAccess::getByID($pa->paID, $pk);
                 $paa->addListItem($pae, $pd, PermissionKey::ACCESS_TYPE_INCLUDE);
             }
         }
     }
 }
コード例 #4
0
 public function save()
 {
     if (Loader::helper('validation/token')->validate('save_permissions')) {
         $tp = new TaskPermission();
         if ($tp->canAccessTaskPermissions()) {
             $permissions = PermissionKey::getList('sitemap');
             $permissions = array_merge($permissions, PermissionKey::getList('notification'));
             $permissions = array_merge($permissions, PermissionKey::getList('marketplace_newsflow'));
             $permissions = array_merge($permissions, PermissionKey::getList('admin'));
             foreach ($permissions as $pk) {
                 $paID = $_POST['pkID'][$pk->getPermissionKeyID()];
                 $pt = $pk->getPermissionAssignmentObject();
                 $pt->clearPermissionAssignment();
                 if ($paID > 0) {
                     $pa = PermissionAccess::getByID($paID, $pk);
                     if (is_object($pa)) {
                         $pt->assignPermissionAccess($pa);
                     }
                 }
             }
             $this->redirect('/dashboard/system/registration/notification', 'updated');
         }
     } else {
         $this->error->add(Loader::helper("validation/token")->getErrorMessage());
     }
     $this->view();
 }
コード例 #5
0
 public function getPermissionAccessObject()
 {
     $cnvID = 0;
     if (is_object($this->permissionObjectToCheck)) {
         $cnvID = $this->permissionObjectToCheck->getConversationID();
     }
     $db = Database::connection();
     $r = $db->GetOne('select paID from ConversationPermissionAssignments where cnvID = ? and pkID = ?', array($cnvID, $this->pk->getPermissionKeyID()));
     return Access::getByID($r, $this->pk);
 }
コード例 #6
0
 public function getPermissionAccessObject()
 {
     $db = Database::connection();
     if ($this->permissionObjectToCheck instanceof TopicTreeNode) {
         $pa = parent::getPermissionAccessObject();
     } elseif ($this->permissionObjectToCheck instanceof CategoryTreeNode && isset($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()])) {
         $inheritedPKID = $db->GetOne('select pkID from PermissionKeys where pkHandle = ?', array($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()]));
         $r = $db->GetOne('select paID from TreeNodePermissionAssignments where treeNodeID = ? and pkID = ?', array($this->permissionObjectToCheck->getTreeNodePermissionsNodeID(), $inheritedPKID));
         $pa = Access::getByID($r, $this->pk);
     } else {
         return false;
     }
     return $pa;
 }
コード例 #7
0
 /**
  * @return Access
  */
 public function getPermissionAccessObject()
 {
     $cache = \Core::make('cache/request');
     $identifier = sprintf('permission/key/assignment/%s', $this->pk->getPermissionKeyID());
     $item = $cache->getItem($identifier);
     if (!$item->isMiss()) {
         return $item->get();
     }
     $item->lock();
     $db = Loader::db();
     $paID = $db->GetOne('select paID from PermissionAssignments where pkID = ?', array($this->pk->getPermissionKeyID()));
     $pa = Access::getByID($paID, $this->pk);
     $cache->save($item->set($pa));
     return $pa;
 }
コード例 #8
0
 public function updateDetails($post)
 {
     $permissions = PermissionKey::getList('basic_workflow');
     foreach ($permissions as $pk) {
         $pk->setPermissionObject($this);
         $pt = $pk->getPermissionAssignmentObject();
         $paID = $post['pkID'][$pk->getPermissionKeyID()];
         $pt->clearPermissionAssignment();
         if ($paID > 0) {
             $pa = PermissionAccess::getByID($paID, $pk);
             if (is_object($pa)) {
                 $pt->assignPermissionAccess($pa);
             }
         }
     }
 }
コード例 #9
0
 public function getPermissionAccessObject()
 {
     $db = Database::connection();
     if ($this->permissionObjectToCheck instanceof File) {
         $r = $db->GetOne('select paID from FilePermissionAssignments where fID = ? and pkID = ?', array($this->permissionObject->getFileID(), $this->pk->getPermissionKeyID()));
         if ($r) {
             return Access::getByID($r, $this->pk, false);
         }
     } else {
         if (isset($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()])) {
             $pk = Key::getByHandle($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()]);
             $pk->setPermissionObject($this->permissionObjectToCheck);
             $pae = $pk->getPermissionAccessObject();
             return $pae;
         }
     }
 }
コード例 #10
0
 public function getPermissionAccessObject()
 {
     $db = Database::connection();
     if ($this->permissionObjectToCheck instanceof Area) {
         $r = $db->GetOne('select paID from AreaPermissionAssignments where cID = ? and arHandle = ? and pkID = ? ', array($this->permissionObjectToCheck->getCollectionID(), $this->permissionObjectToCheck->getAreaHandle(), $this->pk->getPermissionKeyID()));
         if ($r) {
             return Access::getByID($r, $this->pk, false);
         }
     } elseif (isset($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()])) {
         // this is a page
         $pk = PermissionKey::getByHandle($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()]);
         $pk->setPermissionObject($this->permissionObjectToCheck);
         $pae = $pk->getPermissionAccessObject();
         return $pae;
     } elseif (isset($this->blockTypeInheritedPermissions[$this->pk->getPermissionKeyHandle()])) {
         $pk = PermissionKey::getByHandle($this->blockTypeInheritedPermissions[$this->pk->getPermissionKeyHandle()]);
         $pae = $pk->getPermissionAccessObject();
         return $pae;
     }
     return false;
 }
コード例 #11
0
ファイル: FileKey.php プロジェクト: ceko/concrete5-1
 public function copyFromFileSetToFile()
 {
     $opa = $this->getPermissionAccessObject();
     $paID = false;
     if (is_object($opa)) {
         $paID = $opa->getPermissionAccessID();
     }
     if ($paID == -1) {
         // this is proceeding from a merged file set assignment (copying from multiple file sets)
         $npa = Access::create($this);
         $ids = $opa->getPermissionAccessIDList();
         foreach ($ids as $paID) {
             $pax = Access::getByID($paID, $this);
             $pax->duplicate($npa);
         }
         $paID = $npa->getPermissionAccessID();
     }
     if ($paID) {
         $db = Loader::db();
         $db->Replace('FilePermissionAssignments', array('fID' => $this->permissionObject->getFileID(), 'pkID' => $this->getPermissionKeyID(), 'paID' => $paID), array('fID', 'paID', 'pkID'), true);
     }
 }
コード例 #12
0
 public function save()
 {
     $this->view($this->post('ptID'));
     if (Loader::helper('validation/token')->validate('save_permissions')) {
         $permissions = PermissionKey::getList('page_type');
         foreach ($permissions as $pk) {
             $pk->setPermissionObject($this->pagetype);
             $paID = $_POST['pkID'][$pk->getPermissionKeyID()];
             $pt = $pk->getPermissionAssignmentObject();
             $pt->clearPermissionAssignment();
             if ($paID > 0) {
                 $pa = Access::getByID($paID, $pk);
                 if (is_object($pa)) {
                     $pt->assignPermissionAccess($pa);
                 }
             }
         }
         if (Config::get('concrete.permissions.model') == 'advanced') {
             $permissions = PermissionKey::getList('page');
             $defaultPage = $this->pagetype->getPageTypePageTemplateDefaultPageObject();
             foreach ($permissions as $pk) {
                 $pk->setPermissionObject($defaultPage);
                 $paID = $_POST['pkID'][$pk->getPermissionKeyID()];
                 $pt = $pk->getPermissionAssignmentObject();
                 $pt->clearPermissionAssignment();
                 if ($paID > 0) {
                     $pa = Access::getByID($paID, $pk);
                     if (is_object($pa)) {
                         $pt->assignPermissionAccess($pa);
                     }
                 }
             }
         }
         $this->redirect('/dashboard/pages/types/permissions', $this->pagetype->getPageTypeID(), 'updated');
     } else {
         $this->error->add(Loader::helper("validation/token")->getErrorMessage());
     }
 }
コード例 #13
0
 public function getPermissionAccessObject()
 {
     /**
      * @var $registry RegistryInterface
      */
     $registry = \Core::make('Concrete\\Core\\Permission\\Inheritance\\Registry\\BlockRegistry');
     $db = Database::connection();
     if ($this->permissionObjectToCheck instanceof Block) {
         $co = $this->permissionObjectToCheck->getBlockCollectionObject();
         $paID = $db->GetOne('select paID from BlockPermissionAssignments where cID = ? and cvID = ? and bID = ? and pkID = ? ', array($co->getCollectionID(), $co->getVersionID(), $this->permissionObject->getBlockID(), $this->pk->getPermissionKeyID()));
         if ($paID) {
             $pae = Access::getByID($paID, $this->pk, false);
         }
     } elseif ($this->permissionObjectToCheck instanceof Area && $registry->getEntry('area', $this->pk->getPermissionKeyHandle())) {
         $pk = PermissionKey::getByHandle($registry->getEntry('area', $this->pk->getPermissionKeyHandle())->getInheritedFromPermissionKeyHandle());
         $pk->setPermissionObject($this->permissionObjectToCheck);
         $pae = $pk->getPermissionAccessObject();
     } elseif ($this->permissionObjectToCheck instanceof Page && $registry->getEntry('page', $this->pk->getPermissionKeyHandle())) {
         $pk = PermissionKey::getByHandle($registry->getEntry('page', $this->pk->getPermissionKeyHandle())->getInheritedFromPermissionKeyHandle());
         $pk->setPermissionObject($this->permissionObjectToCheck);
         $pae = $pk->getPermissionAccessObject();
     }
     return $pae;
 }
コード例 #14
0
 public function approve(WorkflowProgress $wp)
 {
     $c = Page::getByID($this->getRequestedPageID());
     $ps = $this->getPagePermissionSet();
     $assignments = $ps->getPermissionAssignments();
     foreach ($assignments as $pkID => $paID) {
         $pk = PermissionKey::getByID($pkID);
         $pk->setPermissionObject($c);
         $pt = $pk->getPermissionAssignmentObject();
         $pt->clearPermissionAssignment();
         if ($paID > 0) {
             $pa = PermissionAccess::getByID($paID, $pk);
             if (is_object($pa)) {
                 $pt->assignPermissionAccess($pa);
             }
         }
     }
     $c->refreshCache();
     $wpr = new WorkflowProgressResponse();
     $wpr->setWorkflowProgressResponseURL(\URL::to($c));
     return $wpr;
 }
コード例 #15
0
 public function getPermissionAccessObject()
 {
     $db = Loader::db();
     $r = $db->GetOne('select paID from PageTypePermissionAssignments where ptID = ? and pkID = ?', array($this->permissionObject->getPageTypeID(), $this->pk->getPermissionKeyID()));
     return Access::getByID($r, $this->pk);
 }
コード例 #16
0
 public function getPermissionAccessObject()
 {
     $db = Loader::db();
     $r = $db->GetOne('select paID from BasicWorkflowPermissionAssignments where wfID = ? and pkID = ?', array($this->getPermissionObject()->getWorkflowID(), $this->pk->getPermissionKeyID()));
     return Access::getByID($r, $this->pk);
 }