Track Active Users
==============================

DESCRIPTION
-----------
Track user's activity over REST, SSH and UI and allow disabling inactive
accounts after the configured inactivity period.

Configuration
=========================

The track-active-users plugin is configured in
$site_path/etc/gerrit.config` files, example:

```text
[cache "@PLUGIN@.users_cache"]
  maxAge = 90d
```

Configuration parameters
---------------------

```plugin.@PLUGIN@.ignoreAccountId```
:  Specify an account Id that should not be auto disabled.
   May be specified more than once to specify multiple account Ids, for example:

   ```
   ignoreAccountId = 1000001
   ignoreAccountId = 1000002
   ```

```plugin.@PLUGIN@.ignoreGroup```
:  Specify one group that includes directly or indirectly all the accounts that
   should not be auto disabled.
   May be specified more than once to specify multiple groups, for example:

   ```
   ignoreGroup = Active Developers
   ignoreGroup = Administrators
   ```

   > **NOTE**: The `Service Users` group is always added to the list of groups of
   > accounts to not disable.

```plugin.@PLUGIN@.preloadAccounts```
:  Allow to preload the active users persistent cache with all the accounts that
   are currently flagged as active on All-Users when the plugin starts.

   > **NOTE**: When this option is enabled, all users configured in Gerrit will
   > always be flagged as active when Gerrit or the plugin is started, even though
   > they were not active for a long time.

   Default: true.

```plugin.@PLUGIN@.disableAccounts```
:  Allow to disable the users that have been evicted from the persistent cache because
   of inactivity.

   > **NOTE**: When this option is enabled, as soon as a user is evicted from the
   > persistent cache is then flagged as inactive on All-Users and therefore will be
   > unable to login or execute any operation until is manually reactivated.

   Default: true.

```cache."@PLUGIN@.users_cache".maxAge```
:  Maximum allowed inactivity time for user.
   Value should use common time unit suffixes to express their setting:

   * h, hr, hour, hours
   * d, day, days
   * w, week, weeks (`1 week` is treated as `7 days`)
   * mon, month, months (`1 month` is treated as `30 days`)
   * y, year, years (`1 year` is treated as `365 days`)

   If a time unit suffix is not specified, `hours` is assumed.
   Default: 90 days

Metrics
---------------------
Currently, the metrics exposed are the following:

```groovy_track_and_disable_inactive_users_active_users```
:  Indicates the number of active users.
   A user is considered active when its inactivity period is not greater than `cache."@PLUGIN@.users_cache".maxAge` .

SSH commands
---------------------
This script exposes the following SSH commands to the Gerrit administrator:

## Name

`list`, list active accounts

## Synopsis

````
ssh -p <port> <host> track-and-disable-inactive-users list [--verbose]
```

## Description

display the list of all account-ids that are considered active and
their last activity timestamp.

The `--verbose` option produces a more detailed progress of the extraction
of the active accounts and is intended to be used for debugging purposes.

## Access

Any user who has been granted the ‘Administrate Server’ capability.

## Scripting

This command is intended to be used in scripts and not interactively, as it
may return a very long list of accounts and doesn't do any pagination.

## Examples

List all the currently active accounts.

```
$ ssh -p 29418 review.example.com track-and-disable-inactive-users list

SEE ALSO
[source] (/admin/track-and-disable-inactive-users-1.4.groovy)
