mirror of https://github.com/jumpserver/jumpserver
				
				
				
			[Bugfix] 修复用户无权限执行批量命令却可直接访问批量执行页面的bug (#2857)
* [Bugfix] 修复用户无权限执行批量命令却可直接访问批量执行页面的bug * [Update] 更改小问题 * [Update] 优化小问题 * [Update] 优化变量名 * [Update] 优化变量名(2)pull/2864/head
							parent
							
								
									297820b65a
								
							
						
					
					
						commit
						768cfc7561
					
				| 
						 | 
				
			
			@ -126,8 +126,11 @@ class WithBootstrapToken(permissions.BasePermission):
 | 
			
		|||
class PermissionsMixin(UserPassesTestMixin):
 | 
			
		||||
    permission_classes = []
 | 
			
		||||
 | 
			
		||||
    def get_permissions(self):
 | 
			
		||||
        return self.permission_classes
 | 
			
		||||
 | 
			
		||||
    def test_func(self):
 | 
			
		||||
        permission_classes = self.permission_classes
 | 
			
		||||
        permission_classes = self.get_permissions()
 | 
			
		||||
        for permission_class in permission_classes:
 | 
			
		||||
            if not permission_class().has_permission(self.request, self):
 | 
			
		||||
                return False
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ class CommandExecutionViewSet(viewsets.ModelViewSet):
 | 
			
		|||
        )
 | 
			
		||||
 | 
			
		||||
    def check_permissions(self, request):
 | 
			
		||||
        if not settings.SECURITY_COMMAND_EXECUTION:
 | 
			
		||||
        if not settings.SECURITY_COMMAND_EXECUTION and request.user.is_common_user:
 | 
			
		||||
            return self.permission_denied(request, "Command execution disabled")
 | 
			
		||||
        return super().check_permissions(request)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,6 +59,11 @@ class CommandExecutionStartView(PermissionsMixin, TemplateView):
 | 
			
		|||
    form_class = CommandExecutionForm
 | 
			
		||||
    permission_classes = [IsValidUser]
 | 
			
		||||
 | 
			
		||||
    def get_permissions(self):
 | 
			
		||||
        if not settings.SECURITY_COMMAND_EXECUTION:
 | 
			
		||||
            return [IsOrgAdmin]
 | 
			
		||||
        return super().permission_classes()
 | 
			
		||||
 | 
			
		||||
    def get_user_system_users(self):
 | 
			
		||||
        from perms.utils import AssetPermissionUtil
 | 
			
		||||
        user = self.request.user
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -249,6 +249,16 @@ class User(AbstractUser):
 | 
			
		|||
    def is_auditor(self):
 | 
			
		||||
        return self.role == 'Auditor'
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def is_common_user(self):
 | 
			
		||||
        if self.is_org_admin:
 | 
			
		||||
            return False
 | 
			
		||||
        if self.is_auditor:
 | 
			
		||||
            return False
 | 
			
		||||
        if self.is_app:
 | 
			
		||||
            return False
 | 
			
		||||
        return True
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def is_app(self):
 | 
			
		||||
        return self.role == 'App'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue