32 lines
857 B
Python
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
|