summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnome-initial-setup/gnome-initial-setup.c13
-rw-r--r--gnome-initial-setup/pages/password/gis-password-page.c8
2 files changed, 18 insertions, 3 deletions
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
index ce9b679..57284ba 100644
--- a/gnome-initial-setup/gnome-initial-setup.c
+++ b/gnome-initial-setup/gnome-initial-setup.c
@@ -190,6 +190,7 @@ main (int argc, char *argv[])
GisDriver *driver;
int status;
GOptionContext *context;
+ GisDriverMode mode;
GOptionEntry entries[] = {
{ "existing-user", 0, 0, G_OPTION_ARG_NONE, &force_existing_user_mode,
@@ -221,9 +222,17 @@ main (int argc, char *argv[])
}
#endif
- gis_ensure_login_keyring ();
+ mode = get_mode ();
- driver = gis_driver_new (get_mode ());
+ /* When we are running as the gnome-initial-setup user we
+ * dont have a normal user session and need to initialize
+ * the keyring manually so that we can pass the credentials
+ * along to the new user in the handoff.
+ */
+ if (mode == GIS_DRIVER_MODE_NEW_USER)
+ gis_ensure_login_keyring ();
+
+ driver = gis_driver_new (mode);
g_signal_connect (driver, "rebuild-pages", G_CALLBACK (rebuild_pages_cb), NULL);
status = g_application_run (G_APPLICATION (driver), argc, argv);
diff --git a/gnome-initial-setup/pages/password/gis-password-page.c b/gnome-initial-setup/pages/password/gis-password-page.c
index 5acd5c8..e25bd0e 100644
--- a/gnome-initial-setup/pages/password/gis-password-page.c
+++ b/gnome-initial-setup/pages/password/gis-password-page.c
@@ -96,7 +96,13 @@ gis_password_page_save_data (GisPage *gis_page)
gis_driver_set_user_permissions (gis_page->driver, act_user, password);
- gis_update_login_keyring_password (password);
+ /* When creating a new user, after having setup the password in the
+ * users account we need to update the password for the gnome-initial-setup
+ * user as well so that the login keyring we intend to handoff to the
+ * new user has a matching authentication token.
+ */
+ if (gis_driver_get_mode (gis_page->driver) == GIS_DRIVER_MODE_NEW_USER)
+ gis_update_login_keyring_password (password);
}
static void