Your IP : 216.73.217.142


Current Path : /var/www/consult-e-syn/public_html/plugins/actionlog/loginguard/
Upload File :
Current File : /var/www/consult-e-syn/public_html/plugins/actionlog/loginguard/loginguard.php

<?php
/**
 * @package   AkeebaLoginGuard
 * @copyright Copyright (c)2016-2020 Nicholas K. Dionysopoulos / Akeeba Ltd
 * @license   GNU General Public License version 3, or later
 */

use FOF30\Container\Container;
use FOF30\Controller\Controller;
use FOF30\View\View;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Plugin\CMSPlugin;

defined('_JEXEC') or die();

// PHP version check
if (!version_compare(PHP_VERSION, '5.6.0', '>='))
{
	return;
}

/**
 * LoginGuard integration with Joomla's User Actions Log
 *
 * @since  3.1.2
 */
class plgActionlogLoginguard extends CMSPlugin
{
	/** @var Container */
	private $container;

	/**
	 * Constructor
	 *
	 * @param       object $subject The object to observe
	 * @param       array  $config  An array that holds the plugin configuration
	 *
	 * @since       6.4.0
	 */
	public function __construct(& $subject, $config)
	{
		// Make sure LoginGuard is installed
		if (!file_exists(JPATH_ADMINISTRATOR . '/components/com_loginguard'))
		{
			return;
		}

		// Make sure LoginGuard is enabled
		if ( !ComponentHelper::isEnabled('com_loginguard'))
		{
			return;
		}

		// Load FOF
		if (!defined('FOF30_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof30/include.php'))
		{
			return;
		}

		$this->container = Container::getInstance('com_loginguard');

		// No point in logging guest actions
		if ($this->container->platform->getUser()->guest)
		{
			return;
		}

		// If any of the above statement returned, our plugin is not attached to the subject, so it's basically disabled
		parent::__construct($subject, $config);
	}

	/**
	 * Logs converting from Joomla's TFA
	 *
	 * @param   Controller  $controller  The controller we are called from
	 *
	 * @return  void
	 */
	public function onComLoginguardControllerConvertAfterConvert(Controller $controller)
	{
		$this->container->platform->logUserAction('', 'PLG_ACTIONLOG_LOGINGUARD_ACTION_CONVERT', 'com_loginguard');
	}

	/**
	 * Logs showing the TSV selection method
	 *
	 * @return  void
	 */
	public function onComLoginguardCaptiveShowSelect()
	{
		$this->container->platform->logUserAction('', 'PLG_ACTIONLOG_LOGINGUARD_ACTION_CAPTIVE_SELECT', 'com_loginguard');
	}

	/**
	 * Logs showing the captive login page
	 *
	 * @param   string  $methodTitleEscaped
	 *
	 * @return  void
	 */
	public function onComLoginguardCaptiveShowCaptive(string $methodTitleEscaped)
	{
		$this->container->platform->logUserAction($methodTitleEscaped, 'PLG_ACTIONLOG_LOGINGUARD_ACTION_CAPTIVE_CAPTIVE', 'com_loginguard');
	}

	/**
	 * Log displaying a user's Two Step Verification methods
	 *
	 * @param   View  $view
	 *
	 * @return  void
	 */
	public function onComLoginGuardViewMethodsAfterDisplay(View $view)
	{
		$layout = $view->getLayout();
		$key    = 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHODS_SHOW';

		if ($layout == 'firsttime')
		{
			$key    = 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHODS_FIRSTTIME';
		}

		$this->container->platform->logUserAction('', $key, 'com_loginguard');
	}

	/**
	 * Log regenerating backup codes
	 *
	 * @param   Controller  $controller
	 *
	 * @return  void
	 */
	public function onComLoginguardControllerMethodAfterRegenbackupcodes(Controller $controller)
	{
		$this->container->platform->logUserAction('', 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_REGENBACKUPCODES', 'com_loginguard');
	}

	/**
	 * Log adding a new TSV method
	 *
	 * @param   Controller  $controller
	 *
	 * @return  void
	 */
	public function onComLoginguardControllerMethodBeforeAdd(Controller $controller)
	{
		$method = $controller->input->getCmd('method');
		$userId = $controller->input->getInt('user_id', null);
		$user   = $this->container->platform->getUser($userId);

		$this->container->platform->logUserAction([
			'method'   => $method,
			'user_id'  => $userId,
			'otheruser' => $user->username,
		], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_ADD', 'com_loginguard');
	}

	/**
	 * Log editing a TSV method
	 *
	 * @param   Controller  $controller
	 *
	 * @return  void
	 */
	public function onComLoginguardControllerMethodBeforeEdit(Controller $controller)
	{
		$id     = $controller->input->getCmd('id');
		$userId = $controller->input->getInt('user_id', null);
		$user   = $this->container->platform->getUser($userId);

		$this->container->platform->logUserAction([
			'id'       => $id,
			'user_id'  => $userId,
			'otheruser' => $user->username,
		], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_EDIT', 'com_loginguard');
	}

	/**
	 * Log removing a TSV method
	 *
	 * @param   Controller  $controller
	 *
	 * @return  void
	 */
	public function onComLoginguardControllerMethodBeforeDelete(Controller $controller)
	{
		$id     = $controller->input->getCmd('id');
		$userId = $controller->input->getInt('user_id', null);
		$user   = $this->container->platform->getUser($userId);

		$this->container->platform->logUserAction([
			'id'       => $id,
			'user_id'  => $userId,
			'otheruser' => $user->username,
		], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_DELETE', 'com_loginguard');
	}

	/**
	 * Log saving a TSV method
	 *
	 * @param   Controller  $controller
	 *
	 * @return  void
	 */
	public function onComLoginguardControllerMethodBeforeSave(Controller $controller)
	{
		$id     = $controller->input->getCmd('id');
		$userId = $controller->input->getInt('user_id', null);
		$user   = $this->container->platform->getUser($userId);

		$this->container->platform->logUserAction([
			'id'       => $id,
			'user_id'  => $userId,
			'otheruser' => $user->username,
		], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_SAVE', 'com_loginguard');
	}

	/**
	 * Log completely disabling TSV
	 *
	 * @param   Controller  $controller
	 *
	 * @return  void
	 */
	public function onComLoginguardControllerMethodsBeforeDisable(Controller $controller)
	{
		$userId = $controller->input->getInt('user_id', null);
		$user   = $this->container->platform->getUser($userId);

		$this->container->platform->logUserAction([
			'user_id'  => $userId,
			'otheruser' => $user->username,
		], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_DISABLE', 'com_loginguard');
	}

	/**
	 * Log opting out of TSV
	 *
	 * @param   Controller  $controller
	 *
	 * @return  void
	 */
	public function onComLoginguardControllerMethodsBeforeDontshowthisagain(Controller $controller)
	{
		$userId = $controller->input->getInt('user_id', null);
		$user   = $this->container->platform->getUser($userId);

		$this->container->platform->logUserAction([
			'user_id'  => $userId,
			'otheruser' => $user->username,
		], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHODS_DONTSHOWTHISAGAIN', 'com_loginguard');
	}

	/**
	 * Log TSV failure due to invalid method
	 *
	 * @return  void
	 */
	public function onComLoginguardCaptiveValidateInvalidMethod()
	{
		$this->container->platform->logUserAction('', 'PLG_ACTIONLOG_LOGINGUARD_ACTION_VALIDATE_INVALID_METHOD', 'com_loginguard');
	}

	/**
	 * Log TSV failure
	 *
	 * @param   string  $methodTitle
	 *
	 * @return  void
	 */
	public function onComLoginguardCaptiveValidateFailed($methodTitle)
	{
		$this->container->platform->logUserAction(htmlspecialchars($methodTitle), 'PLG_ACTIONLOG_LOGINGUARD_ACTION_VALIDATE_FAILED', 'com_loginguard');
	}

	/**
	 * Log TSV success
	 *
	 * @param   string  $methodTitle
	 *
	 * @return  void
	 */
	public function onComLoginguardCaptiveValidateSuccess($methodTitle)
	{
		$this->container->platform->logUserAction(htmlspecialchars($methodTitle), 'PLG_ACTIONLOG_LOGINGUARD_ACTION_VALIDATE_SUCCESS', 'com_loginguard');
	}
}