1 diff --git a/src/ck-manager.c b/src/ck-manager.c
2 index 99693a3..6bda488 100644
5 @@ -1026,9 +1026,10 @@ get_system_num_users (CkManager *manager)
8 #ifdef ENABLE_RBAC_SHUTDOWN
11 check_rbac_permissions (CkManager *manager,
12 DBusGMethodInvocation *context,
14 AuthorizedCallback callback)
17 @@ -1050,7 +1051,7 @@ check_rbac_permissions (CkManager *manager,
18 username = get_user_name (uid);
20 if (username == NULL ||
21 - !chkauthattr (RBAC_SHUTDOWN_KEY, username)) {
22 + !chkauthattr (action, username)) {
26 @@ -1065,9 +1066,11 @@ out:
31 + if (res && callback) {
32 callback (manager, context);
39 @@ -1126,7 +1129,7 @@ ck_manager_restart (CkManager *manager,
40 #if defined HAVE_POLKIT
41 check_polkit_permissions (manager, context, action, do_restart);
42 #elif defined ENABLE_RBAC_SHUTDOWN
43 - check_rbac_permissions (manager, context, do_restart);
44 + check_rbac_permissions (manager, context, RBAC_SHUTDOWN_KEY, do_restart);
46 g_warning ("Compiled without PolicyKit or RBAC support!");
48 @@ -1146,7 +1149,12 @@ ck_manager_can_restart (CkManager *manager,
49 #if defined HAVE_POLKIT
50 get_polkit_permissions (manager, action, context);
52 - dbus_g_method_return (context, TRUE);
53 + if (check_rbac_permissions (manager, context, RBAC_SHUTDOWN_KEY,
55 + dbus_g_method_return (context, TRUE);
57 + dbus_g_method_return (context, FALSE);
62 @@ -1197,7 +1205,7 @@ ck_manager_stop (CkManager *manager,
63 #if defined HAVE_POLKIT
64 check_polkit_permissions (manager, context, action, do_stop);
65 #elif defined ENABLE_RBAC_SHUTDOWN
66 - check_rbac_permissions (manager, context, do_stop);
67 + check_rbac_permissions (manager, context, RBAC_SHUTDOWN_KEY, do_stop);
69 g_warning ("Compiled without PolicyKit or RBAC support!");
71 @@ -1216,7 +1224,12 @@ ck_manager_can_stop (CkManager *manager,
72 #if defined HAVE_POLKIT
73 get_polkit_permissions (manager, action, context);
75 - dbus_g_method_return (context, TRUE);
76 + if (check_rbac_permissions (manager, context, RBAC_SHUTDOWN_KEY,
78 + dbus_g_method_return (context, TRUE);
80 + dbus_g_method_return (context, FALSE);