<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def user_auth( self, cloudflare_email=None, cloudflare_pass=None, unique_id=None ):
 """ Get user_key based on either his email and password or unique_id. :param cloudflare_email: email associated with user :type cloudflare_email: str :param cloudflare_pass: pass associated with user :type cloudflare_pass: str :param unique_id: unique id associated with user :type unique_id: str :returns: :rtype: dict """

        if not (cloudflare_email and cloudflare_pass) and not unique_id:
            raise KeyError(
                'Either cloudflare_email and cloudflare_pass or unique_id must be present')
        params = {'act': 'user_auth'}
        if cloudflare_email and cloudflare_pass:
            params['cloudflare_email'] = cloudflare_email
            params['cloudflare_pass'] = cloudflare_pass
        if unique_id:
            params['unique_id'] = unique_id

        return self._request(params)