[gnome-initial-setup] password: detect enterprise account without heuristic



commit 9d5b92e2b699f82fff09286574848c5fd39ca7dc
Author: Ray Strode <rstrode redhat com>
Date:   Mon Jul 27 15:38:56 2015 -0400

    password: detect enterprise account without heuristic
    
    Right now we detect an enterprise account by the lack of an
    ActUser object.  That can't work going forward though, since other
    bits of the code need an ActUser object for enterprise accounts.
    
    This commit adds the account mode to the driver and changes the
    password page to look at the account mode directly.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=752980

 gnome-initial-setup/gis-driver.c                   |   16 ++++++++++++++++
 gnome-initial-setup/gis-driver.h                   |   11 +++++++++++
 .../pages/account/gis-account-page.c               |    7 +------
 .../pages/password/gis-password-page.c             |    7 +++++--
 4 files changed, 33 insertions(+), 8 deletions(-)
---
diff --git a/gnome-initial-setup/gis-driver.c b/gnome-initial-setup/gis-driver.c
index cbc4410..449745b 100644
--- a/gnome-initial-setup/gis-driver.c
+++ b/gnome-initial-setup/gis-driver.c
@@ -75,6 +75,7 @@ struct _GisDriverPrivate {
   gchar *username;
 
   GisDriverMode mode;
+  UmAccountMode account_mode;
 };
 typedef struct _GisDriverPrivate GisDriverPrivate;
 
@@ -194,6 +195,21 @@ gis_driver_get_user_permissions (GisDriver    *driver,
 }
 
 void
+gis_driver_set_account_mode (GisDriver     *driver,
+                             UmAccountMode  mode)
+{
+  GisDriverPrivate *priv = gis_driver_get_instance_private (driver);
+  priv->account_mode = mode;
+}
+
+UmAccountMode
+gis_driver_get_account_mode (GisDriver *driver)
+{
+  GisDriverPrivate *priv = gis_driver_get_instance_private (driver);
+  return priv->account_mode;
+}
+
+void
 gis_driver_add_page (GisDriver *driver,
                      GisPage   *page)
 {
diff --git a/gnome-initial-setup/gis-driver.h b/gnome-initial-setup/gis-driver.h
index 538deeb..9eb408e 100644
--- a/gnome-initial-setup/gis-driver.h
+++ b/gnome-initial-setup/gis-driver.h
@@ -38,6 +38,12 @@ G_BEGIN_DECLS
 typedef struct _GisDriver        GisDriver;
 typedef struct _GisDriverClass   GisDriverClass;
 
+typedef enum {
+  UM_LOCAL,
+  UM_ENTERPRISE,
+  NUM_MODES,
+} UmAccountMode;
+
 struct _GisDriver
 {
   GtkApplication parent;
@@ -69,6 +75,11 @@ void gis_driver_get_user_permissions (GisDriver    *driver,
                                       ActUser     **user,
                                       const gchar **password);
 
+void gis_driver_set_account_mode (GisDriver     *driver,
+                                  UmAccountMode  mode);
+
+UmAccountMode gis_driver_get_account_mode (GisDriver *driver);
+
 void gis_driver_set_user_language (GisDriver   *driver,
                                    const gchar *lang_id);
 
diff --git a/gnome-initial-setup/pages/account/gis-account-page.c 
b/gnome-initial-setup/pages/account/gis-account-page.c
index 9cf5231..8f5dcc4 100644
--- a/gnome-initial-setup/pages/account/gis-account-page.c
+++ b/gnome-initial-setup/pages/account/gis-account-page.c
@@ -32,12 +32,6 @@
 #include <glib/gi18n.h>
 #include <gio/gio.h>
 
-typedef enum {
-  UM_LOCAL,
-  UM_ENTERPRISE,
-  NUM_MODES,
-} UmAccountMode;
-
 struct _GisAccountPagePrivate
 {
   GtkWidget *page_local;
@@ -101,6 +95,7 @@ set_mode (GisAccountPage *page,
     return;
 
   priv->mode = mode;
+  gis_driver_set_account_mode (GIS_PAGE (page)->driver, mode);
 
   switch (mode)
     {
diff --git a/gnome-initial-setup/pages/password/gis-password-page.c 
b/gnome-initial-setup/pages/password/gis-password-page.c
index 92ac744..91dc694 100644
--- a/gnome-initial-setup/pages/password/gis-password-page.c
+++ b/gnome-initial-setup/pages/password/gis-password-page.c
@@ -73,16 +73,19 @@ gis_password_page_save_data (GisPage *gis_page)
   GisPasswordPage *page = GIS_PASSWORD_PAGE (gis_page);
   GisPasswordPagePrivate *priv = gis_password_page_get_instance_private (page);
   ActUser *act_user;
+  UmAccountMode account_mode;
   const gchar *password;
 
   if (gis_page->driver == NULL)
     return;
 
-  gis_driver_get_user_permissions (gis_page->driver, &act_user, &password);
+  account_mode = gis_driver_get_account_mode (gis_page->driver);
 
-  if (act_user == NULL) /* enterprise account */
+  if (account_mode == UM_ENTERPRISE)
     return;
 
+  gis_driver_get_user_permissions (gis_page->driver, &act_user, &password);
+
   password = gtk_entry_get_text (GTK_ENTRY (priv->password_entry));
 
   if (strlen (password) == 0)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]