示例#1
0
 public function __construct()
 {
     parent::__construct();
     $this->user_model = \models\User::getInstance();
     $groups = \models\UserGroup::getInstance()->getAllGroups();
     foreach ($groups as $g) {
         $this->groups[$g->id] = $g;
     }
 }
示例#2
0
 public function beforeroute()
 {
     $this->model = \models\UserGroup::getInstance();
     parent::beforeroute();
     $this->table = 'groups';
     $this->fw->mset(['ctrl_base' => $this->fw->get('backend_base.group'), 'core_ctrl_base' => $this->fw->get('backend_base.group_core')]);
     $default_group = $this->model->getDefaultGroup();
     $this->fw->set('default_group', $default_group);
     $this->fw->set('no_bulk', 'true');
 }
示例#3
0
 /**
  * Проверяет данные перед добавлением на корректность
  * Полe 'actions' могут быть заданы как массивами, так и строками, в которых действия/связи разделены запятыми
  */
 private function isValid($post)
 {
     if (is_array($post) && count($post) > 0) {
         $isValid = true;
         /* Действия */
         if (isset($post['actions'])) {
             $actions = $post['actions'];
             if (!is_array($actions)) {
                 $actions = explode(',', $actions);
             }
             foreach ($actions as $a) {
                 if (!in_array(trim($a), self::$actions)) {
                     \helpers\Msg::error('acl.action_incorrect');
                     $isValid = false;
                 }
             }
             if ($isValid) {
                 $post['actions'] = implode($actions, ',');
             }
         }
         /* Группы */
         if (isset($post['group_id'])) {
             $group = \models\UserGroup::getInstance()->get($post['group_id']);
             if (!$group) {
                 \helpers\Msg::error('acl.group_incorrect');
                 $isValid = false;
             }
         }
         /* Связи */
         if (isset($post['relation'])) {
             $relation = $post['relation'];
             if (!in_array(trim($relation), self::$relations)) {
                 \helpers\Msg::error('acl.relation_incorrect');
                 $isValid = false;
             } else {
                 /*	$relation = self::$relations[trim($relation)];
                 			}
                 			if ($isValid)
                 			{*/
                 $post['relation'] = $relation;
             }
         }
         /* Объекты */
         if (isset($post['object'])) {
             $objects = $this->getObjectNamesList();
             if (!in_array(trim($post['object']), $objects)) {
                 \helpers\Msg::error('acl.object_incorrect');
                 $isValid = false;
             }
             if ($isValid) {
                 $post['object'] = trim($post['object']);
             }
         }
     }
     return $isValid ? $post : false;
 }
示例#4
0
 private function clearGroupId($post, $f3)
 {
     $group_id = false;
     if (!isset($post['group_id'])) {
         if ($f3->exists('account.default_group_id')) {
             $group_id = $f3->get('account.default_group_id');
         } else {
             $group_id = 0;
         }
     } else {
         $group_id = $post['group_id'];
     }
     $group = \models\UserGroup::getInstance()->get($group_id);
     if (!$group) {
         \helpers\Msg::error('acl.group_incorrect');
         $isValid = false;
     }
     return $group_id;
 }
示例#5
0
 /**
  * Устанавливает массив с данными для генерации AJAX-полей
  * @param type $this->fw
  */
 private function setAJAXFields()
 {
     $object_options = $this->model->getObjectSelectOptions();
     $this->fw->set('ajax_fields', [['name' => 'group_id', 'options' => \models\UserGroup::getInstance()->getSelectOptions(), 'type' => 'select_list', 'multiselect' => false, 'selected_id' => $this->fw->get('account.default_group_id') * 1, 'placeHolder' => $this->fw->get('i18n.acl.group.placeholder'), 'label' => $this->fw->get('i18n.acl.group.label')], ['name' => 'object', 'options' => $object_options, 'type' => 'select_list', 'multiselect' => false, 'selected_id' => $object_options[0], 'placeHolder' => $this->fw->get('i18n.acl.object.placeholder'), 'label' => $this->fw->get('i18n.acl.object.label')], ['name' => 'relation', 'options' => $this->model->getRelationSelectOptions(), 'type' => 'select_list', 'multiselect' => false, 'selected_id' => $this->model->RELATION_NO, 'placeHolder' => $this->fw->get('i18n.acl.relation.placeholder'), 'label' => $this->fw->get('i18n.acl.relation.label')], ['name' => 'actions', 'options' => $this->model->getActionsSelectOptions(), 'type' => 'select_list', 'multiselect' => true, 'selected_id' => ['create', 'read', 'update', 'delete'], 'placeHolder' => $this->fw->get('i18n.acl.action.placeholder'), 'label' => $this->fw->get('i18n.acl.action.label')]]);
     $this->setAjaxFieldsPost();
 }