/**
  * Handle an incoming request.
  * @param $request
  * @param callable $next
  * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
  * @throws UnLoginException
  */
 public function handle($request, Closure $next)
 {
     $resource = $this->processPermissionResource($request);
     $url = "/auth/";
     if ($resource == null || $this->user == null) {
         //            return redirect($url);
         throw new UnLoginException("没有登录", 10001, array("url" => $url));
     }
     $admin = DeepinAuthAdministrator::find($this->user->getUid());
     if (!$admin instanceof DeepinAuthAdministrator) {
         return redirect($url);
         //用户已经被删除
     }
     if (intval($admin->uid()) != 1) {
         //只有这个用户可以免除所有的权限验证
         $isOk = $this->checkPermission($admin, $resource);
         //检查权限
         if ($isOk == false) {
             $url = \Request::header("Referer");
             if (empty($url)) {
                 $url = "/admin/app";
             }
             //                return redirect($url);
             throw new UnLoginException("没有权限", 10002, array("url" => $url));
         }
     }
     return $next($request);
 }
 /**
  * 处理登陆操作
  * @return \Illuminate\Http\RedirectResponse
  * @throws LoginException
  */
 public function doLogin()
 {
     $username = \Input::get("username", null);
     $password = \Input::get("password", null);
     if (empty($username) || empty($password)) {
         throw new LoginException("账号密码不能为空~!");
     }
     $user = $this->findByUser($username);
     if (!$user instanceof DeepinAuthAdministrator) {
         throw new LoginException("账号密码错误~!");
     }
     if ($user->verifyPwd($password) == false) {
         throw new LoginException("账号密码错误~!");
     }
     $loginUser = new User($username, $user->uid(), $user->gid());
     \Session::put("user", $loginUser->__toString());
     //加入到session里面
     $user->lastLoginTime(time());
     $user->save();
     return \Response::redirectTo("/admin/app");
 }
 /**
  * Register bindings in the container.
  *
  * @return void
  */
 public function boot()
 {
     // 使用类来指定视图组件
     // 使用闭包来指定视图组件
     View::composer('*', function ($view) {
         $menu = array();
         $menu["shop"] = array("/admin/layout" => array("menus" => array("/admin/layout" => "首页"), "name" => "首页"), "/admin/app" => array("menus" => array("/admin/app" => "商店应用"), "name" => "商店应用"), array("menus" => array("/admin/topic_category" => "分类管理", "/admin/topic" => "专题管理"), "name" => "专题"), "/admin/column" => array("menus" => array("/admin/column" => "栏目"), "name" => "栏目"), "/admin/mirror" => array("name" => "镜像源", "menus" => array("/admin/mirror" => "镜像源")), "/admin/slider" => array("name" => "大图轮播", "menus" => array("/admin/slider" => "大图轮播")), array("menus" => array("/admin/rank_category" => "榜单分类", "/admin/rank" => "榜单"), "name" => "排行榜"));
         //商店相关的菜单
         $menu["sys"] = array("/admin/auth/resource" => array("name" => "权限资源", "menus" => array("/admin/auth/resource" => "权限资源")), "/admin/auth/group" => array("name" => "管理员组", "menus" => array("/admin/auth/group" => "管理员组")), "/admin/auth/administrator" => array("name" => "管理员", "menus" => array("/admin/auth/administrator" => "管理员")));
         //系统管理相关的菜单
         $menu['repository'] = array("/admin/source" => array("name" => "应用原始信息", "menus" => array("/admin/source" => "应用原始信息")), "/admin/repository" => array("name" => "应用元信息", "menus" => array("/admin/repository" => "应用元信息")));
         //镜像信息
         $url = "/" . \Input::get("_url");
         foreach ($menu as $key => $sub) {
             foreach ($sub as $k => $item) {
                 if (in_array($url, array_keys($item['menus']))) {
                     $menu[$key][$k]['is_active'] = true;
                 }
             }
         }
         $view->with("menu", $menu);
         //地区语言相关
         $locals = ShopLocal::all();
         $view->with("locals", $locals);
         $view->with("static_path", "");
         //静态文件地址
         $view->with("pic_url", "//api.deepin.org");
         //资源图片地址
         $user = null;
         $session = \Session::get("user");
         if (!empty($session)) {
             $user = User::sessionToVo($session);
         }
         $view->with("userSession", $user);
     });
 }