11package org .linlinjava .litemall .admin .web ;
22
3+ import io .swagger .models .auth .In ;
34import org .apache .commons .logging .Log ;
45import org .apache .commons .logging .LogFactory ;
6+ import org .apache .shiro .SecurityUtils ;
57import org .apache .shiro .authz .annotation .RequiresPermissions ;
8+ import org .apache .shiro .subject .Subject ;
69import org .linlinjava .litemall .admin .annotation .RequiresPermissionsDesc ;
710import org .linlinjava .litemall .admin .util .AdminResponseCode ;
811import org .linlinjava .litemall .admin .util .Permission ;
2528import org .springframework .web .bind .annotation .*;
2629
2730import javax .validation .constraints .NotNull ;
31+ import java .security .Security ;
2832import java .util .*;
2933
30- import static org .linlinjava .litemall .admin .util .AdminResponseCode .ROLE_NAME_EXIST ;
31- import static org .linlinjava .litemall .admin .util .AdminResponseCode .ROLE_USER_EXIST ;
34+ import static org .linlinjava .litemall .admin .util .AdminResponseCode .*;
3235
3336@ RestController
3437@ RequestMapping ("/admin/role" )
@@ -159,15 +162,15 @@ private List<PermVo> getSystemPermissions() {
159162 return systemPermissions ;
160163 }
161164
162- private Set <String > getAssignedPermissions (Integer roleId ) {
165+ private Set <String > getAssignedPermissions (List < Integer > roleIds ) {
163166 // 这里需要注意的是,如果存在超级权限*,那么这里需要转化成当前所有系统权限。
164167 // 之所以这么做,是因为前端不能识别超级权限,所以这里需要转换一下。
165168 Set <String > assignedPermissions = null ;
166- if (permissionService .checkSuperPermission (roleId )) {
169+ if (permissionService .checkSuperPermission (roleIds )) {
167170 getSystemPermissions ();
168171 assignedPermissions = systemPermissionsString ;
169172 } else {
170- assignedPermissions = permissionService .queryByRoleId (roleId );
173+ assignedPermissions = permissionService .queryByRoleId (roleIds );
171174 }
172175
173176 return assignedPermissions ;
@@ -176,18 +179,38 @@ private Set<String> getAssignedPermissions(Integer roleId) {
176179 /**
177180 * 管理员的权限情况
178181 *
179- * @return 系统所有权限列表和管理员已分配权限
182+ * @return 系统所有权限列表、角色权限、管理员已分配权限
180183 */
181184 @ RequiresPermissions ("admin:role:permission:get" )
182185 @ RequiresPermissionsDesc (menu = {"系统管理" , "角色管理" }, button = "权限详情" )
183186 @ GetMapping ("/permissions" )
184187 public Object getPermissions (Integer roleId ) {
185188 List <PermVo > systemPermissions = getSystemPermissions ();
186- Set <String > assignedPermissions = getAssignedPermissions (roleId );
189+
190+ // 这里需要注意的是,如果存在超级权限*,那么这里需要转化成当前所有系统权限。
191+ // 之所以这么做,是因为前端不能识别超级权限,所以这里需要转换一下。
192+ Set <String > assignedPermissions = null ;
193+ if (permissionService .checkSuperPermission (roleId )) {
194+ getSystemPermissions ();
195+ assignedPermissions = systemPermissionsString ;
196+ } else {
197+ assignedPermissions = permissionService .queryByRoleId (roleId );
198+ }
199+
200+ Subject currentUser = SecurityUtils .getSubject ();
201+ LitemallAdmin currentAdmin = (LitemallAdmin ) currentUser .getPrincipal ();
202+ Integer [] roles = currentAdmin .getRoleIds ();
203+ List <Integer > roleIds = Arrays .asList (roles );
204+ Set <String > curPermissions = null ;
205+ if (!permissionService .checkSuperPermission (roleIds )) {
206+ curPermissions = permissionService .queryByRoleId (roleIds );
207+ }
208+
187209
188210 Map <String , Object > data = new HashMap <>();
189211 data .put ("systemPermissions" , systemPermissions );
190212 data .put ("assignedPermissions" , assignedPermissions );
213+ data .put ("curPermissions" , curPermissions );
191214 return ResponseUtil .ok (data );
192215 }
193216
0 commit comments