<?php
if(isLoggedIn()) redirect();

echo '<div class="page-title"><span>'.lang('module_titles_txt_15',true).'</span></div>';

try {
    if(!mconfig('active')) throw new Exception(lang('error_47',true));
    $realm = null;
    $token = isset($_GET['token']) ? trim((string)$_GET['token']) : '';

    if($token !== '') {
        $realm = NexoraRealm::requireQuery('realm');
        $service = new NexoraPasswordReset($realm);
        $info = $service->tokenInfo($token);
        if(!is_array($info)) throw new RuntimeException('El enlace de recuperación no es válido, ya fue usado o expiró.');

        if(isset($_POST['nexora_reset_submit'])) {
            $service->complete($token, $_POST['new_password'] ?? '', $_POST['confirm_password'] ?? '');
            message('success', 'Contraseña actualizada. El enlace ya no puede volver a utilizarse.');
            echo '<p><a class="btn btn-primary" href="'.__BASE_URL__.'login/">Ir al inicio de sesión</a></p>';
        } else {
            echo '<div class="col-xs-8 col-xs-offset-2" style="margin-top:30px;">';
            echo '<div class="alert alert-info"><strong>Recuperación segura</strong><br>Define una contraseña nueva. El enlace caduca y solo funciona una vez.</div>';
            echo '<form class="form-horizontal" action="" method="post">';
            echo '<div class="form-group"><label class="col-sm-4 control-label">Nueva contraseña</label><div class="col-sm-8"><input type="password" class="form-control" name="new_password" required autocomplete="new-password"></div></div>';
            echo '<div class="form-group"><label class="col-sm-4 control-label">Confirmar contraseña</label><div class="col-sm-8"><input type="password" class="form-control" name="confirm_password" required autocomplete="new-password"></div></div>';
            echo '<div class="form-group"><div class="col-sm-offset-4 col-sm-8"><button type="submit" name="nexora_reset_submit" value="1" class="btn btn-primary">Actualizar contraseña</button></div></div>';
            echo '</form></div>';
        }
    } else {
        if(isset($_POST['webengineEmail_submit'])) {
            $realm = NexoraRealm::requirePosted('nexora_realm');
            $service = new NexoraPasswordReset($realm);
            $service->request($_POST['webengineEmail_current'] ?? '', NexoraSecurity::clientIp());
            message('success', 'Si el correo corresponde a una cuenta válida, recibirás un enlace de recuperación de un solo uso.');
        }

        echo '<div class="col-xs-8 col-xs-offset-2" style="margin-top:30px;">';
        echo '<form class="form-horizontal" action="" method="post">';
        renderNexoraRealmSelect();
        echo '<div class="form-group"><label for="webengineEmail" class="col-sm-4 control-label">'.lang('forgotpass_txt_1',true).'</label><div class="col-sm-8"><input type="email" class="form-control" id="webengineEmail" name="webengineEmail_current" required autocomplete="email"></div></div>';
        echo '<div class="form-group"><div class="col-sm-offset-4 col-sm-8"><button type="submit" name="webengineEmail_submit" value="submit" class="btn btn-primary">'.lang('forgotpass_txt_2',true).'</button></div></div>';
        echo '</form></div>';
    }
} catch(Exception $ex) {
    message('error', $ex->getMessage());
}
