~lightdm-team/lightdm/1.4

« back to all changes in this revision

Viewing changes to liblightdm-gobject/greeter.c

  • Committer: Robert Ancell
  • Date: 2011-06-03 04:29:00 UTC
  • Revision ID: robert.ancell@canonical.com-20110603042900-m3s3sl0shaomban4
More plumbing for guest logins

Show diffs side-by-side

added added

removed removed

Lines of Context:
111
111
    gchar *timed_user;
112
112
    gint login_delay;
113
113
    guint login_timeout;
 
114
    gboolean guest_account_supported;
114
115
};
115
116
 
116
117
G_DEFINE_TYPE (LdmGreeter, ldm_greeter, G_TYPE_OBJECT);
330
331
        greeter->priv->default_session = read_string (greeter, &offset);
331
332
        greeter->priv->timed_user = read_string (greeter, &offset);
332
333
        greeter->priv->login_delay = read_int (greeter, &offset);
 
334
        greeter->priv->guest_account_supported = read_int (greeter, &offset) != 0;
333
335
 
334
 
        g_debug ("Connected theme=%s default-layout=%s default-session=%s timed-user=%s login-delay=%d",
 
336
        g_debug ("Connected theme=%s default-layout=%s default-session=%s timed-user=%s login-delay=%d guest-account-supported=%s",
335
337
                 greeter->priv->theme,
336
338
                 greeter->priv->default_layout, greeter->priv->default_session,
337
 
                 greeter->priv->timed_user, greeter->priv->login_delay);
 
339
                 greeter->priv->timed_user, greeter->priv->login_delay,
 
340
                 greeter->priv->guest_account_supported ? "true" : "false");
338
341
 
339
342
        /* Set timeout for default login */
340
343
        if (greeter->priv->timed_user[0] != '\0' && greeter->priv->login_delay > 0)
1182
1185
}
1183
1186
 
1184
1187
/**
 
1188
 * ldm_greeter_get_has_guest_session:
 
1189
 * @greeter: A #LdmGreeter
 
1190
 *
 
1191
 * Check if guest sessions are supported.
 
1192
 *
 
1193
 * Return value: TRUE if guest sessions are supported.
 
1194
 */
 
1195
gboolean
 
1196
ldm_greeter_get_has_guest_session (LdmGreeter *greeter)
 
1197
{
 
1198
    g_return_val_if_fail (LDM_IS_GREETER (greeter), FALSE);
 
1199
    return greeter->priv->guest_account_supported;
 
1200
}
 
1201
 
 
1202
/**
1185
1203
 * ldm_greeter_get_timed_login_user:
1186
1204
 * @greeter: A #LdmGreeter
1187
1205
 *
1350
1368
    if (!language)
1351
1369
        language = "";
1352
1370
 
1353
 
    g_debug ("Logging in");
 
1371
    g_debug ("Logging in as %s", username);
1354
1372
    write_header (greeter, GREETER_MESSAGE_LOGIN, string_length (username) + string_length (session) + string_length (language));
1355
1373
    write_string (greeter, username);
1356
1374
    write_string (greeter, session);
1368
1386
void
1369
1387
ldm_greeter_login_with_defaults (LdmGreeter *greeter, const gchar *username)
1370
1388
{
1371
 
    g_return_if_fail (LDM_IS_GREETER (greeter));
1372
 
    g_return_if_fail (username != NULL);
1373
1389
    ldm_greeter_login (greeter, username, NULL, NULL);
1374
1390
}
1375
1391
 
 
1392
/**
 
1393
 * ldm_greeter_login_as_guest:
 
1394
 * @greeter: A #LdmGreeter
 
1395
 * @session: (allow-none): The session to log into or NULL to use the default
 
1396
 * @language: (allow-none): The language to use or NULL to use the default
 
1397
 *
 
1398
 * Login a user into a guest session.
 
1399
 **/
 
1400
void
 
1401
ldm_greeter_login_as_guest (LdmGreeter *greeter, const gchar *session, const gchar *language)
 
1402
{
 
1403
    g_return_if_fail (LDM_IS_GREETER (greeter));
 
1404
 
 
1405
    if (!session)
 
1406
        session = "";
 
1407
    if (!language)
 
1408
        language = "";
 
1409
 
 
1410
    g_debug ("Logging into guest account");
 
1411
    write_header (greeter, GREETER_MESSAGE_LOGIN_AS_GUEST, string_length (session) + string_length (language));
 
1412
    write_string (greeter, session);
 
1413
    write_string (greeter, language);
 
1414
    flush (greeter);
 
1415
}
 
1416
 
 
1417
/**
 
1418
 * ldm_greeter_login_as_guest_with_defaults:
 
1419
 * @greeter: A #LdmGreeter
 
1420
 *
 
1421
 * Login a user into a guest session using default settings for that user.
 
1422
 **/
 
1423
void
 
1424
ldm_greeter_login_as_guest_with_defaults (LdmGreeter *greeter)
 
1425
{
 
1426
    ldm_greeter_login_as_guest (greeter, NULL, NULL);  
 
1427
}
 
1428
 
1376
1429
static gboolean
1377
1430
upower_call_function (LdmGreeter *greeter, const gchar *function, gboolean has_result)
1378
1431
{