Source of file DataObjectExtension.php
Size: 2,871 Bytes - Last Modified: 2018-11-27T11:02:29+00:00
/var/www/docs.ssmods.com/process/src/src/extensions/dataobjects/DataObjectExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | <?php namespace StyleHack\EasyPermission\Extensions\DataObjects; use SilverStripe\ORM\DataExtension; use SilverStripe\Security\Permission; use SilverStripe\Security\Security; class DataObjectExtension extends DataExtension { /** * @param null $member * * @return bool|int */ public function canView($member = null) { return $this->checkCan(__FUNCTION__, $member); } /** * @param null $member * * @return bool|int */ public function canEdit($member = null) { return $this->checkCan(__FUNCTION__, $member); } /** * @param null $member * * @return bool|int */ public function canDelete($member = null) { return $this->checkCan(__FUNCTION__, $member); } /** * @param null $member * @param array $context * * @return bool|int */ public function canCreate($member = null, $context = []) { return $this->checkCan(__FUNCTION__, $member); } /** * @param $functionName * @param $member * * @return bool|int */ public function checkCan($functionName, $member) { //General Can $can = $this->owner->config()->get('can'); //customized Can $convertFunctionName = strtolower(str_replace('can', 'can_', $functionName)); $specificCan = $this->owner->config()->get($convertFunctionName); //max PageCount to Create $count = $this->owner->config()->get($convertFunctionName . '_count'); if (isset($specificCan)) { //customized Can $permission = $this->setPermissionCan($specificCan); } else if (isset($can)) { //general Can $permission = $this->setPermissionCan($can); } else { //default Can $permission = Permission::check('CMS_ACCESS_CMSMain', 'any', $member); } //Can create count if ($convertFunctionName == 'can_create' && $permission) { if (isset($count)) { $class = $this->owner->getClassName(); $classCount = $class::get()->Count(); $permission = $classCount < $count ? true : false; } } $this->owner->extend('updateCheckCan', $permission); return $permission; } /** * @param $can * * @return bool */ public function setPermissionCan($can) { if (gettype($can) == 'boolean') { $permission = $can; } else if (gettype($can) == 'string') { $permission = $this->checkMemberGroup($can); } else { foreach ($can as $group) { $permission = $this->checkMemberGroup($group); } } $this->owner->extend('updatePermissionCan', $permission); return $permission; } /** * @param $group * * @return bool */ public function checkMemberGroup($group) { $currentMemberGroups = Security::getCurrentUser()->Groups(); $permission = false; foreach ($currentMemberGroups as $currentMemberGroup) { if ($group == $currentMemberGroup->Code) { $permission = true; } } $this->owner->extend('updateMemberGroup', $permission); return $permission; } } |