/** * 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); }); }