<?php

declare(strict_types=1);

namespace App\Model;

use App\Core\Funkce;
use Nette;
use Nette\Security\User;
use App\Model\Login\UserIdentity;

/**
 * Třída pro manipulaci s tabulkou UZIVATEL.
 */
final class UzivatelFacade
{
    public function __construct(
        private Nette\Database\Explorer $database,
        private User $user //DI
    ) {
    }

    /**
     * Uloží TOTP secret pro dvoufázové ověření uživatele.
     * Pokud je $secret null, 2FA se de facto deaktivuje.
     */
    public function updateTOTPSecret(string $secret): void
    {
        /**
         * Uživatelská identita = přihlášený user.
         * @var UserIdentity
         */
        $identity = $this->user->getIdentity();

        $this->database->table('UZIVATEL')
            ->get($identity->getId())
            ->update([
                'TOTP_SECRET' => Funkce::encrypt($secret), // šifrujeme
                'IS_2FA_ENABLED' => 1
            ]);
    }

    public function disableTOTPSecret(): void
    {
        /**
         * Uživatelská identita = přihlášený user.
         * @var UserIdentity
         */
        $identity = $this->user->getIdentity();

        $this->database->table('UZIVATEL')
            ->get($identity->getId())
            ->update([
                'TOTP_SECRET' => null,
                'IS_2FA_ENABLED' => 0
            ]);
    }

}