kboss/kgadget/src/vcode.py
2025-07-16 14:27:17 +08:00

32 lines
857 B
Python

from datetime import datetime, timedelta
from sqlor.dbpools import DBPools
from appPublic.uniqueID import getID, validate_code, check_code
async def generate_vcode(minutes=30):
ns = {
'id':getID(),
'vcode':validate_code(getID()),
'expore_time':str(datetime.now() + timedelta(minutes=minutes))
}
db = DBPools()
async with db.sqlorContext('kboss') as sor:
await sor.C('validatecode', ns.copy())
return ns
async def check_vcode(id, code):
db = DBPools()
async with db.sqlorContext('kboss') as sor:
recs = await sor.R('validatecode', {'id':id})
if len(recs) == 0:
print(f'record not found {id=}')
return False
r = recs[0]
n = str(datetime.now())
if n > r['expore_time']:
print(f'timeout {n=}, {r["expore_time"]=}')
return False
if code != r['vcode']:
print(f'{code=} != {r["vocode"]=}')
return False
return True