'Launches the OpenID authentication procedure.'

@providers.login_decorator
def login(self):

    if self.params.get(self.identifier_param):
        self._log(logging.INFO, u'Starting    OpenID    authentication    procedure.')
        url = users.create_login_url(dest_url=self.url, federated_identity=self.identifier)
        self._log(logging.INFO, u'Redirecting    user    to    {0}.'.format(url))
        self.redirect(url)
    else:
        self._log(logging.INFO, u'Continuing    OpenID    authentication    procedure    after    redirect.')
        user = users.get_current_user()
        if user:
            self._log(logging.INFO, u'Authentication    successful.')
            self._log(logging.INFO, u'Creating    user.')
            self.user = core.User(self, id=user.federated_identity(), email=user.email(), gae_user=user)
        else:
            raise FailureError('Unable    to    authenticate    identifier    "{0}"!'.format(self.identifier))
