You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/application/controllers/accessmanage.php

384 lines
14 KiB
PHTML

<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Accessmanage extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->permission->is_admin();
//$this->output->enable_profiler(TRUE);
$this->load->model('InfoStructures_model');
$this->load->model('infoAccessmanage_model','Access_model');
$this->load->library('Accesscheck');
$this->accesscheck->check_access();
}
//权限管理首页
public function index($iam_is_id='',$editsite='')
{
$data=array();
//获取用户树形结构数据
$data['userstructure'] = $this->Access_model->get_user_structure();
if ($iam_is_id=='') {
$iam_is_id = $data['userstructure'][0]->id;
}
//未添加的用户
$data['undefined_ht_user']=$this->Access_model->get_ht_user_list(true);
$data['undefined_a_user']=$this->Access_model->get_author_user_list(true);
//获取站点、角色列表
$data['role_list']=$this->Access_model->get_role_structure();
$site_list=$this->Access_model->get_user_site_list_by_isid($iam_is_id);
$data['user_site'] = array();
if(isset($site_list))$data['user_site'] = explode(',', $site_list);
//设置默认站点
if ($editsite=='' && !empty($data['user_site'])) {
$c_site=$this->config->item('site_code');
if (in_array($c_site, $data['user_site'])) {
$editsite=$this->config->item('site_code');
}else{
$editsite=$data['user_site'][0];
}
}elseif($editsite==''){
$editsite=$this->config->item('site_code');
}
//要编辑的用户权限数据
$data['user_access']=$this->Access_model->get_user_by_isid($iam_is_id,$editsite);
if (!empty($data['user_access'])) {
if(isset($data['user_access']->iao_role))$data['user_access']->iao_role=substr($data['user_access']->iao_role,0, -1);
}
//获取拥有的角色
$data['current_role'] = array();
if(isset($data['user_access']->iao_role))$data['current_role'] = explode(',', $data['user_access']->iao_role);
$data['user_level']=$this->accesscheck->get_role_level($editsite,$data['user_access']->iao_author);
if(!$this->config->item('check_access'))$data['user_level']=100;
//获取wo可以管理的站点、角色等级
$userdata=$this->session->userdata('session_admin');
$data['editsite']=$editsite;
if (in_array(strtolower($userdata['OPI_Code']), $this->config->item('access_super_manage'))) {
$data['role_level']=1;
}else{
$data['role_level']=$this->accesscheck->get_role_level($editsite);
}
$data['current_admin']=$userdata['OPI_Code'];
if ($data['role_level']==1 OR !$this->config->item('check_access')) {
foreach ($this->config->item('site') as $s) {
$data['admin_access_site'][] = $s['site_code'];
}
}else{
$admin_access_site=$this->Access_model->get_user_site_list($data['current_admin']);
if(isset($admin_access_site))$data['admin_access_site'] = explode(',', $admin_access_site);
}
//加载视图
$data['right_nav']=$this->load->view('bootstrap/accessmanage/right_nav',$data,true);
$this->load->view('bootstrap/header',$data);
$this->load->view('bootstrap/accessmanage/index');
$this->load->view('bootstrap/footer');
}
//添加用户
public function adduser($is_parent_id=0,$iam_author='New User',$isajax=1)
{
//添加空内容.
$insert_id=$this->InfoStructures_model->Add($is_parent_id);
if ($this->Access_model->add_access($iam_author,$insert_id)){
$data[] = array('name' => 'ok', 'value' => $insert_id);
}else{
$data[] = array('name' => 'no', 'value' => $this->lang->line('form_info_error'));
}
if ($isajax==1) {
echo json_encode($data);
return TRUE;
}else{
redirect(site_url("accessmanage/index/$insert_id"));
}
}
//导入ht和作者平台用户
public function edituser($is_parent_id){
$ht_user_list=$this->Access_model->get_ht_user_list();
$author_user_list=$this->Access_model->get_author_user_list();
foreach ($ht_user_list as $h) {
$insert_id=$this->InfoStructures_model->Add($is_parent_id);
$this->Access_model->add_access($h->OPI_Code,$insert_id);
}
foreach ($author_user_list as $a) {
$insert_id=$this->InfoStructures_model->Add($is_parent_id);
$this->Access_model->add_access($a->a_id,$insert_id);
}
}
//用户权限编辑
public function editaccess(){
$iao_read = $this->input->post('iao_read');
$iao_write = $this->input->post('iao_write');
$iao_author = $this->input->post('iao_author');
$iao_site = $this->input->post('iao_site');
//组装用户拥有的角色字符串
$is_edit_ownsite=false;
if ($iao_site!='') {
$iao_role = '';
$role_list=$this->input->post('role_list');
if (!empty($role_list)) {
foreach ($role_list as $v) {
$iao_role.=$v.',';
}
}
//更新用户在各站点可以编辑的具体的信息节点和角色
$is_edit_ownsite=$this->Access_model->update_ownsite($iao_read,$iao_write,$iao_author,$iao_site,$iao_role);
}
$iam_author=$this->input->post('iam_author');
$is_updateuser=false;
if($iao_author!=trim($iam_author))$is_updateuser=$this->Access_model->update_access($this->input->post('iam_id'),trim($iam_author));
if ($is_edit_ownsite or $is_updateuser) {
$data[] = array('name' => 'ok', 'value' => 'success');
}else{
$data[] = array('name' => 'no', 'value' => 'error');
}
echo json_encode($data);
return true;
}
//分配站点
public function addsite($author,$site){
if (!empty($site) && !empty($author)) {
$this->Access_model->add_site($author,$site);
}
header('Location: '.$_SERVER['HTTP_REFERER']);
}
//取消用户在某站点的权限
public function deletesite($author,$site){
if (!empty($site) && !empty($author)) {
$this->Access_model->delete_site($author,$site);
}
header('Location: '.$_SERVER['HTTP_REFERER']);
}
//删除某个用户
public function delete_user(){
if($this->Access_model->delete_user($this->input->post('iam_id'))){
$this->Access_model->delete_site($this->input->post('iam_author'));
$data[] = array('name' => 'ok', 'value' => site_url('accessmanage/index'));
}else{
$data[] = array('name' => 'no', 'value' => 'delete error');
}
echo json_encode($data);
return true;
}
//角色管理首页
public function role($iar_is_id=''){
$data=array();
//查询结构列表信息
$data['rolestructure'] = $this->Access_model->get_role_structure();
if (empty($data['rolestructure'])) {
$this->addrole(0,false);
redirect(site_url("accessmanage/role"));
}
if ($iar_is_id=='') {
$iar_is_id = $data['rolestructure'][0]->id;
}
//当前角色拥有的权限节点
$data['current_role']=$this->Access_model->get_role_by_isid($iar_is_id);
if (substr($data['current_role']->ian_iaa_id, -1)==',') {
$data['current_role']->ian_iaa_id=substr($data['current_role']->ian_iaa_id,0, -1);
}
$data['current_action'] = explode(',', $data['current_role']->ian_iaa_id);
//所有权限节点列表
$data['action_list']=$this->Access_model->get_structure_list();
$methodnode=array();
foreach ($data['action_list'] as $k=>$v) {
if ($v->pId==$data['action_list'][0]->id) {
$actionnode[]=$v;
}elseif ($k!=0) {
$methodnode[$v->pId][]=$v;
}
}
$data['actionnode']=$actionnode;
$data['methodnode']=$methodnode;
//加载视图
$data['right_nav']=$this->load->view('bootstrap/accessmanage/right_nav','$data',true);
$this->load->view('bootstrap/header',$data);
$this->load->view('bootstrap/accessmanage/role');
$this->load->view('bootstrap/footer');
}
//添加角色
public function addrole($is_parent_id,$is_ajax=true)
{
$insert_id = $this->InfoStructures_model->Add($is_parent_id);
if ($insert_id && $roleid=$this->Access_model->add_role('New Role',$insert_id)){
$data[] = array('name' => 'ok', 'value' => $insert_id);
}else{
$data[] = array('name' => 'no', 'value' => $this->lang->line('form_info_error'));
}
if ($is_ajax) {
echo json_encode($data);
return TRUE;
}
return $insert_id;
}
//角色编辑
public function editrole()
{
//更新角色名
if ($this->input->post('iar_old_name')!=$this->input->post('iar_name')) {
$this->Access_model->update_role($this->input->post('iar_id'),$this->input->post('iar_name'));
}
//父级权限节点拥有其全部子节点的权限
$actions=$this->input->post('action_list');
$action_ids='';
foreach ($actions as $v) {
$action_ids.=$v.',';
}
//如果是新的权限节点关系,则执行添加操作
if ($this->input->post('ian_iaa_id')=='') {
$result=$this->Access_model->add_node($this->input->post('iar_id'),$action_ids);
}
//如果节点关系已经存在,则执行更新操作
else{
$result=$this->Access_model->update_node($this->input->post('iar_id'),$action_ids);
}
//返回编辑结果
if ($result) {
$data[] = array('name' => 'ok', 'value' => 'success');
}else{
$data[] = array('name' => 'no', 'value' => 'error');
}
echo json_encode($data);
return true;
}
//删除角色
public function delete_role(){
if($this->Access_model->delete_role($this->input->post('iar_id'))){
$this->session->unset_userdata('access_module');
$data[] = array('name' => 'ok', 'value' => site_url('accessmanage/role'));
}else{
$data[] = array('name' => 'no', 'value' => 'delete error');
}
echo json_encode($data);
return true;
}
//移动角色排序顺序
public function tree_move()
{
//网站会提交一个同级节点id列表字符串按照这个去排序
$parent_id = $this->input->post('pid');
$idsStr = $this->input->post('ids');
$idsArray = explode(',', $idsStr);
foreach ($idsArray as $key => $value)
{
if ($value)
{
//设置排序
$this->InfoStructures_model->set_sort($value, $key);
//设置path
$this->InfoStructures_model->set_path($parent_id, $value);
}
}
$data[] = array('name' => 'ok', 'value' => $this->lang->line('structures_success_move'));
echo json_encode($data);
return TRUE;
}
//操作节点管理
public function action($iaa_is_id='')
{
//查询结构列表信息
$data['structurelist'] = $this->Access_model->get_structure_list();
if (empty($data['structurelist'])) {
$this->addaction(0,false);
redirect(site_url("accessmanage/action"));
}
if ($iaa_is_id=='') {
$iaa_is_id = $data['structurelist'][0]->id;
}
//当前权限节点
$data['current_action'] = $this->Access_model->get_action_bytreeid($iaa_is_id);
//视图加载
$data['right_nav']=$this->load->view('bootstrap/accessmanage/right_nav',$data,true);
$this->load->view('bootstrap/header',$data);
$this->load->view('bootstrap/accessmanage/action');
$this->load->view('bootstrap/footer');
}
//添加操作节点
public function addaction($is_parent_id,$is_ajax=true)
{
$insert_id = $this->InfoStructures_model->Add($is_parent_id);
if ($insert_id && $iaa_id=$this->Access_model->add_action('New Action',$insert_id)){
$this->session->unset_userdata('access_module');
$data[] = array('name' => 'ok', 'value' => $insert_id);
}else{
$data[] = array('name' => 'no', 'value' => $this->lang->line('form_info_error'));
}
if ($is_ajax) {
echo json_encode($data);
return TRUE;
}
return $insert_id;
}
//操作节点编辑
public function edit_action(){
$result=$this->Access_model->update_action(
$this->input->post('iaa_title'),
$this->input->post('iaa_controller'),
$this->input->post('iaa_action'),
$this->input->post('iaa_id')
);
if($result){
$this->session->unset_userdata('access_module');
$data[] = array('name' => 'ok', 'value' => 'success');
}else{
$data[] = array('name' => 'no', 'value' => $this->lang->line('form_info_error'));
}
echo json_encode($data);
return true;
}
//删除权限节点
public function delete_action(){
if($this->Access_model->delete_action($this->input->post('iaa_id'))){
$this->InfoStructures_model->Delete($this->input->post('iaa_is_id'));
$this->session->unset_userdata('access_module');
$data[] = array('name' => 'ok', 'value' => site_url('accessmanage/action'));
}else{
$data[] = array('name' => 'no', 'value' => 'delete error');
}
echo json_encode($data);
return true;
}
public function addeditor($user,$site)
{
$result=0;
$iao_other = $this->input->get('iao_other');
$update_result=$this->Access_model->update_site($user,$site,$iao_other);
if($update_result) $result=1;
echo $result;
}
//取消用户在某站点的权限
public function deleteeditor($author,$site){
if (!empty($site) && !empty($author)) {
$this->Access_model->delete_site($author,$site);
}
header('Location: '.$_SERVER['HTTP_REFERER']);
}
}