public function run() { $new_values = $this->request->get('value', array()); $group_id = $this->request->get('group_id', 0); if (!$new_values || !$group_id) { cmsCore::error404(); } $controllers = cmsPermissions::getControllersWithRules(); $owners = array(); foreach ($controllers as $controller_name) { $controller = cmsCore::getController($controller_name); $subjects = $controller->getPermissionsSubjects(); $rules = cmsPermissions::getRulesList($controller_name); $values = array(); foreach ($subjects as $subject) { $values[$subject['name']] = cmsPermissions::getPermissions($subject['name']); } $owners[$controller_name] = array('subjects' => $subjects, 'rules' => $rules, 'values' => $values); } foreach ($owners as $controller_name => $controller) { foreach ($controller['subjects'] as $subject) { $formatted_values = array(); foreach ($controller['rules'] as $rule) { $value = isset($new_values[$rule['id']][$subject['name']]) ? $new_values[$rule['id']][$subject['name']] : null; $formatted_values[$rule['id']][$group_id] = $value; } cmsPermissions::savePermissions($subject['name'], $formatted_values); } } cmsUser::addSessionMessage(LANG_CP_PERMISSIONS_SUCCESS, 'success'); $this->redirectBack(); }
public function run($id) { if (!$id) { cmsCore::error404(); } $users_model = cmsCore::getModel('users'); $group = $users_model->getGroup($id); if (!$group) { cmsCore::error404(); } $controllers = cmsPermissions::getControllersWithRules(); $owners = array(); foreach ($controllers as $controller_name) { $controller = cmsCore::getController($controller_name); $subjects = $controller->getPermissionsSubjects(); $rules = cmsPermissions::getRulesList($controller_name); $values = array(); foreach ($subjects as $subject) { $values[$subject['name']] = cmsPermissions::getPermissions($subject['name']); } $owners[$controller_name] = array('subjects' => $subjects, 'rules' => $rules, 'values' => $values); } $template = cmsTemplate::getInstance(); $template->setMenuItems('users_group', array(array('title' => LANG_CONFIG, 'url' => href_to($this->name, 'users', array('group_edit', $id))), array('title' => LANG_PERMISSIONS, 'url' => href_to($this->name, 'users', array('group_perms', $id))))); return $template->render('users_group_perms', array('group' => $group, 'owners' => $owners)); }
public function run($ctype_name) { $values = $this->request->get('value'); if (!$values || !$ctype_name) { cmsCore::error404(); } $content_model = cmsCore::getModel('content'); $ctype = $content_model->getContentTypeByName($ctype_name); if (!$ctype) { cmsCore::error404(); } $rules = cmsPermissions::getRulesList('content'); list($ctype, $rules, $values) = cmsEventsManager::hook('content_perms', array($ctype, $rules, $values)); list($ctype, $rules, $values) = cmsEventsManager::hook("content_{$ctype['name']}_perms", array($ctype, $rules, $values)); $users_model = cmsCore::getModel('users'); $groups = $users_model->getGroups(false); // перебираем правила foreach ($rules as $rule) { // если для этого правила вообще ничего нет, // то присваиваем null if (empty($values[$rule['id']])) { $values[$rule['id']] = null; continue; } // перебираем группы, заменяем на нуллы // значения отсутствующих правил foreach ($groups as $group) { if (empty($values[$rule['id']][$group['id']])) { $values[$rule['id']][$group['id']] = null; } } } cmsPermissions::savePermissions($ctype_name, $values); $this->redirectBack(); }
public function run($ctype_id) { if (!$ctype_id) { cmsCore::error404(); } $content_model = cmsCore::getModel('content'); $ctype = $content_model->getContentType($ctype_id); if (!$ctype) { cmsCore::error404(); } cmsCore::loadControllerLanguage('content'); $rules = cmsPermissions::getRulesList('content'); $values = cmsPermissions::getPermissions($ctype['name']); list($ctype, $rules, $values) = cmsEventsManager::hook('content_perms', array($ctype, $rules, $values)); list($ctype, $rules, $values) = cmsEventsManager::hook("content_{$ctype['name']}_perms", array($ctype, $rules, $values)); $users_model = cmsCore::getModel('users'); $groups = $users_model->getGroups(false); return cmsTemplate::getInstance()->render('ctypes_perms', array('ctype' => $ctype, 'rules' => $rules, 'values' => $values, 'groups' => $groups)); }
public function getCommentsModerators() { // сначала ищем юзеров, которым разрешено модерировать $moderators = cmsPermissions::getRulesGroupMembers('comments', 'is_moderator'); if (!$moderators) { // не нашли модераторов, получаем администраторов $moderators = $this->filterEqual('is_admin', 1)->selectList(array('i.id' => 'id', 'i.notify_options' => 'notify_options', 'i.email' => 'email', 'i.nickname' => 'nickname', 'i.avatar' => 'avatar'), true)->get('{users}', function ($item, $model) { $item['notify_options'] = cmsModel::yamlToArray($item['notify_options']); $item['is_online'] = cmsUser::userIsOnline($item['id']); return $item; }); } return $moderators; }
public static function getPermissions($groups, $user_id) { $perms = cmsPermissions::getUserPermissions($groups); return $perms; }
public function actionPermsSave($subject = '') { if (empty($this->useDefaultPermissionsAction)) { cmsCore::error404(); } $values = $this->request->get('value'); if (!$values) { cmsCore::error404(); } $rules = cmsPermissions::getRulesList($this->name); $users_model = cmsCore::getModel('users'); $groups = $users_model->getGroups(false); // перебираем правила foreach ($rules as $rule) { // если для этого правила вообще ничего нет, // то присваиваем null if (!isset($values[$rule['id']])) { $values[$rule['id']] = null; continue; } // перебираем группы, заменяем на нуллы // значения отсутствующих правил foreach ($groups as $group) { if (!isset($values[$rule['id']][$group['id']])) { $values[$rule['id']][$group['id']] = null; } } } cmsPermissions::savePermissions($subject, $values); $this->redirectBack(); }
public static function getPermissions($groups) { return cmsPermissions::getUserPermissions($groups); }
public function actionPermsSave($subject = '') { if (empty($this->useDefaultPermissionsAction)) { cmsCore::error404(); } $values = $this->request->get('value', array()); $rules = cmsPermissions::getRulesList($this->name); // добавляем правила доступа от типа контента, если контроллер на его основе $ctype = cmsCore::getModel('content')->getContentTypeByName($this->name); if ($ctype) { $rules = array_merge(cmsPermissions::getRulesList('content'), $rules); } list($rules, $values) = cmsEventsManager::hook("controller_{$this->name}_perms", array($rules, $values)); $groups = cmsCore::getModel('users')->getGroups(false); // перебираем правила foreach ($rules as $rule) { // если для этого правила вообще ничего нет, // то присваиваем null if (!isset($values[$rule['id']])) { $values[$rule['id']] = null; continue; } // перебираем группы, заменяем на нуллы // значения отсутствующих правил foreach ($groups as $group) { if (!isset($values[$rule['id']][$group['id']])) { $values[$rule['id']][$group['id']] = null; } } } cmsUser::addSessionMessage(LANG_CP_PERMISSIONS_SUCCESS, 'success'); cmsPermissions::savePermissions($subject, $values); $this->redirectBack(); }