赵冬冬 4 år sedan
förälder
incheckning
0b0938594b

+ 11 - 9
forest-admin/admin-server/src/main/java/com/hwrj/cloud/admin/controller/UmsAdminController.java

@@ -1,16 +1,13 @@
 package com.hwrj.cloud.admin.controller;
 
 import cn.hutool.core.collection.CollUtil;
-import com.hwrj.cloud.admin.model.UmsResource;
+import com.hwrj.cloud.admin.model.*;
 import com.hwrj.cloud.admin.util.CurrUserUtil;
 import com.hwrj.cloud.common.api.CommonPage;
 import com.hwrj.cloud.common.api.CommonResult;
 import com.hwrj.cloud.admin.dto.UmsAdminLoginParam;
 import com.hwrj.cloud.admin.dto.UmsAdminParam;
 import com.hwrj.cloud.admin.dto.UpdateAdminPasswordParam;
-import com.hwrj.cloud.admin.model.UmsAdmin;
-import com.hwrj.cloud.admin.model.UmsPermission;
-import com.hwrj.cloud.admin.model.UmsRole;
 import com.hwrj.cloud.admin.service.UmsAdminCacheService;
 import com.hwrj.cloud.admin.service.UmsAdminService;
 import com.hwrj.cloud.admin.service.UmsRoleService;
@@ -28,6 +25,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.security.Principal;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -105,22 +103,26 @@ public class UmsAdminController {
         }
         String username = principal.getName();
         UmsAdmin umsAdmin = adminService.getAdminByUsername(username);
+        Long id = umsAdmin.getId();
         Map<String, Object> data = new HashMap<>();
         data.put("username", umsAdmin.getUsername());
-        data.put("menus", roleService.getMenuList(umsAdmin.getId()));
         data.put("icon", umsAdmin.getIcon());
-        List<UmsResource> resourceList = adminService.getResourceList(umsAdmin.getId());
+        List<UmsMenu> menuList = roleService.getMenuList(id);
+        data.put("menus", menuList);
+        //判断是不是admin 是admin 全部权限
+        List<UmsResource> resourceList = adminService.getResourceList(id);
         if (CollUtil.isNotEmpty(resourceList)) {
             List<String> roles = resourceList.stream().map(UmsResource::getUrl).collect(Collectors.toList());
             data.put("resource", roles);
         }
-        List<UmsRole> roleList = adminService.getRoleList(umsAdmin.getId());
+        List<UmsRole> roleList = adminService.getRoleList(id);
         if (CollUtil.isNotEmpty(roleList)) {
             List<String> roles = roleList.stream().map(UmsRole::getName).collect(Collectors.toList());
             data.put("roles", roles);
         }
         return CommonResult.success(data);
     }
+
     @Autowired
     private UmsAdminCacheService adminCacheService;
 
@@ -157,8 +159,8 @@ public class UmsAdminController {
     @ResponseBody
     public CommonResult update(@PathVariable Long id, @RequestBody @Validated UmsAdminParam umsAdminParam) {
 
-        UmsAdmin admin =new UmsAdmin();
-        BeanUtils.copyProperties(umsAdminParam,admin);
+        UmsAdmin admin = new UmsAdmin();
+        BeanUtils.copyProperties(umsAdminParam, admin);
         int count = adminService.update(id, admin);
         if (count > 0) {
             return CommonResult.success(count);

+ 11 - 0
forest-admin/admin-server/src/main/java/com/hwrj/cloud/admin/dao/UmsAdminDao.java

@@ -0,0 +1,11 @@
+package com.hwrj.cloud.admin.dao;
+
+import com.hwrj.cloud.admin.model.UmsResource;
+import org.mapstruct.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface UmsAdminDao {
+    List<UmsResource> getAllResourceList(Long id);
+}

+ 2 - 0
forest-admin/admin-server/src/main/java/com/hwrj/cloud/admin/service/UmsAdminService.java

@@ -96,4 +96,6 @@ public interface UmsAdminService {
      * 获取用户信息
      */
     UserDetails loadUserByUsername(String username);
+
+    List<UmsResource> getAllResourceList(Long id);
 }

+ 7 - 0
forest-admin/admin-server/src/main/java/com/hwrj/cloud/admin/service/impl/UmsAdminServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.github.pagehelper.PageHelper;
 import com.hwrj.cloud.admin.bo.AdminUserDetails;
+import com.hwrj.cloud.admin.dao.UmsAdminDao;
 import com.hwrj.cloud.admin.dao.UmsAdminPermissionRelationDao;
 import com.hwrj.cloud.admin.dao.UmsAdminRoleRelationDao;
 import com.hwrj.cloud.admin.dto.UmsAdminParam;
@@ -357,4 +358,10 @@ public class UmsAdminServiceImpl implements UmsAdminService {
             throw new UsernameNotFoundException("用户名或密码错误!");
         }
     }
+    @Autowired
+    private UmsAdminDao umsAdminDao;
+    @Override
+    public List<UmsResource> getAllResourceList(Long id) {
+        return umsAdminDao.getAllResourceList(id);
+    }
 }

+ 8 - 1
forest-admin/admin-server/src/main/java/com/hwrj/cloud/admin/service/impl/UmsRoleServiceImpl.java

@@ -10,6 +10,7 @@ import com.hwrj.cloud.admin.mapper.UmsRoleResourceRelationMapper;
 import com.hwrj.cloud.admin.model.*;
 import com.hwrj.cloud.admin.service.UmsAdminCacheService;
 import com.hwrj.cloud.admin.service.UmsRoleService;
+import com.hwrj.cloud.admin.util.CurrUserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -92,9 +93,15 @@ public class UmsRoleServiceImpl implements UmsRoleService {
     public List<UmsRole> list(String keyword, Integer pageSize, Integer pageNum) {
         PageHelper.startPage(pageNum, pageSize);
         UmsRoleExample example = new UmsRoleExample();
+        UmsRoleExample.Criteria criteria = example.createCriteria();
         if (!StringUtils.isEmpty(keyword)) {
-            example.createCriteria().andNameLike("%" + keyword + "%");
+            criteria.andNameLike("%" + keyword + "%");
         }
+        //判断是不是admin 是admin 不移除自己 反之
+        if(!CurrUserUtil.getUmsAdmin().isAdmin()){
+            criteria.andNameNotEqualTo("超级管理员");
+        }
+
         return roleMapper.selectByExample(example);
     }
 

+ 12 - 0
forest-admin/admin-server/src/main/resources/dao/UmsAdminDao.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.hwrj.cloud.admin.dao.UmsAdminDao">
+
+
+    <select id="getAllResourceList" resultType="com.hwrj.cloud.admin.model.UmsResource">
+        SELECT DISTINCT
+            a.url
+        FROM
+            ums_resource a
+    </select>
+</mapper>

+ 7 - 1
forest-admin/admin-server/src/main/resources/dao/UmsAdminRoleRelationDao.xml

@@ -12,7 +12,13 @@
     <select id="getRoleList" resultMap="com.hwrj.cloud.admin.mapper.UmsRoleMapper.BaseResultMap">
         select r.*
         from ums_admin_role_relation ar left join ums_role r on ar.role_id = r.id
-        where ar.admin_id = #{adminId}
+        where
+        1=1
+          AND r.id IS NOT NULL
+        <if test="adminId !=null and adminId!=''">
+          and  ar.admin_id = #{adminId}
+        </if>
+
     </select>
     <select id="getRolePermissionList" resultMap="com.hwrj.cloud.admin.mapper.UmsPermissionMapper.BaseResultMap">
         select p.*

+ 5 - 2
forest-admin/admin-server/src/main/resources/dao/UmsRoleDao.xml

@@ -18,8 +18,11 @@
                 LEFT JOIN ums_role r ON arr.role_id = r.id
                 LEFT JOIN ums_role_menu_relation rmr ON r.id = rmr.role_id
                 LEFT JOIN ums_menu m ON rmr.menu_id = m.id
-        WHERE
-            arr.admin_id = #{adminId}
+        WHERE 1=1
+
+           <if test="adminId !=null and adminId!=''">
+                and arr.admin_id = #{adminId}
+           </if>
           AND m.id IS NOT NULL
         GROUP BY
             m.id

+ 5 - 2
forest-security/src/main/java/com/hwrj/cloud/security/component/RestfulAccessDeniedHandler.java

@@ -2,6 +2,7 @@ package com.hwrj.cloud.security.component;
 
 import cn.hutool.json.JSONUtil;
 import com.hwrj.cloud.common.api.CommonResult;
+import com.hwrj.cloud.common.exception.GlobalException;
 import org.springframework.security.access.AccessDeniedException;
 import org.springframework.security.web.access.AccessDeniedHandler;
 
@@ -22,8 +23,10 @@ public class RestfulAccessDeniedHandler implements AccessDeniedHandler {
         response.setHeader("Access-Control-Allow-Origin", "*");
         response.setHeader("Cache-Control","no-cache");
         response.setCharacterEncoding("UTF-8");
-        response.setContentType("application/json");
-        response.getWriter().println(JSONUtil.parse(CommonResult.forbidden(e.getMessage())));
+        response.setStatus(HttpServletResponse.SC_OK);
+        response.setContentType("application/json;charset=UTF-8");
+        response.getWriter().print(JSONUtil.toJsonStr(CommonResult.forbidden(e.getMessage())));
         response.getWriter().flush();
+        response.getWriter().close();
     }
 }