summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/polkit/polkitauthority.c14
-rw-r--r--src/polkitbackend/polkitbackendinteractiveauthority.c9
2 files changed, 23 insertions, 0 deletions
diff --git a/src/polkit/polkitauthority.c b/src/polkit/polkitauthority.c
index cc24e6c..3dc257f 100644
--- a/src/polkit/polkitauthority.c
+++ b/src/polkit/polkitauthority.c
@@ -869,6 +869,17 @@ check_authorization_cb (GDBusProxy *proxy,
* from. You can then call
* polkit_authority_check_authorization_finish() to get the result of
* the operation.
+ *
+ * Known keys in @details include <literal>polkit.message</literal>
+ * and <literal>polkit.message.gettext-domain</literal> that can be
+ * used to override the message shown to the user (the user might be
+ * running an authentication agent in another locale than the calling
+ * process so that's why both the message and gettext domain is
+ * needed).
+ *
+ * If @details is non-empty then the request will fail with
+ * #POLKIT_ERROR_FAILED unless the process doing the check itsef is
+ * sufficiently authorized (e.g. running as uid 0).
**/
void
polkit_authority_check_authorization (PolkitAuthority *authority,
@@ -985,6 +996,9 @@ polkit_authority_check_authorization_finish (PolkitAuthority *authority
* operation to complete because it involves waiting for the user to
* authenticate.
*
+ * See polkit_authority_check_authorization_sync() for how @details is
+ * handled.
+ *
* Returns: (transfer full): A #PolkitAuthorizationResult or %NULL if @error is set. Free with g_object_unref().
*/
PolkitAuthorizationResult *
diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
index 59b2fb7..462f334 100644
--- a/src/polkitbackend/polkitbackendinteractiveauthority.c
+++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
@@ -1743,6 +1743,7 @@ get_localized_data_for_challenge (PolkitBackendInteractiveAuthority *authority,
gchar *message;
gchar *icon_name;
PolkitDetails *localized_details;
+ const gchar *message_to_use;
priv = POLKIT_BACKEND_INTERACTIVE_AUTHORITY_GET_PRIVATE (authority);
@@ -1768,6 +1769,14 @@ get_localized_data_for_challenge (PolkitBackendInteractiveAuthority *authority,
}
g_setenv ("LANG", locale, TRUE);
+ message_to_use = polkit_details_lookup (details, "polkit.message");
+ if (message_to_use != NULL)
+ {
+ const gchar *gettext_domain;
+ gettext_domain = polkit_details_lookup (details, "polkit.message.gettext-domain");
+ message = g_strdup (g_dgettext (gettext_domain, message_to_use));
+ }
+
/* call into extension points to get localized auth dialog data - the list is sorted by priority */
action_lookup_list = get_action_lookup_list ();
for (l = action_lookup_list; l != NULL; l = l->next)