<?php
/**
 * This code is licensed under AGPLv3 license or Afterlogic Software License
 * if commercial version of the product was purchased.
 * For full statements of the licenses see LICENSE-AFTERLOGIC and LICENSE-AGPL3 files.
 */

namespace Afterlogic\DAV\Auth\Backend;

/**
 * @license https://www.gnu.org/licenses/agpl-3.0.html AGPL-3.0
 * @license https://afterlogic.com/products/common-licensing Afterlogic Software License
 * @copyright Copyright (c) 2019, Afterlogic Corp.
 */
class Basic extends \Sabre\DAV\Auth\Backend\AbstractBasic
{
    /**
     * Validates a username and password
     *
     * This method should return true or false depending on if login
     * succeeded.
     *
     * @return bool
     */
    protected function validateUserPass($sUserName, $sPassword)
    {
        $mResult = false;
        if (class_exists('\\Aurora\\System\\Api') && \Aurora\System\Api::IsValid() && $sUserName !== \Afterlogic\DAV\Constants::DAV_PUBLIC_PRINCIPAL && $sUserName !== \Afterlogic\DAV\Constants::DAV_TENANT_PRINCIPAL) {
            $mResult = \Afterlogic\DAV\Auth\Backend::Login($sUserName, $sPassword);

            $bIsMobileSync = false;
            $bIsOutlookSyncAllowed = false;
            $bIsDemo = false;

            if ($mResult !== false) {
                $mResult = true;

                $bIsOutlookSyncClient = \Afterlogic\DAV\Utils::ValidateClient('outlooksync');
                $oOutlookSyncWebclientModule = \Aurora\Api::GetModule('OutlookSyncWebclient');
                $bIsOutlookSyncAllowed = ($oOutlookSyncWebclientModule && !$oOutlookSyncWebclientModule->getConfig('Disabled', false));
                if ($bIsOutlookSyncClient && !$bIsOutlookSyncAllowed) {
                    $mResult = false;
                }


                $oMobileSyncModule = \Aurora\Api::GetModule('MobileSync');
                $bIsMobileSyncAllowed = ($oMobileSyncModule && !$oMobileSyncModule->getConfig('Disabled', false));

                if (!$bIsMobileSyncAllowed) {
                    $mResult = false;
                }

                /*
                                $iIdUser = isset($mResult['id']) ? $mResult['id'] : 0;

                                $bIsMobileSync = $oApiCapabilityManager->isMobileSyncSupported($iIdUser);
                                $bIsOutlookSync = $oApiCapabilityManager->isOutlookSyncSupported($iIdUser);

                                \Aurora\System\Api::Plugin()->RunHook(
                                        'plugin-is-demo-account',
                                        array(&$oAccount, &$bIsDemo)
                                );
                *
                */
            }
            /*
                        if (($oAccount && $oAccount->IncomingMailPassword === $sPassword &&
                                (($bIsMobileSync && !$bIsOutlookSyncClient) ||
                                ($bIsOutlookSync && $bIsOutlookSyncClient))) ||
                                $bIsDemo || $sUserName === \Aurora\System\Api::ExecuteMethod('Dav::GetPublicUser')) {
                            return true;
                        }
             */
        }

        return $mResult;
    }
}
