[gnome-online-accounts] google: Don't offer a PasswordBased interface
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-online-accounts] google: Don't offer a PasswordBased interface
- Date: Tue, 9 Jul 2013 11:34:39 +0000 (UTC)
commit 365a5a92909fce8dcdd851b5a2b9caf34e0da926
Author: Debarshi Ray <debarshir gnome org>
Date: Fri Jun 28 14:22:07 2013 +0200
google: Don't offer a PasswordBased interface
This was a temporary measure back when Google did not support OAuth2
for CalDAV. Now that they do, we can drop this.
In any case, the workaround didn't work with accounts using 2-factor
authentication. This will make those people happy.
This reverts 89c335479c1bb8409af8296c99ffea602a28b71f
See: https://bugzilla.gnome.org/show_bug.cgi?id=686804
https://bugzilla.gnome.org/show_bug.cgi?id=688364
src/goabackend/goagoogleprovider.c | 215 ------------------------------------
1 files changed, 0 insertions(+), 215 deletions(-)
---
diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
index 740c08e..75cb748 100644
--- a/src/goabackend/goagoogleprovider.c
+++ b/src/goabackend/goagoogleprovider.c
@@ -32,8 +32,6 @@
#include "goaprovider-priv.h"
#include "goaoauth2provider.h"
#include "goagoogleprovider.h"
-#include "goahttpclient.h"
-#include "goautils.h"
/**
* GoaGoogleProvider:
@@ -71,8 +69,6 @@ G_DEFINE_TYPE_WITH_CODE (GoaGoogleProvider, goa_google_provider, GOA_TYPE_OAUTH2
/* ---------------------------------------------------------------------------------------------------- */
-static const gchar *CALDAV_ENDPOINT = "https://www.google.com/calendar/dav/%s/events/";
-
static const gchar *
get_provider_type (GoaProvider *_provider)
{
@@ -321,48 +317,8 @@ is_identity_node (GoaOAuth2Provider *provider, WebKitDOMHTMLInputElement *elemen
return ret;
}
-static gboolean
-is_password_node (GoaOAuth2Provider *provider, WebKitDOMHTMLInputElement *element)
-{
- gboolean ret;
- gchar *element_type;
- gchar *id;
- gchar *name;
-
- element_type = NULL;
- id = NULL;
- name = NULL;
-
- ret = FALSE;
-
- g_object_get (element, "type", &element_type, NULL);
- if (g_strcmp0 (element_type, "password") != 0)
- goto out;
-
- id = webkit_dom_html_element_get_id (WEBKIT_DOM_HTML_ELEMENT (element));
- if (g_strcmp0 (id, "Passwd") != 0)
- goto out;
-
- name = webkit_dom_html_input_element_get_name (element);
- if (g_strcmp0 (name, "Passwd") != 0)
- goto out;
-
- ret = TRUE;
-
- out:
- g_free (element_type);
- g_free (id);
- g_free (name);
- return ret;
-}
-
/* ---------------------------------------------------------------------------------------------------- */
-static gboolean on_handle_get_password (GoaPasswordBased *interface,
- GDBusMethodInvocation *invocation,
- const gchar *id,
- gpointer user_data);
-
static gboolean
build_object (GoaProvider *provider,
GoaObjectSkeleton *object,
@@ -378,7 +334,6 @@ build_object (GoaProvider *provider,
GoaContacts *contacts;
GoaChat *chat;
GoaDocuments *documents;
- GoaPasswordBased *password_based;
gboolean ret;
gboolean mail_enabled;
gboolean calendar_enabled;
@@ -405,20 +360,6 @@ build_object (GoaProvider *provider,
error))
goto out;
- password_based = goa_object_get_password_based (GOA_OBJECT (object));
- if (password_based == NULL)
- {
- password_based = goa_password_based_skeleton_new ();
- /* Ensure D-Bus method invocations run in their own thread */
- g_dbus_interface_skeleton_set_flags (G_DBUS_INTERFACE_SKELETON (password_based),
-
G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD);
- goa_object_skeleton_set_password_based (object, password_based);
- g_signal_connect (password_based,
- "handle-get-password",
- G_CALLBACK (on_handle_get_password),
- NULL);
- }
-
account = goa_object_get_account (GOA_OBJECT (object));
email_address = goa_account_get_identity (account);
@@ -578,103 +519,6 @@ build_object (GoaProvider *provider,
/* ---------------------------------------------------------------------------------------------------- */
static gboolean
-ensure_credentials_sync (GoaProvider *provider,
- GoaObject *object,
- gint *out_expires_in,
- GCancellable *cancellable,
- GError **error)
-{
- GVariant *credentials;
- GoaAccount *account;
- GoaHttpClient *http_client;
- gboolean ret;
- const gchar *username;
- gchar *password;
- gchar *uri_caldav;
-
- credentials = NULL;
- http_client = NULL;
- password = NULL;
- uri_caldav = NULL;
-
- ret = FALSE;
-
- /* Chain up */
- if (!GOA_PROVIDER_CLASS (goa_google_provider_parent_class)->ensure_credentials_sync (provider,
- object,
- out_expires_in,
- cancellable,
- error))
- goto out;
-
- credentials = goa_utils_lookup_credentials_sync (provider,
- object,
- cancellable,
- error);
- if (credentials == NULL)
- {
- if (error != NULL)
- {
- (*error)->domain = GOA_ERROR;
- (*error)->code = GOA_ERROR_NOT_AUTHORIZED;
- }
- goto out;
- }
-
- account = goa_object_peek_account (object);
- username = goa_account_get_presentation_identity (account);
- uri_caldav = g_strdup_printf (CALDAV_ENDPOINT, username);
-
- if (!g_variant_lookup (credentials, "password", "s", &password))
- {
- if (error != NULL)
- {
- *error = g_error_new (GOA_ERROR,
- GOA_ERROR_NOT_AUTHORIZED,
- _("Did not find password with identity `%s' in credentials"),
- username);
- }
- goto out;
- }
-
- http_client = goa_http_client_new ();
- ret = goa_http_client_check_sync (http_client,
- uri_caldav,
- username,
- password,
- FALSE,
- cancellable,
- error);
- if (!ret)
- {
- if (error != NULL)
- {
- g_prefix_error (error,
- /* Translators: the first %s is the username
- * (eg., debarshi ray gmail com or rishi), and the
- * (%s, %d) is the error domain and code.
- */
- _("Invalid password with username `%s' (%s, %d): "),
- username,
- g_quark_to_string ((*error)->domain),
- (*error)->code);
- (*error)->domain = GOA_ERROR;
- (*error)->code = GOA_ERROR_NOT_AUTHORIZED;
- }
- goto out;
- }
-
- out:
- g_clear_object (&http_client);
- g_free (password);
- g_free (uri_caldav);
- g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref);
- return ret;
-}
-
-/* ---------------------------------------------------------------------------------------------------- */
-
-static gboolean
get_use_mobile_browser (GoaOAuth2Provider *provider)
{
return TRUE;
@@ -756,7 +600,6 @@ goa_google_provider_class_init (GoaGoogleProviderClass *klass)
provider_class->get_provider_group = get_provider_group;
provider_class->get_provider_features = get_provider_features;
provider_class->build_object = build_object;
- provider_class->ensure_credentials_sync = ensure_credentials_sync;
provider_class->show_account = show_account;
provider_class->get_credentials_generation = get_credentials_generation;
@@ -770,65 +613,7 @@ goa_google_provider_class_init (GoaGoogleProviderClass *klass)
oauth2_class->get_scope = get_scope;
oauth2_class->is_deny_node = is_deny_node;
oauth2_class->is_identity_node = is_identity_node;
- oauth2_class->is_password_node = is_password_node;
oauth2_class->get_token_uri = get_token_uri;
oauth2_class->get_use_mobile_browser = get_use_mobile_browser;
oauth2_class->add_account_key_values = add_account_key_values;
}
-
-/* ---------------------------------------------------------------------------------------------------- */
-
-/* runs in a thread dedicated to handling @invocation */
-static gboolean
-on_handle_get_password (GoaPasswordBased *interface,
- GDBusMethodInvocation *invocation,
- const gchar *id, /* unused */
- gpointer user_data)
-{
- GoaObject *object;
- GoaAccount *account;
- GoaProvider *provider;
- GError *error;
- GVariant *credentials;
- const gchar *identity;
- gchar *password;
-
- /* TODO: maybe log what app is requesting access */
-
- password = NULL;
- credentials = NULL;
-
- object = GOA_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (interface)));
- account = goa_object_peek_account (object);
- identity = goa_account_get_identity (account);
- provider = goa_provider_get_for_provider_type (goa_account_get_provider_type (account));
-
- error = NULL;
- credentials = goa_utils_lookup_credentials_sync (provider,
- object,
- NULL, /* GCancellable* */
- &error);
- if (credentials == NULL)
- {
- g_dbus_method_invocation_take_error (invocation, error);
- goto out;
- }
-
- if (!g_variant_lookup (credentials, "password", "s", &password))
- {
- g_dbus_method_invocation_return_error (invocation,
- GOA_ERROR,
- GOA_ERROR_FAILED, /* TODO: more specific */
- _("Did not find password with identity `%s' in credentials"),
- identity);
- goto out;
- }
-
- goa_password_based_complete_get_password (interface, invocation, password);
-
- out:
- g_free (password);
- g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref);
- g_object_unref (provider);
- return TRUE; /* invocation was handled */
-}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]