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
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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']);
}
}