If your extension needs to retrieve information from the user that is currently logged in to Plesk, use the pm_Session class.


Restrict user access to the extension

For restricting user access to the extension, first retrieve the current user (a pm_Client object), using the method

The following code restricts access for all users except administrators:

if (!pm_Session::getClient()->isAdmin()) {
    throw new pm_Exception('Permission denied');

Retrieve customer’s identifier when logged as a customer

If an administrator or a reseller is logged in the Customer Panel as one of their customers, you can retrieve the customer’s identifier, using the methods:

Use the following code:

if (pm_Session::isImpersonated()) {
    $clientId = pm_Session::getImpersonatedClientId();

Retrieve the domain information

Additionally, if the session is opened in the Customer Panel, you can retrieve information about the domain that is currently being operated on using the method

Use the following code:

$domain = pm_Session::getCurrentDomain();

$domain in this example is an instance of the pm_Domain class.

If Plesk is unable to retrieve the domain, a pm_Exception will be thrown.

Retrieve the current main domain

You can also retrieve information about all domains that are currently being operated on using the method

This method is best used if the session is opened in Power User view. By default, it returns the main domains and their additional domains and subdomains. If the $mainDomainsOnly argument is set to “true”, only the main domains are returned. In most cases the method will return an array containing a single main domain (analogous to pm_Session::getCurrentDomain()) and its additional domains and subdomains.

However, in Power User view, when “All subscriptions” is selected (transparent webspaces mode), all current user domains would be returned together with their additional domains and subdomains.

In Service Provider view, the method will return domains based on the last subscription context, or all user domains if there is no last subscription context.

Use the following code:

$currentDomains = pm_Session::getCurrentDomains();