Esempio n. 1
0
def get_group_by_name(group_name, customer_name, fields_to_pluck=None):
    """Retrieve a group by its name from the database
    Args:
        group_name (str): Name of group.
        customer_name (str): name of the customer, that the group belongs to.
    
    Kwargs:
        fields_to_pluck (list): List of fields you want to retrieve.

    Basic Usage:
        >>> from vFense.group.groups import get_group_by_name
        >>> group_name = 'Administrator'
        >>> customer_name = 'default'
        >>> get_group_by_name(group_name, customer_name)

    Returns:
        Returns a Dict of the properties of a customer
        {
            u'group_name': u'Administrator',
            u'customer_name': u'default',
            u'id': u'8757b79c-7321-4446-8882-65457f28c78b',
            u'Permissions': [
                u'administrator'
            ]
        }
    """
    data = fetch_group_by_name(group_name, customer_name)
    return(data)
Esempio n. 2
0
def get_group_by_name(group_name, customer_name, fields_to_pluck=None):
    """Retrieve a group by its name from the database
    Args:
        group_name (str): Name of group.
        customer_name (str): name of the customer, that the group belongs to.
    
    Kwargs:
        fields_to_pluck (list): List of fields you want to retrieve.

    Basic Usage:
        >>> from vFense.group.groups import get_group_by_name
        >>> group_name = 'Administrator'
        >>> customer_name = 'default'
        >>> get_group_by_name(group_name, customer_name)

    Returns:
        Returns a Dict of the properties of a customer
        {
            u'group_name': u'Administrator',
            u'customer_name': u'default',
            u'id': u'8757b79c-7321-4446-8882-65457f28c78b',
            u'Permissions': [
                u'administrator'
            ]
        }
    """
    data = fetch_group_by_name(group_name, customer_name)
    return (data)
Esempio n. 3
0
def remove_groups_from_user(
    username, group_ids=None,
    user_name=None, uri=None, method=None
    ):
    """Remove a group from a user
    Args:
        username(str): Name of the user

    Kwargs:
        group_ids(list): List of group_ids.
        user_name (str): The name of the user who called this function.
        uri (str): The uri that was used to call this function.
        method (str): The HTTP methos that was used to call this function.

    Basic Usage::
        >>> from vFense.core.group.groups remove_groups_from_user
        >>> username = '******'
        >>> group_ids = ['0834e656-27a5-4b13-ba56-635797d0d1fc', '8757b79c-7321-4446-8882-65457f28c78b']
        >>> remove_groups_from_user(username, group_ids)

    Returns:
        Returns the results in a dictionary
        {
            'rv_status_code': 1004,
            'message': 'None - remove_groups_from_user - group ids: 0834e656-27a5-4b13-ba56-635797d0d1fc, 8757b79c-7321-4446-8882-65457f28c78b does not exist',
            'http_method': None,
            'uri': None,
            'http_status': 409
        }
    """
    status = remove_groups_from_user.func_name + ' - '
    user_does_not_exist_in_group = False
    admin_user = False
    admin_group_id = None
    admin_group_id_exists_in_group_ids = False
    if username == DefaultUsers.ADMIN:
        admin_user = True
        admin_group_id = (
            fetch_group_by_name(
                DefaultGroups.ADMIN, DefaultCustomers.DEFAULT,
                GroupKeys.GroupId
            )[GroupKeys.GroupId]
        )

    try:
        if not group_ids:
            group_ids = (
                map(lambda x:
                    x[GroupsPerUserKeys.GroupId],
                    get_groups_for_user(username, GroupsPerUserKeys.GroupId)
                )
            )

        if group_ids:
            if not admin_group_id in group_ids:
                msg = 'group ids: ' + 'and '.join(group_ids)
                for gid in group_ids:
                    user_in_group = user_exist_in_group(username, gid)
                    if not user_in_group:
                        user_does_not_exist_in_group = True
            else:
                admin_group_id_exists_in_group_ids = True
                msg = (
                    'Cannot remove the %s group from the %s user' %
                    (DefaultGroups.ADMIN, DefaultUsers.ADMIN)
                )
        else:
            user_does_not_exist_in_group = True

        if (not user_does_not_exist_in_group and
            not admin_group_id_exists_in_group_ids):

            status_code, count, errors, generated_ids = (
                delete_groups_from_user(username, group_ids)
            )
            if status_code == DbCodes.Deleted:
                generic_status_code = GenericCodes.ObjectDeleted
                vfense_status_code = GroupCodes.GroupsRemovedFromUser

            elif status_code == DbCodes.Unchanged:
                generic_status_code = GenericCodes.ObjectUnchanged
                vfense_status_code = GroupCodes.GroupUnchanged

            elif status_code == DbCodes.Skipped:
                generic_status_code = GenericCodes.InvalidId
                vfense_status_code = GroupFailureCodes.InvalidGroupId

        elif admin_group_id_exists_in_group_ids:
            status_code = DbCodes.Skipped
            generic_status_code = GenericCodes.InvalidId
            vfense_status_code = GroupFailureCodes.CantRemoveAdminFromGroup

        else:
            msg = (
                'groups %s do not exist for user %s' %
                (' and '.join(group_ids), username)
            )
            status_code = DbCodes.Skipped
            generic_status_code = GenericCodes.InvalidId
            vfense_status_code = GroupFailureCodes.GroupDoesNotExistForUser

        results = {
            ApiResultKeys.DB_STATUS_CODE: status_code,
            ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code,
            ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code,
            ApiResultKeys.MESSAGE: status + msg,
            ApiResultKeys.DATA: [],
            ApiResultKeys.USERNAME: user_name,
            ApiResultKeys.URI: uri,
            ApiResultKeys.HTTP_METHOD: method
        }

    except Exception as e:
        logger.exception(e)
        status_code = DbCodes.Errors
        generic_status_code = GenericFailureCodes.FailedToDeleteObject
        vfense_status_code = GroupFailureCodes.FailedToRemoveGroupFromUser

        results = {
            ApiResultKeys.DB_STATUS_CODE: status_code,
            ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code,
            ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code,
            ApiResultKeys.MESSAGE: status + msg,
            ApiResultKeys.DATA: [],
            ApiResultKeys.USERNAME: user_name,
            ApiResultKeys.URI: uri,
            ApiResultKeys.HTTP_METHOD: method
        }

    return(results)
Esempio n. 4
0
def remove_groups_from_user(username,
                            group_ids=None,
                            user_name=None,
                            uri=None,
                            method=None):
    """Remove a group from a user
    Args:
        username(str): Name of the user

    Kwargs:
        group_ids(list): List of group_ids.
        user_name (str): The name of the user who called this function.
        uri (str): The uri that was used to call this function.
        method (str): The HTTP methos that was used to call this function.

    Basic Usage::
        >>> from vFense.core.group.groups remove_groups_from_user
        >>> username = '******'
        >>> group_ids = ['0834e656-27a5-4b13-ba56-635797d0d1fc', '8757b79c-7321-4446-8882-65457f28c78b']
        >>> remove_groups_from_user(username, group_ids)

    Returns:
        Returns the results in a dictionary
        {
            'rv_status_code': 1004,
            'message': 'None - remove_groups_from_user - group ids: 0834e656-27a5-4b13-ba56-635797d0d1fc, 8757b79c-7321-4446-8882-65457f28c78b does not exist',
            'http_method': None,
            'uri': None,
            'http_status': 409
        }
    """
    status = remove_groups_from_user.func_name + ' - '
    user_does_not_exist_in_group = False
    admin_user = False
    admin_group_id = None
    admin_group_id_exists_in_group_ids = False
    if username == DefaultUsers.ADMIN:
        admin_user = True
        admin_group_id = (fetch_group_by_name(
            DefaultGroups.ADMIN, DefaultCustomers.DEFAULT,
            GroupKeys.GroupId)[GroupKeys.GroupId])

    try:
        if not group_ids:
            group_ids = (map(
                lambda x: x[GroupsPerUserKeys.GroupId],
                get_groups_for_user(username, GroupsPerUserKeys.GroupId)))

        if group_ids:
            if not admin_group_id in group_ids:
                msg = 'group ids: ' + 'and '.join(group_ids)
                for gid in group_ids:
                    user_in_group = user_exist_in_group(username, gid)
                    if not user_in_group:
                        user_does_not_exist_in_group = True
            else:
                admin_group_id_exists_in_group_ids = True
                msg = ('Cannot remove the %s group from the %s user' %
                       (DefaultGroups.ADMIN, DefaultUsers.ADMIN))
        else:
            user_does_not_exist_in_group = True

        if (not user_does_not_exist_in_group
                and not admin_group_id_exists_in_group_ids):

            status_code, count, errors, generated_ids = (
                delete_groups_from_user(username, group_ids))
            if status_code == DbCodes.Deleted:
                generic_status_code = GenericCodes.ObjectDeleted
                vfense_status_code = GroupCodes.GroupsRemovedFromUser

            elif status_code == DbCodes.Unchanged:
                generic_status_code = GenericCodes.ObjectUnchanged
                vfense_status_code = GroupCodes.GroupUnchanged

            elif status_code == DbCodes.Skipped:
                generic_status_code = GenericCodes.InvalidId
                vfense_status_code = GroupFailureCodes.InvalidGroupId

        elif admin_group_id_exists_in_group_ids:
            status_code = DbCodes.Skipped
            generic_status_code = GenericCodes.InvalidId
            vfense_status_code = GroupFailureCodes.CantRemoveAdminFromGroup

        else:
            msg = ('groups %s do not exist for user %s' %
                   (' and '.join(group_ids), username))
            status_code = DbCodes.Skipped
            generic_status_code = GenericCodes.InvalidId
            vfense_status_code = GroupFailureCodes.GroupDoesNotExistForUser

        results = {
            ApiResultKeys.DB_STATUS_CODE: status_code,
            ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code,
            ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code,
            ApiResultKeys.MESSAGE: status + msg,
            ApiResultKeys.DATA: [],
            ApiResultKeys.USERNAME: user_name,
            ApiResultKeys.URI: uri,
            ApiResultKeys.HTTP_METHOD: method
        }

    except Exception as e:
        logger.exception(e)
        status_code = DbCodes.Errors
        generic_status_code = GenericFailureCodes.FailedToDeleteObject
        vfense_status_code = GroupFailureCodes.FailedToRemoveGroupFromUser

        results = {
            ApiResultKeys.DB_STATUS_CODE: status_code,
            ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code,
            ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code,
            ApiResultKeys.MESSAGE: status + msg,
            ApiResultKeys.DATA: [],
            ApiResultKeys.USERNAME: user_name,
            ApiResultKeys.URI: uri,
            ApiResultKeys.HTTP_METHOD: method
        }

    return (results)