Commit 0fcce200 authored by Jason Song's avatar Jason Song Committed by GitHub

fix the issue that project owner cannot manage application master even if...

fix the issue that project owner cannot manage application master even if role.manage-app-master.enabled is turned off (#2627)
parent 0cae4838
...@@ -322,7 +322,7 @@ public class PermissionController { ...@@ -322,7 +322,7 @@ public class PermissionController {
roleInitializationService.initManageAppMasterRole(appId, userInfoHolder.getUser().getUserId()); roleInitializationService.initManageAppMasterRole(appId, userInfoHolder.getUser().getUserId());
Set<String> userIds = new HashSet<>(); Set<String> userIds = new HashSet<>();
userIds.add(userId); userIds.add(userId);
rolePermissionService.assignRoleToUsers(RoleUtils.buildManageAppMasterRoleName(PermissionType.MANAGE_APP_MASTER, appId), rolePermissionService.assignRoleToUsers(RoleUtils.buildAppRoleName(appId, PermissionType.MANAGE_APP_MASTER),
userIds, userInfoHolder.getUser().getUserId()); userIds, userInfoHolder.getUser().getUserId());
return ResponseEntity.ok().build(); return ResponseEntity.ok().build();
} }
...@@ -334,7 +334,7 @@ public class PermissionController { ...@@ -334,7 +334,7 @@ public class PermissionController {
roleInitializationService.initManageAppMasterRole(appId, userInfoHolder.getUser().getUserId()); roleInitializationService.initManageAppMasterRole(appId, userInfoHolder.getUser().getUserId());
Set<String> userIds = new HashSet<>(); Set<String> userIds = new HashSet<>();
userIds.add(userId); userIds.add(userId);
rolePermissionService.removeRoleFromUsers(RoleUtils.buildManageAppMasterRoleName(PermissionType.MANAGE_APP_MASTER, appId), rolePermissionService.removeRoleFromUsers(RoleUtils.buildAppRoleName(appId, PermissionType.MANAGE_APP_MASTER),
userIds, userInfoHolder.getUser().getUserId()); userIds, userInfoHolder.getUser().getUserId());
return ResponseEntity.ok().build(); return ResponseEntity.ok().build();
} }
......
...@@ -130,7 +130,7 @@ public class DefaultRoleInitializationService implements RoleInitializationServi ...@@ -130,7 +130,7 @@ public class DefaultRoleInitializationService implements RoleInitializationServi
private void createManageAppMasterRole(String appId, String operator) { private void createManageAppMasterRole(String appId, String operator) {
Permission permission = createPermission(appId, PermissionType.MANAGE_APP_MASTER, operator); Permission permission = createPermission(appId, PermissionType.MANAGE_APP_MASTER, operator);
rolePermissionService.createPermission(permission); rolePermissionService.createPermission(permission);
Role role = createRole(RoleUtils.buildManageAppMasterRoleName(PermissionType.MANAGE_APP_MASTER, appId), operator); Role role = createRole(RoleUtils.buildAppRoleName(appId, PermissionType.MANAGE_APP_MASTER), operator);
Set<Long> permissionIds = new HashSet<>(); Set<Long> permissionIds = new HashSet<>();
permissionIds.add(permission.getId()); permissionIds.add(permission.getId());
rolePermissionService.createRoleWithPermissions(role, permissionIds); rolePermissionService.createRoleWithPermissions(role, permissionIds);
...@@ -139,7 +139,7 @@ public class DefaultRoleInitializationService implements RoleInitializationServi ...@@ -139,7 +139,7 @@ public class DefaultRoleInitializationService implements RoleInitializationServi
// fix historical data // fix historical data
@Transactional @Transactional
public void initManageAppMasterRole(String appId, String operator) { public void initManageAppMasterRole(String appId, String operator) {
String manageAppMasterRoleName = RoleUtils.buildManageAppMasterRoleName(PermissionType.MANAGE_APP_MASTER, appId); String manageAppMasterRoleName = RoleUtils.buildAppRoleName(appId, PermissionType.MANAGE_APP_MASTER);
if (rolePermissionService.findRoleByRoleName(manageAppMasterRoleName) != null) { if (rolePermissionService.findRoleByRoleName(manageAppMasterRoleName) != null) {
return; return;
} }
......
...@@ -89,8 +89,4 @@ public class RoleUtils { ...@@ -89,8 +89,4 @@ public class RoleUtils {
public static String buildCreateApplicationRoleName(String permissionType, String permissionTargetId) { public static String buildCreateApplicationRoleName(String permissionType, String permissionTargetId) {
return STRING_JOINER.join(permissionType, permissionTargetId); return STRING_JOINER.join(permissionType, permissionTargetId);
} }
public static String buildManageAppMasterRoleName(String permissionType, String permissionTargetId) {
return STRING_JOINER.join(permissionType, permissionTargetId);
}
} }
...@@ -63,6 +63,12 @@ function SettingController($scope, $location, toastr, ...@@ -63,6 +63,12 @@ function SettingController($scope, $location, toastr,
.then(function (result) { .then(function (result) {
$scope.hasAssignUserPermission = result.hasPermission; $scope.hasAssignUserPermission = result.hasPermission;
PermissionService.has_open_manage_app_master_role_limit().then(function (value) {
if (!value.isManageAppMasterPermissionEnabled) {
$scope.hasManageAppMasterPermission = $scope.hasAssignUserPermission;
return;
}
PermissionService.has_manage_app_master_permission($scope.pageContext.appId).then(function (res) { PermissionService.has_manage_app_master_permission($scope.pageContext.appId).then(function (res) {
$scope.hasManageAppMasterPermission = res.hasPermission && $scope.hasAssignUserPermission; $scope.hasManageAppMasterPermission = res.hasPermission && $scope.hasAssignUserPermission;
...@@ -70,7 +76,7 @@ function SettingController($scope, $location, toastr, ...@@ -70,7 +76,7 @@ function SettingController($scope, $location, toastr,
$scope.hasManageAppMasterPermission = value.hasPermission || $scope.hasManageAppMasterPermission; $scope.hasManageAppMasterPermission = value.hasPermission || $scope.hasManageAppMasterPermission;
}); });
}); });
});
}); });
} }
......
...@@ -67,6 +67,10 @@ appService.service('PermissionService', ['$resource', '$q', function ($resource, ...@@ -67,6 +67,10 @@ appService.service('PermissionService', ['$resource', '$q', function ($resource,
remove_app_role_from_user: { remove_app_role_from_user: {
method: 'DELETE', method: 'DELETE',
url: '/apps/:appId/roles/:roleType?user=:user' url: '/apps/:appId/roles/:roleType?user=:user'
},
has_open_manage_app_master_role_limit: {
method: 'GET',
url: '/system/role/manageAppMaster'
} }
}); });
...@@ -320,6 +324,17 @@ appService.service('PermissionService', ['$resource', '$q', function ($resource, ...@@ -320,6 +324,17 @@ appService.service('PermissionService', ['$resource', '$q', function ($resource,
d.reject(result); d.reject(result);
}); });
return d.promise; return d.promise;
},
has_open_manage_app_master_role_limit: function () {
var d = $q.defer();
permission_resource.has_open_manage_app_master_role_limit({},
function (result) {
d.resolve(result);
},
function (result) {
d.reject(result);
});
return d.promise;
} }
} }
}]); }]);
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<section class="row"> <section class="row">
<h5>为用户添加创建应用权限 <h5>为用户添加创建应用权限
<small> <small>
(暂时只允许系统管理员操作) (系统参数中设置 role.create-application.enabled=true 会限制只有超级管理员和拥有创建应用权限的帐号可以创建项目)
</small> </small>
</h5> </h5>
<hr> <hr>
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
<section class="row"> <section class="row">
<h5>修改应用管理员分配权限 <h5>修改应用管理员分配权限
<small> <small>
(应用管理员分配权限仅限制非superAdmin以外的用户能否为应用添加其他管理员,不影响其他权限) (系统参数中设置 role.manage-app-master.enabled=true 会限制只有超级管理员和拥有管理员分配权限的帐号可以修改项目管理员)
</small> </small>
</h5> </h5>
<hr> <hr>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment