<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def has_access(user, required_roles, match_all=True):
 """Check if the user meets the role requirements. If mode is set to AND, all the provided roles must apply Args: user (:obj:`User`):
 User object required_roles (`list` of `str`):
 List of roles that the user must have applied match_all (`bool`):
 If true, all the required_roles must be applied to the user, else any one match will return `True` Returns: `bool` """

    # Admins have access to everything
    if ROLE_ADMIN in user.roles:
        return True

    if isinstance(required_roles, str):
        if required_roles in user.roles:
            return True

        return False

    # If we received a list of roles to match against
    if match_all:
        for role in required_roles:
            if role not in user.roles:
                return False

        return True

    else:
        for role in required_roles:
            if role in user.roles:
                return True

        return False