灵符lingfu
F

fu.ling-lang.org

↓ 0 downloads

ทะเบียนแพ็กเกจ fu.ling-lang.org — เขียนด้วยภาษา Ling (ไทย) ทั้งหมด

Keywords registry, packages, web, ling, thai
lingfu install fu.ling-lang.org
LicenseApache-2.0 OR MIT
Authorsลิงลิน
READMECode / FilesVersionsDependency GraphDependentsSecurityBuildsSettings

Code / Files (22)

models/keys.ling
// models/keys.ling — โมเดลกุญแจ API
// เก็บเฉพาะแฮชของกุญแจ — ตัวจริงแสดงครั้งเดียวตอนสร้าง

ฟังก์ชัน กุญแจสร้าง(ไอดีผู้ใช้, ชื่อ) {
    ผูก กุญแจ = "lfu_" + random_hex(24)
    ผูก แฮช = password_hash(กุญแจ)
    ฐานข้อมูลรัน("INSERT INTO api_keys (user_id, name, key_hash) VALUES (?1, ?2, ?3)", ไอดีผู้ใช้, ชื่อ, แฮช)
    คืน กุญแจ
}

ฟังก์ชัน กุญแจของ(ไอดีผู้ใช้) {
    คืน ฐานข้อมูลถาม("SELECT id, name, revoked, created_at FROM api_keys WHERE user_id = ?1 ORDER BY id", ไอดีผู้ใช้)
}

ฟังก์ชัน กุญแจถอน(ไอดีกุญแจ, ไอดีผู้ใช้) {
    ฐานข้อมูลรัน("UPDATE api_keys SET revoked = 1 WHERE id = ?1 AND user_id = ?2", ไอดีกุญแจ, ไอดีผู้ใช้)
}

// ตรวจกุญแจ API — คืน user_id ที่ตรง (แฮชตรงและยังไม่ถูกถอน) หรือ 0
// เทียบกับทุกแฮชที่ยังใช้งานได้ (Argon2id เทียบทีละอัน)
ฟังก์ชัน กุญแจตรวจ(กุญแจ) {
    ถ้า กุญแจ == "" {
        คืน 0
    }
    ผูก แถวๆ = ฐานข้อมูลถาม("SELECT user_id, key_hash FROM api_keys WHERE revoked = 0")
    ผูก ก = 0
    ขณะที่ ก < แถวๆ.len {
        ผูก แถว = รับรายการ(แถวๆ, ก)
        ถ้า password_verify(กุญแจ, แถว.key_hash) {
            คืน แถว.user_id
        }
        ผูก ก = ก + 1
    }
    คืน 0
}

← Back to index