sage/app/phonelogin.py
2025-07-16 14:28:41 +08:00

49 lines
1.1 KiB
Python

from rand import randint
from sqlor.dbpools import DBPools
from ahserver.serverenv import ServerEnv
from appPublic.uniqueID import getID
from appPublic.timeUtils import timestampstr
from alisms import AliSMS
from const import DBNAME, VALID_SECONDS
async def gen_validatecode(phone_no){
codes = []
while len(codes) < 6:
v = randint(0,13)
if v >= 10:
continue
codes.append(str(v))
code = ''.join(codes)
sms = AliSMS()
r = sms.send(
ns = {
'id':getID(),
'code':''.join(code),
'timestamp':timestampstr()
}
db = DBPools()
async with db.sqlorContext(DBNAME) as sor:
await sor.C('validatecode', ns)
return ns['id']
return None
async def validate_code(id:str, code:str) -> boolean:
db = DBPools()
sql = """select * from validatecode
where id= ${id}$
and code = ${code}$
and timestamp + ${valid_secords}$ >= ${curr_timestamp}$"""
ns = {
'id':id,
'code':code,
'valid_seconds':VALID_SECONDS,
'curr_timestamp':time.time()
}
async with db.sqlorContext(DBNAME) as sor:
r = await sor.sqlExe(sql, ns.copy())
if len(r) < 1:
return False
return True
return False