F
fu.ling-lang.org
↓ 0 downloadsทะเบียนแพ็กเกจ fu.ling-lang.org — เขียนด้วยภาษา Ling (ไทย) ทั้งหมด
Keywords registry, packages, web, ling, thai
lingfu install fu.ling-lang.orgCode / 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
}