123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- <?php
- namespace App\Http\Controllers\Admin\Base;
- use App\Http\Controllers\Admin\Controller;
- use App\Services\Admin\Role;
- use Request;
- use App\Services\Admin\Acl;
- class RoleController extends Controller
- {
- private $level;
- private $_service;
- private $_serviceDepartments;
- /**
- * 初始化Service
- */
- public function __construct()
- {
- parent::__construct();
-
- if(!$this->_service) $this->_service = new Role();
- $this->level = isset($this->_getRoleNode()->level)?$this->_getRoleNode()->level:'';
- }
-
- /**
- * 列表
- */
- function index()
- {
- if($this->_user['is_root']){
- $search['level'] = 0;
- }else{
- $search['level'] = $this->level;
- }
-
- $request = Request::all();
- $search['keyword'] = Request::input('keyword');
-
- $orderby = array();
- if(isset($request['sort_field']) && $request['sort_field'] && isset($request['sort_field_by'])) {
- $orderby[$request['sort_field']] = $request['sort_field_by'];
- }
- $list = $this->_service->search($search, $orderby);
- return view('admin.base.role.index', compact('list'));
- }
- /**
- * 创建
- */
- public function create()
- {
- if(Request::method() == 'POST'){
- if(intval(Request::input('info.level')) < $this->level){
- $this->showWarning('你无权创建该等级的角色!', urldecode(Request::input('_referer')));
- }
- if($this->_service->create(Request::input('info'))){
- $this->showMessage('操作成功', U( 'Base/Role/index'));
- }else{
- $this->showMessage('操作失败', U( 'Base/Role/index'));
- }
- }
- $level = $this->level;
- return view('admin.base.role.edit', compact('level', 'Departments'));
- }
- /**
- * 更新
- */
- public function update()
- {
- if(Request::method() == 'POST'){
- if(intval(Request::input('info.level')) < $this->level){
- $this->showWarning('你无权创建该等级的角色!', urldecode(Request::input('_referer')));
- }
- if($this->_service->update(Request::input('id'), Request::input('info'))){
- $this->showMessage('操作成功', urldecode(Request::input('_referer')));
- }else{
- $this->showWarning('操作失败', urldecode(Request::input('_referer')));
- }
- }
- $data = $this->_service->find(Request::input('id'));
- $level = $this->level;
- return view('admin.base.role.edit', compact('data', 'level', 'Departments'));
- }
-
- /**
- * 更新
- */
- public function auth()
- {
- $id = Request::input('id');
-
- $objAcl = new Acl();
-
-
- if(Request::method() == 'POST'){
- $menuIds = Request::input('menu_ids');
- if($this->_user['is_root']) {
- $allMenus = false;
- }else{
- $allMenus = array();
- foreach ($this->_user['menus'] as $value) {
- $allMenus[] = $value['id'];
- }
- }
- $ok = $objAcl->setRole($id, $menuIds,$allMenus);
- if($ok) {
- $arr['status'] = SUCESS_CODE;
-
- }else{
- $arr['status'] = SERVER_ERROR;
- }
- exit(json_encode($arr));
- }
-
- $hasPermissions = $objAcl->getAccessIDs($id);
-
- $role = session(LOGIN_MARK_SESSION_KEY);
- //为ztree做数据准备
- $zTree = []; $all = [];
- foreach($role['menus'] as $key => $value)
- {
- $arr = ['id' => $value['id'], 'pId' => $value['pid'],
- 'name' => $value['name'] . " (" . $value['path'] . ")",
- 'open' => true];
- if(in_array($value['id'], $hasPermissions)) $arr['checked'] = true;
- $zTree[] = $arr;
- $all[] = $value['id'];
- }
- $data = $this->_service->find($id);
- return view('admin.base.role.auth', compact('data','zTree','all'));
- }
-
- /**
- * 更新状态
- */
- public function status()
- {
- $bool = $this->_service->updateStatus(Request::input('id'), Request::input('status'));
- if($bool) {
- $this->showMessage('操作成功');
- }else{
- $this->showWarning('操作失败');
- }
- }
-
- /**
- * 删除
- */
- public function destroy()
- {
- $bool = $this->_service->destroy(Request::input('id'));
- if($bool) {
- $this->showMessage('操作成功');
- }else{
- $this->showWarning("操作失败");
- }
- }
-
- /**
- * 获取角色权限节点(level越小权限越大)
- */
- private function _getRoleNode()
- {
- return $this->_service->getLevelNode($this->_user['admin_role_id']);
- }
- /**
- * 获取树形结构
- */
- private function _getTreeByDepartmentId()
- {
- if($this->_user['is_root']){
- $department_id = 0;
- }else{
- $department_id = intval($this->_user['department_id']);
- }
- return $this->_serviceDepartments->getTreeByDepartmentId($department_id);
- }
-
- }
|