redirect(url('/admin/login/index')); } $this->authCheck(); // $this->quanxian=\session("quanxian"); // $this->adminid=\session("adminid"); // $this->project=\session("project"); } /** * 验证权限 */ public function authCheck(){ $allow = [ 'index/index', 'index/main', 'index/cleardata', 'index/logout', 'login/password', ]; $route = strtolower(Request::controller()).'/'.strtolower(Request::action()); if(session('admin.id')!==1){ $this->hrefId = Db::name('auth_rule')->where('href',$route)->value('id'); //当前管理员权限 $map['a.id'] = Session::get('admin.id'); // dump( $map );die(); $is_admin=Session::get("is_admin"); if ($is_admin){ $rules= AuthGroup::where(["id"=>2])->value("rules"); }else{ $rules=Db::name('admin')->alias('a') ->join('auth_group ag','a.group_id = ag.id','left') ->where($map) ->value('ag.rules'); } //用户权限规则id $adminRules = explode(',',$rules); // 不需要权限的规则id; $noruls = AuthRule::where('auth_open',1)->column('id'); $this->adminRules = array_merge($adminRules,$noruls); if($this->hrefId){ // 不在权限里面,并且请求为post if(!in_array($this->hrefId,$this->adminRules)){ $this->error(lang('permission denied'));exit(); } }else{ if(!in_array($route,$allow)) { $this->error(lang('permission denied')); exit(); } } } return $this->adminRules; } /** * 退出登录 */ public function logout() { Session::clear(); $this->success(lang('logout success'), '@admin/login'); } /* * 修改密码 */ public function password(){ if (!Request::isPost()){ return View::fetch('login/password'); }else{ if( Request::isPost() and Session::get('admin.id')===3){ $this->error(lang('test data cannot edit')); } $data = Request::post(); $oldpassword = Request::post('oldpassword', '123456', 'lemo\helper\StringHelper::filterWords'); $admin = Admin::find($data['id']); if(!password_verify($oldpassword, $admin['password'])){ $this->error(lang('origin password error')); } $password = Request::post('password', '123456','lemo\helper\StringHelper::filterWords'); try { $data['password'] = password_hash($password,PASSWORD_BCRYPT, SignHelper::passwordSalt()); if(Session::get('admin.id')==1){ Admin::update($data); }elseif(Session::get('admin.id')==$data['id']){ Admin::update($data); }else{ $this->error(lang('permission denied')); } } catch (\Exception $e) { $this->error($e->getMessage()); } $this->success(lang('edit success')); } } public function base(){ if (!Request::isPost()){ return View::fetch('admin/password'); }else{ $data = Request::post(); $admin = Admin::find($data['id']); $oldpassword = Request::post('oldpassword', '123456', 'lemo\helper\StringHelper::filterWords'); if(!password_verify($oldpassword, $admin['password'])){ $this->error(lang('origin password error')); } $password = Request::post('password', '123456','lemo\helper\StringHelper::filterWords'); try { $data['password'] = password_hash($password,PASSWORD_BCRYPT, SignHelper::passwordSalt()); if(Session::get('admin.id')==1){ Admin::update($data); }elseif(Session::get('admin.id')==$data['id']){ Admin::update($data); }else{ $this->error(lang('permission denied')); } } catch (\Exception $e) { $this->error($e->getMessage()); } $this->success(lang('edit success')); } } /* * 清除缓存 出去session缓存 */ public function clearData(){ $dir = config('admin.clear_cache_dir') ? app()->getRootPath().'runtime/admin' : app()->getRootPath().'runtime'; $cache = app()->getRootPath().'runtime/cache'; if(is_dir($cache)){ FileHelper::delDir($cache); } if(FileHelper::delDir($dir) ){ $this->success('清除成功'); } } }