<?php

declare(strict_types=1);

/**
 * 會員密碼驗證（後台／前台共用）。
 * - 優先 password_hash / password_verify（bcrypt、argon2）
 * - 選用：32 字元 hex 視為 MD5（環境變數 FATE_MEMBER_LEGACY_MD5=1）
 */

function fate_member_legacy_md5_enabled(): bool
{
    $v = strtolower(trim((string) (getenv('FATE_MEMBER_LEGACY_MD5') ?: '')));

    return in_array($v, ['1', 'true', 'yes', 'on'], true);
}

function fate_member_verify_password(string $plainPassword, string $storedHash): bool
{
    $storedHash = trim($storedHash);
    if ($storedHash === '' || $plainPassword === '') {
        return false;
    }

    if (password_verify($plainPassword, $storedHash)) {
        return true;
    }

    if (fate_member_legacy_md5_enabled() && preg_match('/^[a-f0-9]{32}$/i', $storedHash) === 1) {
        $calc = md5($plainPassword);

        return hash_equals(strtolower($storedHash), strtolower($calc));
    }

    return false;
}

/**
 * 新註冊／變更密碼時寫入資料庫的雜湊（bcrypt 等）。
 */
function fate_member_password_hash_new(string $plainPassword): string
{
    return password_hash($plainPassword, PASSWORD_DEFAULT);
}
