## PolkitBackendAuthority PolkitBackendAuthority — Abstract base class for authority backends |

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

    #define             POLKIT_BACKEND_AUTHORITY_EXTENSION_POINT_NAME
                        PolkitBackendAuthority;
    struct              PolkitBackendAuthorityClass;
    const gchar *       polkit_backend_authority_get_name   (PolkitBackendAuthority *authority);
    const gchar *       polkit_backend_authority_get_version
                                                            (PolkitBackendAuthority *authority);
    PolkitAuthorityFeatures polkit_backend_authority_get_features
                                                            (PolkitBackendAuthority *authority);
    void                polkit_backend_authority_check_authorization
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             PolkitSubject *subject,
                                                             const gchar *action_id,
                                                             PolkitDetails *details,
                                                             PolkitCheckAuthorizationFlags flags,
                                                             GCancellable *cancellable,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);
    PolkitAuthorizationResult * polkit_backend_authority_check_authorization_finish
                                                            (PolkitBackendAuthority *authority,
                                                             GAsyncResult *res,
                                                             GError **error);
    gboolean            polkit_backend_authority_register_authentication_agent
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             PolkitSubject *subject,
                                                             const gchar *locale,
                                                             const gchar *object_path,
                                                             GVariant *options,
                                                             GError **error);
    gboolean            polkit_backend_authority_unregister_authentication_agent
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             PolkitSubject *subject,
                                                             const gchar *object_path,
                                                             GError **error);
    gboolean            polkit_backend_authority_authentication_agent_response
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             const gchar *cookie,
                                                             PolkitIdentity *identity,
                                                             GError **error);
    GList *             polkit_backend_authority_enumerate_actions
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             const gchar *locale,
                                                             GError **error);
    GList *             polkit_backend_authority_enumerate_temporary_authorizations
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             PolkitSubject *subject,
                                                             GError **error);
    gboolean            polkit_backend_authority_revoke_temporary_authorizations
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             PolkitSubject *subject,
                                                             GError **error);
    gboolean            polkit_backend_authority_revoke_temporary_authorization_by_id
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             const gchar *id,
                                                             GError **error);
    PolkitBackendAuthority * polkit_backend_authority_get   (void);
    gpointer            polkit_backend_authority_register   (PolkitBackendAuthority *authority,
                                                             GDBusConnection *connection,
                                                             const gchar *object_path,
                                                             GError **error);
    void                polkit_backend_authority_unregister (gpointer registration_id);

## Object Hierarchy

      GObject
       +----PolkitBackendAuthority
             +----PolkitBackendInteractiveAuthority

## Signals

      "changed"                                        : Run Last

## Description

To implement an authority backend, simply subclass PolkitBackendAuthority and implement the required VFuncs.

## Details

### POLKIT_BACKEND_AUTHORITY_EXTENSION_POINT_NAME

    #define POLKIT_BACKEND_AUTHORITY_EXTENSION_POINT_NAME "polkit-backend-authority-1"

Extension point name for authority backend implementations.

### PolkitBackendAuthority

    typedef struct _PolkitBackendAuthority PolkitBackendAuthority;

The PolkitBackendAuthority struct should not be accessed directly.

### struct PolkitBackendAuthorityClass

    struct PolkitBackendAuthorityClass {
      GObjectClass parent_class;

      /* Signals */
      void (*changed)  (PolkitBackendAuthority   *authority);

      /* VTable */

      const gchar             *(*get_name)     (PolkitBackendAuthority *authority);
      const gchar             *(*get_version)  (PolkitBackendAuthority *authority);
      PolkitAuthorityFeatures  (*get_features) (PolkitBackendAuthority *authority);

      GList *(*enumerate_actions)  (PolkitBackendAuthority   *authority,
                                    PolkitSubject            *caller,
                                    const gchar              *locale,
                                    GError                  **error);

      void (*check_authorization) (PolkitBackendAuthority        *authority,
                                   PolkitSubject                 *caller,
                                   PolkitSubject                 *subject,
                                   const gchar                   *action_id,
                                   PolkitDetails                 *details,
                                   PolkitCheckAuthorizationFlags  flags,
                                   GCancellable                  *cancellable,
                                   GAsyncReadyCallback            callback,
                                   gpointer                       user_data);

      PolkitAuthorizationResult * (*check_authorization_finish) (PolkitBackendAuthority  *authority,
                                                                 GAsyncResult            *res,
                                                                 GError                 **error);

      gboolean (*register_authentication_agent) (PolkitBackendAuthority   *authority,
                                                 PolkitSubject            *caller,
                                                 PolkitSubject            *subject,
                                                 const gchar              *locale,
                                                 const gchar              *object_path,
                                                 GVariant                 *options,
                                                 GError                  **error);

      gboolean (*unregister_authentication_agent) (PolkitBackendAuthority   *authority,
                                                   PolkitSubject            *caller,
                                                   PolkitSubject            *subject,
                                                   const gchar              *object_path,
                                                   GError                  **error);

      gboolean (*authentication_agent_response) (PolkitBackendAuthority   *authority,
                                                 PolkitSubject            *caller,
                                                 const gchar              *cookie,
                                                 PolkitIdentity           *identity,
                                                 GError                  **error);

      GList *(*enumerate_temporary_authorizations) (PolkitBackendAuthority   *authority,
                                                    PolkitSubject            *caller,
                                                    PolkitSubject            *subject,
                                                    GError                  **error);

      gboolean (*revoke_temporary_authorizations) (PolkitBackendAuthority   *authority,
                                                   PolkitSubject            *caller,
                                                   PolkitSubject            *subject,
                                                   GError                  **error);

      gboolean (*revoke_temporary_authorization_by_id) (PolkitBackendAuthority   *authority,
                                                        PolkitSubject            *caller,
                                                        const gchar              *id,
                                                        GError                  **error);
    };

Class structure for PolkitBackendAuthority.

GObjectClass `parent_class`; | The parent class.
`changed` () | Function pointer for "changed" signal.
`get_name` () | Function pointer for the `polkit_backend_authority_get_name()` function.
`get_version` () | Function pointer for the `polkit_backend_authority_get_version()` function.
`get_features` () | Function pointer for the `polkit_backend_authority_get_features()` function.
`enumerate_actions` () | Enumerates registered actions on the system. See `polkit_backend_authority_enumerate_actions()` for details.
`check_authorization` () | Called to initiate an asynchronous authorization check. See `polkit_backend_authority_check_authorization()` for details.
`check_authorization_finish` () | Called when finishing an authorization check. See `polkit_backend_authority_check_authorization_finish()` for details.
`register_authentication_agent` () | Called when an authentication agent is attempting to register or `NULL` if the backend doesn't support the operation. See `polkit_backend_authority_register_authentication_agent()` for details.
`unregister_authentication_agent` () | Called when an authentication agent is attempting to unregister or `NULL` if the backend doesn't support the operation. See `polkit_backend_authority_unregister_authentication_agent()` for details.
`authentication_agent_response` () | Called by an authentication agent when the user successfully authenticates or `NULL` if the backend doesn't support the operation. See `polkit_backend_authority_authentication_agent_response()` for details.
`enumerate_temporary_authorizations` () | Called to enumerate temporary authorizations or `NULL` if the backend doesn't support the operation. See `polkit_backend_authority_enumerate_temporary_authorizations()` for details.
`revoke_temporary_authorizations` () | Called to revoke temporary authorizations or `NULL` if the backend doesn't support the operation. See `polkit_backend_authority_revoke_temporary_authorizations()` for details.
`revoke_temporary_authorization_by_id` () | Called to revoke a temporary authorization identified by id or `NULL` if the backend doesn't support the operation. See `polkit_backend_authority_revoke_temporary_authorization_by_id()` for details.

### polkit_backend_authority_get_name ()

    const gchar *       polkit_backend_authority_get_name   (PolkitBackendAuthority *authority);

Gets the name of the authority backend.

`authority` : | A PolkitBackendAuthority.
Returns : | The name of the backend.

### polkit_backend_authority_get_version ()

    const gchar *       polkit_backend_authority_get_version
                                                            (PolkitBackendAuthority *authority);

Gets the version of the authority backend.

`authority` : | A PolkitBackendAuthority.
Returns : | The name of the backend.

### polkit_backend_authority_get_features ()

    PolkitAuthorityFeatures polkit_backend_authority_get_features
                                                            (PolkitBackendAuthority *authority);

Gets the features supported by the authority backend.

`authority` : | A PolkitBackendAuthority.
Returns : | Flags from PolkitAuthorityFeatures.

### polkit_backend_authority_check_authorization ()

    void                polkit_backend_authority_check_authorization
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             PolkitSubject *subject,
                                                             const gchar *action_id,
                                                             PolkitDetails *details,
                                                             PolkitCheckAuthorizationFlags flags,
                                                             GCancellable *cancellable,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);

Asynchronously checks if `subject` is authorized to perform the action represented by `action_id`.

When the operation is finished, `callback` will be invoked. You can then call `polkit_backend_authority_check_authorization_finish()` to get the result of the operation.

`authority` : | A PolkitBackendAuthority.
`caller` : | The system bus name that initiated the query.
`subject` : | A PolkitSubject.
`action_id` : | The action to check for.
`details` : | Details about the action or `NULL`.
`flags` : | A set of PolkitCheckAuthorizationFlags.
`cancellable` : | A GCancellable.
`callback` : | A GAsyncReadyCallback to call when the request is satisfied.
`user_data` : | The data to pass to `callback`.

### polkit_backend_authority_check_authorization_finish ()

    PolkitAuthorizationResult * polkit_backend_authority_check_authorization_finish
                                                            (PolkitBackendAuthority *authority,
                                                             GAsyncResult *res,
                                                             GError **error);

Finishes checking if a subject is authorized for an action.

`authority` : | A PolkitBackendAuthority.
`res` : | A GAsyncResult obtained from the callback.
`error` : | Return location for error or `NULL`.
Returns : | A PolkitAuthorizationResult or `NULL` if `error` is set. Free with `g_object_unref()`.

### polkit_backend_authority_register_authentication_agent ()

    gboolean            polkit_backend_authority_register_authentication_agent
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             PolkitSubject *subject,
                                                             const gchar *locale,
                                                             const gchar *object_path,
                                                             GVariant *options,
                                                             GError **error);

Registers an authentication agent.

`authority` : | A PolkitBackendAuthority.
`caller` : | The system bus name that initiated the query.
`subject` : | The subject the authentication agent wants to register for.
`locale` : | The locale of the authentication agent.
`object_path` : | The object path for the authentication agent.
`options` : | A GVariant with options or `NULL`.
`error` : | Return location for error or `NULL`.
Returns : | `TRUE` if the authentication agent was successfully registered, `FALSE` if `error` is set.

### polkit_backend_authority_unregister_authentication_agent ()

    gboolean            polkit_backend_authority_unregister_authentication_agent
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             PolkitSubject *subject,
                                                             const gchar *object_path,
                                                             GError **error);

Unregisters an authentication agent.

`authority` : | A PolkitBackendAuthority.
`caller` : | The system bus name that initiated the query.
`subject` : | The subject the agent claims to be registered at.
`object_path` : | The object path that the authentication agent is registered at.
`error` : | Return location for error or `NULL`.
Returns : | `TRUE` if the authentication agent was successfully unregistered, `FALSE` if `error` is set.

### polkit_backend_authority_authentication_agent_response ()

    gboolean            polkit_backend_authority_authentication_agent_response
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             const gchar *cookie,
                                                             PolkitIdentity *identity,
                                                             GError **error);

Provide response that `identity` successfully authenticated for the authentication request identified by `cookie`.

`authority` : | A PolkitBackendAuthority.
`caller` : | The system bus name that initiated the query.
`cookie` : | The cookie passed to the authentication agent from the authority.
`identity` : | The identity that was authenticated.
`error` : | Return location for error or `NULL`.
Returns : | `TRUE` if `authority` acknowledged the call, `FALSE` if `error` is set.

### polkit_backend_authority_enumerate_actions ()

    GList *             polkit_backend_authority_enumerate_actions
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             const gchar *locale,
                                                             GError **error);

Retrieves all registered actions.

`authority` : | A PolkitBackendAuthority.
`caller` : | The system bus name that initiated the query.
`locale` : | The locale to retrieve descriptions for.
`error` : | Return location for error or `NULL`.
Returns : | A list of PolkitActionDescription objects or `NULL` if `error` is set. The returned list should be freed with `g_list_free()` after each element have been freed with `g_object_unref()`.

### polkit_backend_authority_enumerate_temporary_authorizations ()

    GList *             polkit_backend_authority_enumerate_temporary_authorizations
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             PolkitSubject *subject,
                                                             GError **error);

Gets temporary authorizations for `subject`.

`authority` : | A PolkitBackendAuthority.
`caller` : | The system bus name that initiated the query.
`subject` : | The subject to get temporary authorizations for.
`error` : | Return location for error.
Returns : | A list of PolkitTemporaryAuthorization objects or `NULL` if `error` is set. The returned list should be freed with `g_list_free()` after each element have been freed with `g_object_unref()`.

### polkit_backend_authority_revoke_temporary_authorizations ()

    gboolean            polkit_backend_authority_revoke_temporary_authorizations
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             PolkitSubject *subject,
                                                             GError **error);

Revokes temporary authorizations for `subject`.

`authority` : | A PolkitBackendAuthority.
`caller` : | The system bus name that initiated the query.
`subject` : | The subject to revoke temporary authorizations for.
`error` : | Return location for error.
Returns : | `TRUE` if the operation succeeded, `FALSE` if `error` is set.

### polkit_backend_authority_revoke_temporary_authorization_by_id ()

    gboolean            polkit_backend_authority_revoke_temporary_authorization_by_id
                                                            (PolkitBackendAuthority *authority,
                                                             PolkitSubject *caller,
                                                             const gchar *id,
                                                             GError **error);

Revokes a temporary authorizations with opaque identifier `id`.

`authority` : | A PolkitBackendAuthority.
`caller` : | The system bus name that initiated the query.
`id` : | The opaque identifier of the temporary authorization.
`error` : | Return location for error.
Returns : | `TRUE` if the operation succeeded, `FALSE` if `error` is set.

### polkit_backend_authority_get ()

    PolkitBackendAuthority * polkit_backend_authority_get   (void);

Loads all GIOModules from `$(libdir)/polkit-1/extensions` to determine what implementation of PolkitBackendAuthority to use. Then instantiates an object of the implementation with the highest priority and unloads all other modules.

Returns : | A PolkitBackendAuthority. Free with `g_object_unref()`.

### polkit_backend_authority_register ()

    gpointer            polkit_backend_authority_register   (PolkitBackendAuthority *authority,
                                                             GDBusConnection *connection,
                                                             const gchar *object_path,
                                                             GError **error);

Registers `authority` on a GDBusConnection.

`connection` : | The GDBusConnection to register the authority on.
`authority` : | A PolkitBackendAuthority.
`object_path` : | Object path of the authority.
`error` : | Return location for error.
Returns : | A gpointer that can be used with `polkit_backend_authority_unregister()` or `NULL` if `error` is set.

### polkit_backend_authority_unregister ()

    void                polkit_backend_authority_unregister (gpointer registration_id);

Unregisters a PolkitBackendAuthority registered with `polkit_backend_authority_register()`.

`registration_id` : | A gpointer obtained from `polkit_backend_authority_register()`.

## Signal Details

### The `"changed"` signal

    void                user_function                      (PolkitBackendAuthority *authority,
                                                            gpointer                user_data)      : Run Last

Emitted when actions and/or authorizations change.

`authority` : | A PolkitBackendAuthority.
`user_data` : | user data set when the signal handler was connected.

## See Also

PolkitBackendLocalAuthority