<?php
/**
 * MageSpecialist
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to info@magespecialist.it so we can send you a copy immediately.
 *
 * @category   MSP
 * @package    MSP_TwoFactorAuth
 * @copyright  Copyright (c) 2017 Skeeller srl (http://www.magespecialist.it)
 * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */

namespace MSP\TwoFactorAuth\Plugin\Block\User\Edit;

use Magento\Framework\AuthorizationInterface;
use MSP\TwoFactorAuth\Api\TfaInterface;

class TabsPlugin
{
    /**
     * @var TfaInterface
     */
    private $tfa;

    /**
     * @var AuthorizationInterface
     */
    private $authorization;

    /**
     * TabsPlugin constructor.
     * @param TfaInterface $tfa
     * @param AuthorizationInterface $authorization
     */
    public function __construct(
        TfaInterface $tfa,
        AuthorizationInterface $authorization
    ) {
        $this->tfa = $tfa;
        $this->authorization = $authorization;
    }

    /**
     * @param \Magento\User\Block\User\Edit\Tabs $subject
     * @throws \Magento\Framework\Exception\LocalizedException
     */
    public function beforeToHtml(\Magento\User\Block\User\Edit\Tabs $subject)
    {
        if (empty($this->tfa->getAllEnabledProviders()) ||
            !$this->authorization->isAllowed('MSP_TwoFactorAuth::tfa')
        ) {
            return;
        }

        $tfaForm = $subject->getLayout()->renderElement('msp_twofactorauth_edit_user_form');

        $subject->addTabAfter(
            'msp_twofactorauth',
            [
                'label' => __('2FA'),
                'title' => __('2FA'),
                'content' => $tfaForm,
                'active' => true
            ],
            'roles_section'
        );
    }
}