This is an automated email from the ASF dual-hosted git repository.

zhangzicheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new f9c56889d #3657 Fix Admin have insecure permissions (#3658)
f9c56889d is described below

commit f9c56889dcd9604a50ef4c1aca3e30170f128091
Author: nuo-promise <[email protected]>
AuthorDate: Fri Jul 29 14:06:58 2022 +0800

    #3657 Fix Admin have insecure permissions (#3658)
    
    * #3657 Fix Admin have insecure permissions
    
    * add user not login return message
---
 .../shenyu/admin/controller/DashboardUserController.java       | 10 ++++++++++
 .../org/apache/shenyu/admin/utils/ShenyuResultMessage.java     |  4 ++++
 2 files changed, 14 insertions(+)

diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java
index d0b93044e..2ceef896d 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java
@@ -20,6 +20,7 @@ package org.apache.shenyu.admin.controller;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shenyu.admin.mapper.DashboardUserMapper;
+import org.apache.shenyu.admin.model.custom.UserInfo;
 import org.apache.shenyu.admin.model.dto.DashboardUserDTO;
 import org.apache.shenyu.admin.model.page.CommonPager;
 import org.apache.shenyu.admin.model.page.PageParameter;
@@ -32,6 +33,7 @@ import org.apache.shenyu.admin.utils.Assert;
 import org.apache.shenyu.admin.utils.ShenyuResultMessage;
 import org.apache.shenyu.admin.validation.annotation.Existed;
 import org.apache.shenyu.common.utils.ShaUtils;
+import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -50,6 +52,7 @@ import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Objects;
 import java.util.Optional;
 
 /**
@@ -158,6 +161,13 @@ public class DashboardUserController {
                                             @Existed(provider = 
DashboardUserMapper.class,
                                                     message = "user is not 
found") final String id,
                                             @Valid @RequestBody final 
DashboardUserDTO dashboardUserDTO) {
+        UserInfo userInfo = (UserInfo) 
SecurityUtils.getSubject().getPrincipal();
+        if (Objects.isNull(userInfo)) {
+            return 
ShenyuAdminResult.error(ShenyuResultMessage.DASHBOARD_USER_LOGIN_ERROR);
+        }
+        if (!userInfo.getUserId().equals(id) && 
!userInfo.getUserName().equals(dashboardUserDTO.getUserName())) {
+            return 
ShenyuAdminResult.error(ShenyuResultMessage.DASHBOARD_MODIFY_PASSWORD_ERROR);
+        }
         return updateDashboardUser(id, dashboardUserDTO);
     }
     
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/ShenyuResultMessage.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/ShenyuResultMessage.java
index 760cec15b..6fa38871c 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/ShenyuResultMessage.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/ShenyuResultMessage.java
@@ -46,8 +46,12 @@ public final class ShenyuResultMessage {
 
     public static final String ROLE_CREATE_ERROR = "can not create super role";
 
+    public static final String DASHBOARD_USER_LOGIN_ERROR = "user not login 
please login first";
+
     public static final String DASHBOARD_QUERY_ERROR = "user info is empty";
 
+    public static final String DASHBOARD_MODIFY_PASSWORD_ERROR = "can not 
modify other user password";
+
     public static final String DASHBOARD_CREATE_USER_ERROR = "empty user info, 
please confirm";
 
     public static final String PLATFORM_LOGIN_SUCCESS = "login dashboard user 
success";

Reply via email to