class AccountsApp extends InstalledApp

App for managing accounts and authenticating users.

Creates and manages accounts, groups of accounts, authentication, managing and validating contacts. Supports account-crypto, two-factor authentication, multi-client/session management, authentication via external sources, and granular per-account/per-group config.

Properties

protected $API

Reference to the main API, for convenience

from  BaseApp
static private $metadata from  BaseApp
protected $config from  InstalledApp
protected $database from  InstalledApp

Methods

__construct(Main $api)

All apps are constructed when Andromeda runs

mixed
Run(Input $input)

Checks if the client is running/needs to run install/upgrade {@inheritDoc}

static array
getUsage()

Returns an array of strings showing the CLI usage of the app

static string
getName()

No description

static string|null
getLogClass()

Return this app's BaseAppLog class name, if used (or null)

static 
getMetadata(string $app, string $key)

Loads a metadata for the given app with the given key

from  BaseApp
static array
getAppRequires(string $app)

No description

from  BaseApp
static string
getAppApiVersion(string $app)

No description

from  BaseApp
static string
getVersion()

No description

from  BaseApp
commit()

Tells the app to commit any changes made outside the database

from  BaseApp
rollback()

Tells the app to rollback any changes made outside the database

from  BaseApp
static string
getInstallFlags()

No description

static string
getUpgradeFlags()

No description

static array
getInstallUsage()

No description

static string
getConfigClass()

Return the BaseConfig class for this app

bool
allowInstall()

Returns true if the user is allowed to install/upgrade

static string
getTemplateFolder()

Returns the path of the app's code folder

static array
getUpgradeScripts()

No description

Install(Input $input)

Installs the app by importing its SQL file and creating config

Upgrade(Input $input)

Iterates over the list of upgrade scripts, running them sequentially until the DB is up to date with the code

GetConfig()

No description

array
RunGetConfig(Input $input, Authenticator|null $authenticator)

Gets config for this app

array
RunSetConfig(Input $input, Authenticator|null $authenticator)

Sets config for this app

array
GetAuthSources(Input $input, Authenticator|null $authenticator)

Returns a list of the configured authentication sources

array|null
GetAccount(Input $input, Authenticator|null $authenticator)

Gets the current account object, or the specified one

void
ChangePassword(Input $input, Authenticator|null $authenticator)

Changes the password for an account

static string
capitalizeWords(string $str)

Returns the given string with each character after a space capitalized

void
SetFullName(Input $input, Authenticator|null $authenticator)

Sets the user's full (real) name

void
EmailRecovery(Input $input)

Emails a recovery key to the user's registered contacts

array|null
EnableCrypto(Input $input, Authenticator|null $authenticator)

Enables server-side crypto for an account and returns new recovery keys

void
DisableCrypto(Input $input, Authenticator|null $authenticator)

Disables server side crypto for an account

array
CreateAccount(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Creates a new user account

array
CreateSession(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Creates a new session, and possibly a new client for the account

array
CreateRecoveryKeys(Input $input, Authenticator|null $authenticator)

Creates a set of recovery keys, optionally replacing existing

array
CreateTwoFactor(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Creates a two factor authentication source, and recovery keys

void
VerifyTwoFactor(Input $input, Authenticator|null $authenticator)

Verifies a two factor source

array
CreateContact(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Adds a contact to the account

void
VerifyContact(Input $input)

Verifies an account contact

void
DeleteAccount(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes the current account (and signs out)

void
DeleteSession(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes an account session (signing it out)

void
DeleteClient(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes an account session and client (signing out fully)

void
DeleteAllAuth(Input $input, Authenticator|null $authenticator)

Deletes all registered clients/sessions for an account

void
DeleteTwoFactor(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes a two factor source for an account

void
DeleteContact(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes a contact from an account

array
EditContact(Input $input, Authenticator|null $authenticator)

Edits a contact for an account

array
SearchAccounts(Input $input, Authenticator|null $authenticator)

Searches for accounts identified with the given name prefix

array
SearchGroups(Input $input, Authenticator|null $authenticator)

Searches for groups identified with the given name prefix

array
ListAccounts(Input $input, Authenticator|null $authenticator)

Returns a list of all registered accounts

array
ListGroups(Input $input, Authenticator|null $authenticator)

Returns a list of all registered groups

array
CreateGroup(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Creates a new account group

array
EditGroup(Input $input, Authenticator|null $authenticator)

Edits properties of an existing group

array
GetGroup(Input $input, Authenticator|null $authenticator)

Returns the requested group object

void
DeleteGroup(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes an account group

array
AddGroupMember(Input $input, Authenticator|null $authenticator)

Adds an account to a group

array
RemoveGroupMember(Input $input, Authenticator|null $authenticator)

Removes an account from a group

array|null
GetMembership(Input $input, Authenticator|null $authenticator)

Gets metadata for an account group membership

array
CreateAuthSource(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Adds a new external authentication source, optionally testing it

array
TestAuthSource(Input $input, Authenticator|null $authenticator)

Tests an auth source by running an auth query on it

array
EditAuthSource(Input $input, Authenticator|null $authenticator)

Edits the properties of an existing auth source, optionally testing it

void
DeleteAuthSource(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Removes an external auth source, deleting accounts associated with it!

array
SetAccountProps(Input $input, Authenticator|null $authenticator)

Sets config on an account

array
SetGroupProps(Input $input, Authenticator|null $authenticator)

Sets config on a group

void
SendMessage(Input $input, Authenticator|null $authenticator)

Sends a message to the given account or group's contacts

array
AddWhitelist(Input $input, Authenticator|null $authenticator)

Adds a new entry to the account create whitelist

void
RemoveWhitelist(Input $input, Authenticator|null $authenticator)

Removes an entry from the account create whitelist

array
GetWhitelist(Input $input, Authenticator|null $authenticator)

Gets all entries in the account whitelist

Details

at line 181
__construct(Main $api)

All apps are constructed when Andromeda runs

Parameters

Main $api

at line 193
mixed Run(Input $input)

Checks if the client is running/needs to run install/upgrade {@inheritDoc}

Parameters

Input $input

the user input

Return Value

mixed

the value to be output to the user

Exceptions

InstallRequiredException

if the DB is not installed

UpgradeRequiredException

if the DB version does not match

See also

\Andromeda\Apps\Accounts\BaseApp::Run()

at line 127
static array getUsage()

Returns an array of strings showing the CLI usage of the app

Return Value

array

possible commands

at line 117
static string getName()

No description

Return Value

string

the lowercase name of the app

at line 119
static protected string|null getLogClass()

Return this app's BaseAppLog class name, if used (or null)

Return Value

string|null

in BaseApp at line 59
static protected getMetadata(string $app, string $key)

Loads a metadata for the given app with the given key

Loads the app's JSON metadata file but not its code

Parameters

string $app
string $key

in BaseApp at line 77
static array getAppRequires(string $app)

No description

Parameters

string $app

Return Value

array

Returns the list of apps this app depends on

in BaseApp at line 83
static string getAppApiVersion(string $app)

No description

Parameters

string $app

Return Value

string

Returns the major.minor API version this app is compatible with

in BaseApp at line 89
static string getVersion()

No description

Return Value

string

the app's version information

in BaseApp at line 95
commit()

Tells the app to commit any changes made outside the database

in BaseApp at line 98
rollback()

Tells the app to rollback any changes made outside the database

at line 125
static protected string getInstallFlags()

No description

Return Value

string

in InstalledApp at line 108
static protected string getUpgradeFlags()

No description

Return Value

string

in InstalledApp at line 110
static protected array getInstallUsage()

No description

Return Value

array

at line 121
static protected string getConfigClass()

Return the BaseConfig class for this app

Return Value

string

in InstalledApp at line 144
protected bool allowInstall()

Returns true if the user is allowed to install/upgrade

Return Value

bool

in InstalledApp at line 151
static protected string getTemplateFolder()

Returns the path of the app's code folder

Return Value

string

in InstalledApp at line 157
static protected array getUpgradeScripts()

No description

Return Value

array

the array of upgrade scripts indexed by version (in order!)

at line 270
protected Install(Input $input)

Installs the app by importing its SQL file and creating config

in InstalledApp at line 207
protected Upgrade(Input $input)

Iterates over the list of upgrade scripts, running them sequentially until the DB is up to date with the code

Parameters

Input $input

at line 123
protected Config GetConfig()

No description

Return Value

Config

at line 291
protected array RunGetConfig(Input $input, Authenticator|null $authenticator)

Gets config for this app

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Config

See also

Config::GetClientObject

at line 304
protected array RunSetConfig(Input $input, Authenticator|null $authenticator)

Sets config for this app

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Config

Exceptions

AuthenticationFailedException

if not admin

See also

Config::GetClientObject

at line 317
protected array GetAuthSources(Input $input, Authenticator|null $authenticator)

Returns a list of the configured authentication sources

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

[id:Auth\Manager]

See also

Manager::GetClientObject

at line 334
protected array|null GetAccount(Input $input, Authenticator|null $authenticator)

Gets the current account object, or the specified one

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array|null

Account

Exceptions

UnknownAccountException

if the specified account is not valid

See also

Account::GetClientObject

at line 367
protected void ChangePassword(Input $input, Authenticator|null $authenticator)

Changes the password for an account

If currently logged in, this changes the password for the user's account (requiring the old one) If not logged in, this allows account recovery by resetting the password via a recovery key.

Parameters

Input $input
Authenticator|null $authenticator

Return Value

void

Exceptions

AuthenticationFailedException

if the given account or recovery key are invalid

ChangeExternalPasswordException

if the user's account uses an non-local auth source

at line 400
static private string capitalizeWords(string $str)

Returns the given string with each character after a space capitalized

Parameters

string $str

Return Value

string

at line 411
protected void SetFullName(Input $input, Authenticator|null $authenticator)

Sets the user's full (real) name

Parameters

Input $input
Authenticator|null $authenticator

Return Value

void

Exceptions

AuthenticationFailedException

if not logged in

at line 425
protected void EmailRecovery(Input $input)

Emails a recovery key to the user's registered contacts

Parameters

Input $input

Return Value

void

Exceptions

UnknownAccountException

if the given username is invalid

RecoveryKeyCreateException

if crypto or two factor are enabled

at line 461
protected array|null EnableCrypto(Input $input, Authenticator|null $authenticator)

Enables server-side crypto for an account and returns new recovery keys

Deletes any existing recovery keys, requiring two factor if they exist

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array|null

[id:RecoveryKey] if crypto was not enabled

Exceptions

AuthenticationFailedException

if not signed in

See also

RecoveryKey::GetClientObject

at line 497
protected void DisableCrypto(Input $input, Authenticator|null $authenticator)

Disables server side crypto for an account

Parameters

Input $input
Authenticator|null $authenticator

Return Value

void

Exceptions

AuthenticationFailedException

if not signed in

at line 516
protected array CreateAccount(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Creates a new user account

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

array

Account

Exceptions

AccountCreateDeniedException

if the feature is disabled

AccountExistsException

if the account already exists

See also

Account::GetClientObject

at line 591
protected array CreateSession(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Creates a new session, and possibly a new client for the account

The authentication source for the account must be provided if not local. First locates the account, then checks the password. Possibly creates a new account if it exists on the external auth source. Then checks the client object in use, creating one and checking extra auth if not provided. Account crypto is checked, password age is checked, dates are updated. Then finally, the session is created and the client is returned.

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

array

{client:Client, account:Account}

Exceptions

ClientDeniedException

if already logged in

UnknownAuthSourceException

if the given auth source is invalid

AuthenticationFailedException

if the given username/password are wrong

AccountDisabledException

if the account is not enabled

UnknownClientException

if the given client is invalid

OldPasswordRequiredException

if the old password is required to unlock crypto

NewPasswordRequiredException

if a new password is required to be set

See also

Client::GetClientObject
Account::GetClientObject

at line 726
protected array CreateRecoveryKeys(Input $input, Authenticator|null $authenticator)

Creates a set of recovery keys, optionally replacing existing

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

[id:RecoveryKey]

Exceptions

AuthenticationFailedException

if not logged in

See also

RecoveryKey::GetClientObject

at line 753
protected array CreateTwoFactor(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Creates a two factor authentication source, and recovery keys

Also activates crypto for the account, if allowed and not active. Doing so will delete all other sessions for the account.

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

array

{twofactor:TwoFactor,recoverykeys:[id:RecoveryKey]} \

  • recovery keys are returned only if they don't already exist

Exceptions

AuthenticationFailedException

if not signed in

See also

TwoFactor::GetClientObject
RecoveryKey::GetClientObject

at line 783
protected void VerifyTwoFactor(Input $input, Authenticator|null $authenticator)

Verifies a two factor source

Parameters

Input $input
Authenticator|null $authenticator

Return Value

void

Exceptions

AuthenticationFailedException

if not signed in

at line 804
protected array CreateContact(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Adds a contact to the account

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

array

Contact

Exceptions

AuthenticationFailedException

if not signed in

ContactExistsException

if the contact info is used

See also

Contact::GetClientObject

at line 827
protected void VerifyContact(Input $input)

Verifies an account contact

Parameters

Input $input

Return Value

void

Exceptions

AuthenticationFailedException

if the given key is invalid

UnknownContactException

if the contact does not exist

at line 842
protected void DeleteAccount(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes the current account (and signs out)

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

void

Exceptions

AuthenticationFailedException

if not signed in

AccountDeleteDeniedException

if delete is not allowed

at line 867
protected void DeleteSession(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes an account session (signing it out)

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

void

Exceptions

AuthenticationFailedException

if not signed in

UnknownSessionException

if an invalid session was provided

at line 895
protected void DeleteClient(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes an account session and client (signing out fully)

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

void

Exceptions

AuthenticationFailedException

if not signed in

UnknownClientException

if an invalid client was provided

at line 922
protected void DeleteAllAuth(Input $input, Authenticator|null $authenticator)

Deletes all registered clients/sessions for an account

Parameters

Input $input
Authenticator|null $authenticator

Return Value

void

Exceptions

AuthenticationFailedException

if not signed in

at line 943
protected void DeleteTwoFactor(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes a two factor source for an account

If this leaves the account without two factor, crypto is disabled

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

void

Exceptions

AuthenticationFailedException

if not signed in

UnknownTwoFactorException

if the given twofactor is invalid

at line 965
protected void DeleteContact(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes a contact from an account

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

void

Exceptions

AuthenticationFailedException

if not signed in

UnknownContactException

if the contact is invalid

ContactRequiredException

if a valid contact is required

at line 988
protected array EditContact(Input $input, Authenticator|null $authenticator)

Edits a contact for an account

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Exceptions

AuthenticationFailedException
UnknownContactException

at line 1011
protected array SearchAccounts(Input $input, Authenticator|null $authenticator)

Searches for accounts identified with the given name prefix

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Account

Exceptions

AuthenticationFailedException

if not signed in

SearchDeniedException

if the feature is disabled

See also

Account::LoadAllMatchingInfo
Account::GetClientObject

at line 1037
protected array SearchGroups(Input $input, Authenticator|null $authenticator)

Searches for groups identified with the given name prefix

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Group

Exceptions

AuthenticationFailedException

if not signed in

SearchDeniedException

if the feature is disabled

See also

Group::LoadAllMatchingName
Group::GetClientObject

at line 1061
protected array ListAccounts(Input $input, Authenticator|null $authenticator)

Returns a list of all registered accounts

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

[id:Account]

Exceptions

AuthenticationFailedException

if not admin

See also

Account::GetClientObject

at line 1082
protected array ListGroups(Input $input, Authenticator|null $authenticator)

Returns a list of all registered groups

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

[id:Group]

Exceptions

AuthenticationFailedException

if not admin

See also

Group::GetClientObject

at line 1101
protected array CreateGroup(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Creates a new account group

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

array

Group

Exceptions

AuthenticationFailedException

if not admin

GroupExistsException

if the group name exists already

See also

Group::GetClientObject

at line 1129
protected array EditGroup(Input $input, Authenticator|null $authenticator)

Edits properties of an existing group

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Group

Exceptions

AuthenticationFailedException

if not admin

UnknownGroupException

if the group is not found

See also

Group::GetClientObject

at line 1163
protected array GetGroup(Input $input, Authenticator|null $authenticator)

Returns the requested group object

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Group

Exceptions

AuthenticationFailedException

if not admin

UnknownGroupException

if the group is invalid

See also

Group::GetClientObject

at line 1181
protected void DeleteGroup(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Deletes an account group

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

void

Exceptions

AuthenticationFailedException

if not admin

UnknownGroupException

if the group does not exist

at line 1206
protected array AddGroupMember(Input $input, Authenticator|null $authenticator)

Adds an account to a group

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Group

Exceptions

AuthenticationFailedException

if not admin

UnknownAccountException

if the account is not found

UnknownGroupException

if the group is not found

DuplicateGroupMembershipException

if the membership already exists

See also

Group::GetClientObject

at line 1236
protected array RemoveGroupMember(Input $input, Authenticator|null $authenticator)

Removes an account from a group

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Group

Exceptions

AuthenticationFailedException

if not admin

UnknownAccountException

if the account is not found

UnknownGroupException

if the group is not found

ImmutableGroupException

if the group is a default group

UnknownGroupMembershipException

if the group membership does not exist

See also

Group::GetClientObject

at line 1268
protected array|null GetMembership(Input $input, Authenticator|null $authenticator)

Gets metadata for an account group membership

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array|null

GroupJoin

Exceptions

AuthenticationFailedException

if not admin

UnknownAccountException

if given an invalid account

UnknownGroupException

if given an invalid group

UnknownGroupMembershipException

if the account is not in the group

See also

GroupJoin::GetClientObject

at line 1297
protected array CreateAuthSource(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Adds a new external authentication source, optionally testing it

This authorizes automatically creating an account for anyone that successfully authenticates against the auth source

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

array

Auth\Manager

Exceptions

AuthenticationFailedException

if not admin

See also

Manager::GetClientObject

at line 1323
protected array TestAuthSource(Input $input, Authenticator|null $authenticator)

Tests an auth source by running an auth query on it

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Auth\Manager

Exceptions

AuthenticationFailedException

if not admin

UnknownAuthSourceException

if the auth source is not found

AuthSourceTestFailException

if the test fails

See also

Manager::GetClientObject

at line 1349
protected array EditAuthSource(Input $input, Authenticator|null $authenticator)

Edits the properties of an existing auth source, optionally testing it

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Auth\Manager

Exceptions

AuthenticationFailedException

if not admin

UnknownAuthSourceException

if the auth source is not found

See also

Manager::GetClientObject

at line 1370
protected void DeleteAuthSource(Input $input, Authenticator|null $authenticator, AccessLog|null $accesslog)

Removes an external auth source, deleting accounts associated with it!

Parameters

Input $input
Authenticator|null $authenticator
AccessLog|null $accesslog

Return Value

void

Exceptions

AuthenticationFailedException

if not an admin

UnknownAuthSourceException

if the auth source does not exist

at line 1393
protected array SetAccountProps(Input $input, Authenticator|null $authenticator)

Sets config on an account

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Account

Exceptions

AuthenticationFailedException

if not admin

UnknownAccountException

if the account is not found

See also

Account::GetClientObject

at line 1415
protected array SetGroupProps(Input $input, Authenticator|null $authenticator)

Sets config on a group

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Group

Exceptions

AuthenticationFailedException

if not admin

UnknownGroupException

if the group is not found

See also

Group::GetClientObject

at line 1434
protected void SendMessage(Input $input, Authenticator|null $authenticator)

Sends a message to the given account or group's contacts

Parameters

Input $input
Authenticator|null $authenticator

Return Value

void

Exceptions

AuthenticationFailedException

if not admin

UnknownGroupException

if the given group is not found

UnknownAccountException

if the given account is not found

at line 1469
protected array AddWhitelist(Input $input, Authenticator|null $authenticator)

Adds a new entry to the account create whitelist

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

Whitelist

Exceptions

AuthenticationFailedException

if not admin

See also

Whitelist::GetClientObject

at line 1488
protected void RemoveWhitelist(Input $input, Authenticator|null $authenticator)

Removes an entry from the account create whitelist

Parameters

Input $input
Authenticator|null $authenticator

Return Value

void

Exceptions

AuthenticationFailedException

if not admin

at line 1509
protected array GetWhitelist(Input $input, Authenticator|null $authenticator)

Gets all entries in the account whitelist

Parameters

Input $input
Authenticator|null $authenticator

Return Value

array

[id:Whitelist]

Exceptions

AuthenticationFailedException

if not admin

See also

Whitelist::GetClientObject