1313use App \Business \AuthBusiness \CurAuthSubject ;
1414use App \Business \AuthBusiness \UserAuthBusiness ;
1515use App \Business \PlatformBusiness \PlatformClass ;
16+ use App \Business \RBACBusiness \PermissionBusiness ;
17+ use App \Business \RBACBusiness \RBACBusiness ;
1618use App \Entity \UserAuth ;
1719use App \Repository \AdminRepository ;
1820use PHPZlc \Admin \Strategy \AdminStrategy ;
2123use PHPZlc \PHPZlc \Bundle \Controller \SystemBaseController ;
2224use PHPZlc \PHPZlc \Doctrine \ORM \Rule \Rule ;
2325use PHPZlc \PHPZlc \Responses \Responses ;
26+ use Symfony \Component \HttpFoundation \JsonResponse ;
2427use Symfony \Component \HttpFoundation \RedirectResponse ;
2528use Symfony \Component \HttpFoundation \Response ;
2629
@@ -54,11 +57,17 @@ class AdminController extends SystemBaseController
5457 */
5558 protected $ page_tag ;
5659
60+ /**
61+ * @var RBACBusiness
62+ */
63+ protected $ rbac ;
64+
5765 public function inlet ($ returnType = SystemBaseController::RETURN_HIDE_RESOURCE , $ isLogin = true )
5866 {
5967 PlatformClass::setPlatform ($ this ->getParameter ('platform_admin ' ));
6068
6169 $ this ->adminRepository = $ this ->getDoctrine ()->getRepository ('App:Admin ' );
70+ $ this ->rbac = new RBACBusiness ($ this ->container , PlatformClass::getPlatform ());
6271
6372 //菜单
6473 $ menus = [
@@ -89,6 +98,7 @@ public function inlet($returnType = SystemBaseController::RETURN_HIDE_RESOURCE,
8998 ->setSettingPwdUrl ($ this ->generateUrl ('admin_manage_edit_password ' ))
9099 ->setMenuModel (AdminStrategy::menu_model_simple)
91100 ->setPageTag ($ this ->page_tag )
101+ ->setClearCacheApiUrl ($ this ->generateUrl ('admin_manage_clearCache ' ))
92102 ->setLogo ($ this ->adminStrategy ->getBaseUrl () . '/asset/logo.png ' )
93103 ->setMenus ($ menus );
94104
@@ -115,11 +125,19 @@ public function inlet($returnType = SystemBaseController::RETURN_HIDE_RESOURCE,
115125 $ this ->adminStrategy ->setAdminName (CurAuthSubject::getCurUser ()->getAccount ());
116126 $ this ->adminStrategy ->setAdminRoleName (CurAuthSubject::getCurUser ()->getName ());
117127
128+ $ this ->rbac ->setIsSuper (CurAuthSubject::getCurUser ()->getIsSuper ());
118129
119130 //对路由进行权限校验
120-
131+ if (!$ this ->rbac ->canRoute ($ this ->get ('request_stack ' )->getCurrentRequest ()->get ('_route ' ))){
132+ if (self ::getReturnType () == SystemBaseController::RETURN_HIDE_RESOURCE ){
133+ return Responses::error ('权限不足 ' );
134+ }else {
135+ return $ this ->render ('@PHPZlcAdmin/page/no_permission.html.twig ' );
136+ }
137+ }
121138
122139 //对菜单进行权限筛选
140+ $ this ->adminStrategy ->setMenus ($ this ->rbac ->menusFilter ($ this ->adminStrategy ->getMenus ()));
123141 }
124142
125143 return true ;
@@ -145,6 +163,29 @@ public function index()
145163 return $ this ->render ('admin/auth/login.html.twig ' );
146164 }
147165
166+ /**
167+ * 清除缓存
168+ *
169+ * @return bool|JsonResponse|RedirectResponse|Response
170+ */
171+ public function clearCache ()
172+ {
173+ $ r = $ this ->inlet ();
174+ if ($ r !== true ){
175+ return $ r ;
176+ }
177+
178+ (new PermissionBusiness ($ this ->container ))->builtUpdatePermission ();
179+
180+ $ this ->get ('session ' )->remove (($ this ->rbac ->getCacheSessionName ()));
181+
182+ if (Errors::isExistError ()){
183+ return Responses::error (Errors::getError ());
184+ }
185+
186+ return Responses::success ('缓存清除成功 ' );
187+ }
188+
148189 /**
149190 * 时间段筛选
150191 *
0 commit comments