<?php  
 | 
  
 | 
/** 
 | 
 * 角色控制器 
 | 
 */ 
 | 
  
 | 
class RoleController extends System_Controller_Admin{ 
 | 
  
 | 
    public function init(){ 
 | 
        parent::init(); 
 | 
        $this->role_service = new Service_Role(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 角色列表 
 | 
     */ 
 | 
    public function ListAction(){ 
 | 
        if($this->getRequest()->isXmlHttpRequest()){ 
 | 
            $total = $this->role_service->getRoleListTotal(); 
 | 
            $data['draw'] = !empty($_REQUEST['draw'])?$_REQUEST['draw']:1; 
 | 
            $data['start'] = !empty($_REQUEST['start'])?$_REQUEST['start']:0; 
 | 
            $data['length'] = !empty($_REQUEST['length'])?$_REQUEST['length']:10; 
 | 
            $data['recordsTotal'] = $total; 
 | 
            $data['recordsFiltered'] = $total; 
 | 
            $data['data'] = $this->role_service->getRoleList(array(), array(), array(), $data['length'], $data['start']); 
 | 
            exit($this->sendToDataTable($data)); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 添加角色 
 | 
     */ 
 | 
    public function AddAction(){ 
 | 
         
 | 
        if($this->getRequest()->isXmlHttpRequest()){ 
 | 
            $data['name'] = $this->post('name'); 
 | 
            if(!$this->_checkRoleName($data['name'])){ 
 | 
                exit($this->showError('用户组名已经存在,无法创建', 400, true)); 
 | 
            } 
 | 
            $data['description'] = $this->post('description'); 
 | 
            $data['create_time'] = date('Y-m-d H:i:s', time()); 
 | 
            $data['edit_time'] = $data['create_time']; 
 | 
            $data['modules'] = implode(',', $this->post('actions')); 
 | 
             if($this->role_service->add($data)){ 
 | 
                 //更新角色权限 
 | 
                 Util::updateRoleAuth(); 
 | 
                 //$this->redis->set('role_modules', $data['modules']); 
 | 
                exit($this->showSuccess('用户组添加成功', true)); 
 | 
            } 
 | 
            else{ 
 | 
                exit($this->showError($this->role_service->error, 400, true)); 
 | 
            } 
 | 
        } 
 | 
        $this->getView()->assign('modules', $this->redis->get('modules')); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 修改角色 
 | 
     */ 
 | 
    public function EditAction($id){ 
 | 
        $role = $this->role_service->getRoleInfo(array('_id' => $id)); 
 | 
        if($role){ 
 | 
            if($this->getRequest()->isXmlHttpRequest()){ 
 | 
                $data['name'] = $this->post('name'); 
 | 
                if($role['name'] != $data['name']){ 
 | 
                    if(!$this->_checkRoleName($data['name'])){ 
 | 
                        exit($this->showError('用户组名已经存在,无法创建', 400, true)); 
 | 
                    } 
 | 
                } 
 | 
                $data['description'] = $this->post('description'); 
 | 
                $data['modules'] = implode(',', $this->post('actions')); 
 | 
                $data['edit_time'] = date('Y-m-d H:i:s', time()); 
 | 
                if($this->role_service->update($data, array('_id' => $id))){ 
 | 
                    //更新角色权限 
 | 
                     Util::updateRoleAuth(); 
 | 
                    exit($this->showSuccess('用户修改成功', true)); 
 | 
                } 
 | 
                else{ 
 | 
                    exit($this->showError($this->user_service->error, 400, true)); 
 | 
                } 
 | 
            } 
 | 
            $this->getView()->assign(array('modules' => $this->redis->get('modules'), 'role' => $role)); 
 | 
        } 
 | 
        else{ 
 | 
            $this->redirect('/error/show/type/no_data'); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 验证用户组名是否存在 
 | 
     */ 
 | 
    public function CheckRoleNameAction(){ 
 | 
        $name = $this->post('name'); 
 | 
        $result = $this->_checkRoleName($name); 
 | 
        if($this->isAjax()){ 
 | 
            exit($this->send(array('valid' => $result))); 
 | 
        } 
 | 
        else{ 
 | 
            return $result; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 验证用户组名是否存在 
 | 
     * @param  [type] $phone [description] 
 | 
     * @return [type]        [description] 
 | 
     */ 
 | 
    public function _checkRoleName($name){ 
 | 
        $user = $this->role_service->getRoleInfo(array('name' => $name)); 
 | 
        if($user) 
 | 
            return false; 
 | 
        else 
 | 
            return true; 
 | 
    } 
 | 
  
 | 
} 
 |