Ejemplo n.º 1
0
 /**
  * Manages all models.
  */
 public function indexAction()
 {
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         //保存修改
         if (!is_array($_POST['Purview']['purview_name'])) {
             $_POST['Purview']['purview_name'] = array();
         }
         foreach ($_POST['Purview']['purview_name'] as $_k => $_v) {
             $flag = $this->db->update('{{purview}}', array('purview_name' => $_v, 'identify' => $_POST['Purview']['identify'][$_k], 'purview_rank' => $_POST['Purview']['purview_rank'][$_k]), 'purview_id=:purview_id', array('purview_id' => $_k));
             if ($flag) {
                 $this->db->update('{{purview}}', array('lasttime' => $_SERVER['REQUEST_TIME']), 'purview_id=:purview_id', array('purview_id' => $_k));
                 //记录操作日志
                 $message = '{user_name}修改了权限{purview_name}';
                 $data = array('purview_name' => $_v, 'data' => array('old' => PurviewModel::getPurviewById($_k), 'new' => $_POST));
                 UserLogsModel::inst()->add('Admin/Purview', $_k, 'Modify', 'success', $message, $data);
             }
         }
         //添加新记录
         if (!is_array($_POST['Purview']['new_purview_name'])) {
             $_POST['Purview']['new_purview_name'] = array();
         }
         foreach ($_POST['Purview']['new_purview_name'] as $_k => $_v) {
             if (is_array($_v)) {
                 foreach ($_v as $__k => $__v) {
                     $flag = $this->db->insert('{{purview}}', array('purview_id' => '', 'parent_id' => $_k, 'purview_name' => $__v, 'identify' => $_POST['Purview']['new_identify'][$_k][$__k], 'purview_rank' => $_POST['Purview']['new_purview_rank'][$_k][$__k], 'status' => PurviewModel::STAT_STATUS_NORMAL, 'lasttime' => $_SERVER['REQUEST_TIME'], 'dateline' => $_SERVER['REQUEST_TIME']));
                     if ($flag) {
                         //记录操作日志
                         $message = '{user_name}添加了权限{purview_name}';
                         $data = array('purview_name' => $__v, 'data' => $_POST['Purview']);
                         UserLogsModel::inst()->add('Admin/Purview', $this->db->getLastInsertID(), 'Insert', 'success', $message, $data);
                     }
                 }
             } else {
                 $flag = $this->db->insert('{{purview}}', array('purview_id' => '', 'parent_id' => 0, 'purview_name' => $_v, 'identify' => $_POST['Purview']['new_identify'][$_k], 'purview_rank' => $_POST['Purview']['new_purview_rank'][$_k], 'status' => PurviewModel::STAT_STATUS_NORMAL, 'lasttime' => $_SERVER['REQUEST_TIME'], 'dateline' => $_SERVER['REQUEST_TIME']));
                 if ($flag) {
                     //记录操作日志
                     $message = '{user_name}添加了权限{purview_name}';
                     $data = array('purview_name' => $_v, 'data' => $_POST);
                     UserLogsModel::inst()->add('Admin/Purview', $this->db->getLastInsertID(), 'Insert', 'success', $message, $data);
                 }
             }
         }
         PurviewModel::inst()->updateCache();
         $this->redirect('/admin/purview/index');
     }
     $this->getView()->assign(array('purviews' => PurviewModel::inst()->getPurviewList()));
 }
Ejemplo n.º 2
0
 /**
  * Updates a particular model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id the ID of the model to be updated
  */
 public function updateAction($id)
 {
     $user = UserModel::getUserById($id);
     if ($user) {
         $user['purviews'] = $user['purviews'] ? json_decode($user['purviews'], true) : array();
         $user['purviews'] = is_array($user['purviews']) ? array($user['purviews']) : array();
     }
     if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['Admin'])) {
         $administrator = $user['user_name'];
         $_POST['Admin']['purviews'] = isset($_POST['Admin']['purviews']) ? json_encode($_POST['Admin']['purviews']) : json_encode(array());
         $password = empty($_POST['Admin']['password']) ? $user['password'] : md5(md5($_POST['Admin']['password']) . $user['salt']);
         $allow_groups = GroupModel::getGroupsByOwner($this->user->group_id);
         if ($user['user_id'] == $this->user->id) {
             $update_data = array('user_name' => $_POST['Admin']['user_name'], 'realname' => $_POST['Admin']['realname'], 'email' => $_POST['Admin']['email'], 'password' => $password, 'lasttime' => $_SERVER['REQUEST_TIME']);
         } else {
             $allow_groups = GroupModel::getGroupsByOwner($this->user->group_id);
             if ($allow_groups[$this->user->group_id]['purviews'] != 'all' && (!isset($allow_groups[$_POST['Admin']['group_id']]) || $_POST['Admin']['group_id'] == $this->user->group_id)) {
                 $this->redirect[] = array('text' => '', 'href' => $this->forward);
                 $this->message('您无权限在该角色组下添加新用户', self::MSG_ERROR, true);
             }
             $update_data = array('user_name' => $_POST['Admin']['user_name'], 'realname' => $_POST['Admin']['realname'], 'email' => $_POST['Admin']['email'], 'password' => $password, 'group_id' => isset($_POST['Admin']['group_id']) ? $_POST['Admin']['group_id'] : $user['group_id'], 'purviews' => isset($_POST['Admin']['purviews']) ? $_POST['Admin']['purviews'] : $user['purviews'], 'user_rank' => isset($_POST['Admin']['user_rank']) ? $_POST['Admin']['user_rank'] : $user['user_rank'], 'status' => isset($_POST['Admin']['status']) ? $_POST['Admin']['status'] : $user['status'], 'lasttime' => $_SERVER['REQUEST_TIME']);
         }
         $flag = $this->db->update('{{admin}}', $update_data, 'user_id=:user_id', array(':user_id' => $id));
         if ($flag) {
             //记录操作日志
             $message = '{user_name}修改了管理员{administrator}信息';
             if ($administrator != $_POST['Admin']['user_name']) {
                 $message .= ',改名为:{new_administrator}';
             }
             $data = array('administrator' => $administrator, 'new_administrator' => $_POST['Admin']['user_name'], 'data' => $_POST['Admin']);
             UserLogsModel::inst()->add('Admin/Admin', $id, 'Insert', 'success', $message, $data);
             $this->redirect[] = array('text' => '', 'href' => $this->forward);
             $this->message('修改管理员资料完成', self::MSG_SUCCESS, true);
         }
     }
     $groups = Group::getGroupsByOwner($this->user->group_id);
     $purviews = PurviewModel::getPurviewsByOwner($this->user->group_id, $this->user->id);
     $this->render('update', array('user' => $user, 'groups' => $groups, 'purviews' => $purviews));
 }
Ejemplo n.º 3
0
 /**
  * Updates a particular model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id the ID of the model to be updated
  */
 public function updateAction($id)
 {
     $group = GroupModel::inst()->getGroupById($id);
     if ($group['is_system'] == '1') {
         $this->redirect[] = array('text' => '用户组列表', 'href' => $this->forward);
         $this->message('系统组不能被修改', self::MSG_ERROR, true);
     }
     if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['Group'])) {
         $allow_groups = GroupModel::inst()->getGroupsByOwner($this->user->group_id);
         if ($allow_groups[$this->user->group_id]['purviews'] != 'all' && !isset($allow_groups[$_POST['Group']['parent_id']])) {
             $this->redirect[] = array('text' => '', 'href' => $this->forward);
             $this->message('您无权限在该用户组下添加子用户组', self::MSG_ERROR, true);
         }
         $_POST['Group']['purviews'] = isset($_POST['Group']['purviews']) ? json_encode($_POST['Group']['purviews']) : json_encode(array());
         $update_data = array('group_name' => $_POST['Group']['group_name'], 'parent_id' => $_POST['Group']['parent_id'], 'purviews' => $_POST['Group']['purviews'], 'group_rank' => $_POST['Group']['group_rank'], 'lasttime' => $_SERVER['REQUEST_TIME']);
         $flag = $this->db->update('{{group}}', $update_data, 'group_id=:group_id', array(':group_id' => $id));
         if ($flag) {
             //更新缓存
             GroupModel::inst()->updateCache();
             //记录操作日志
             $message = '{user_name}修改了用户组{group_name}';
             if ($group['group_name'] != $_POST['Group']['group_name']) {
                 $message .= ',改名为:{new_group_name}';
             }
             $data = array('group_name' => $group['group_name'], 'new_group_name' => $_POST['Group']['group_name'], 'data' => array('old' => $group, 'new' => $_POST['Group']));
             UserLogsModel::inst()->add('Admin/Group', $id, 'Modify', 'success', $message, $data);
             $this->redirect[] = array('text' => '', 'href' => $this->forward);
             $this->message('修改用户组完成', self::MSG_SUCCESS, true);
         } else {
             $this->message('修改用户组信息失败', self::MSG_ERROR, false);
         }
     }
     $groups = GroupModel::inst()->getGroupsByOwner($this->user->group_id);
     $purviews = PurviewModel::inst()->getPurviewsByOwner($this->user->group_id, $this->user->id);
     $this->getView()->assign(array('my_group_id' => $this->user->group_id, 'group' => $group, 'groups' => $groups, 'purviews' => $purviews));
 }
Ejemplo n.º 4
0
Archivo: User.php Proyecto: nbaiwan/yav
 public static function getAccessList($group_id, $user_pids = '')
 {
     if ($user_pids != '') {
         $user_pids = json_decode($user_pids, true);
     } else {
         $user_pids = array();
     }
     if (isset($this->cache)) {
         $groups = $this->cache->get('user.roles');
         $purviews = $this->cache->get('user.purviews');
     }
     if (empty($groups)) {
         $groups = GroupModel::getGroupsByCache();
         //Role::getRoles();
     }
     if (empty($purviews)) {
         $purviews = PurviewModel::getPurviewsByCache();
     }
     if (empty($groups)) {
         return array();
     }
     $group_pids = $groups[$group_id]['purviews'];
     if ($group_pids != 'all') {
         $group_pids = json_decode($group_pids, true);
         $pids = is_array($group_pids) && is_array($user_pids) ? array_merge($group_pids, $user_pids) : array();
     }
     $ret = array();
     foreach ($purviews as $_k => $_v) {
         if ($group_pids == 'all' || in_array($_v['purview_id'], $pids)) {
             $ret[] = $_v['identify_tree'];
         }
     }
     return $ret;
 }
Ejemplo n.º 5
0
 /**
  * 强制更新缓存
  */
 public function updateCache()
 {
     //
     self::$__puviews = null;
     //
     if (isset($this->cache)) {
         self::$__puviews = $this->buildPurviewsList();
         $this->cache->set('admin.purviews', self::$__puviews);
     }
     return true;
 }