Ejemplo n.º 1
0
    def check_permission(self,
                         permission_enum,
                         vm_object=None,
                         user_object=None):
        """Check that the user has a given permission, either globally through MCVirt or for a
        given VM.
        """
        if 'STARTUP_PERIOD' in dir(Pyro4.current_context
                                   ) and Pyro4.current_context.STARTUP_PERIOD:
            return True

        if ('INTERNAL_REQUEST' in dir(Pyro4.current_context)
                and Pyro4.current_context.INTERNAL_REQUEST):
            return True

        # If the user is a superuser, all permissions are attached to the user
        if self.is_superuser():
            return True

        if user_object is None:
            user_object = self._get_registered_object(
                'mcvirt_session').get_current_user_object()

        # Determine if the type of user has the permissions
        if permission_enum in user_object.PERMISSIONS:
            return True

        # Check the global permissions configuration to determine
        # if the user has been granted the permission
        mcvirt_config = MCVirtConfig()
        mcvirt_permissions = mcvirt_config.getPermissionConfig()
        if self.check_permission_in_config(mcvirt_permissions,
                                           user_object.get_username(),
                                           permission_enum):
            return True

        # If a vm_object has been passed, check the VM
        # configuration file for the required permissions
        if vm_object:
            vm_config_object = vm_object.get_config_object()
            vm_config = vm_config_object.getPermissionConfig()

            # Determine if the user has been granted the required permissions
            # in the VM configuration file
            if (self.check_permission_in_config(vm_config,
                                                user_object.get_username(),
                                                permission_enum)):
                return True

        return False
Ejemplo n.º 2
0
    def get_users_in_permission_group(self, permission_group, vm_object=None):
        """Obtain a list of users in a given group, either in the global permissions or
        for a specific VM.
        """
        if vm_object:
            permission_config = vm_object.get_config_object(
            ).getPermissionConfig()
        else:
            mcvirt_config = MCVirtConfig()
            permission_config = mcvirt_config.getPermissionConfig()

        if permission_group in permission_config.keys():
            return permission_config[permission_group]
        else:
            raise InvalidPermissionGroupException(
                'Permission group \'%s\' does not exist' % permission_group)
Ejemplo n.º 3
0
    def get_users_in_permission_group(self, permission_group, vm_object=None):
        """Obtain a list of users in a given group, either in the global permissions or
        for a specific VM.
        """
        if vm_object:
            permission_config = vm_object.get_config_object().getPermissionConfig()
        else:
            mcvirt_config = MCVirtConfig()
            permission_config = mcvirt_config.getPermissionConfig()

        if permission_group in permission_config.keys():
            return permission_config[permission_group]
        else:
            raise InvalidPermissionGroupException(
                'Permission group \'%s\' does not exist' % permission_group
            )
Ejemplo n.º 4
0
    def check_permission(self, permission_enum, vm_object=None, user_object=None):
        """Check that the user has a given permission, either globally through MCVirt or for a
        given VM.
        """
        if Pyro4.current_context.STARTUP_PERIOD:
            return True

        # If the user is a superuser, all permissions are attached to the user
        if self.is_superuser():
            return True

        if user_object is None:
            user_object = self._get_registered_object('mcvirt_session').get_current_user_object()

        # Determine if the type of user has the permissions
        if permission_enum in user_object.PERMISSIONS:
            return True

        # Check the global permissions configuration to determine
        # if the user has been granted the permission
        mcvirt_config = MCVirtConfig()
        mcvirt_permissions = mcvirt_config.getPermissionConfig()
        if self.check_permission_in_config(mcvirt_permissions, user_object.get_username(),
                                           permission_enum):
            return True

        # If a vm_object has been passed, check the VM
        # configuration file for the required permissions
        if vm_object:
            vm_config_object = vm_object.get_config_object()
            vm_config = vm_config_object.getPermissionConfig()

            # Determine if the user has been granted the required permissions
            # in the VM configuration file
            if (self.check_permission_in_config(vm_config, user_object.get_username(),
                                                permission_enum)):
                return True

        return False