def register_token(req): """Register new login token. Args: req: flask request Returns: object with logged user data """ user = do_login(req.args.get("token")) if user["logged"]: # save to DB n = 256 found = 1 while found==1: user["hash"] = "".join(random.choices(string.ascii_uppercase + string.digits, k=n)) found = db.res_int("select 1 from main_sessions where hash={hash}", { "hash": user["hash"] }) user_id = "0" # get user id db.query("UPDATE main_users set status=3 " "where email={email} " "and status=1 " "and valid_until_date<curdate() ", {"email": user["email"] } ) user_id = db.res("SELECT id from main_users where email={email} and status=1", { "email" :user["email"] }) auto_create = True if (not user_id) and auto_create: if user["email"].split("@")[1]!="google.com": return {"user": False} #error #return {"user": False} # creeate new user if needed db.query("INSERT into main_users set email={email}, short_name={short_name}, full_name={full_name}," "status=1, valid_until_date='2100-01-01'", { "email": user["email"], "short_name": user["name"], "full_name": user["full"] }) user_id = db.res("SELECT id from main_users where email={email}", { "email": user["email"] }) roles = [] # save session if user_id: db.query("INSERT into main_sessions set user_ip={user_ip}, email={email}, name={name}, full_name={full_name}, " "created_date=now(), enabled=1, hash={hash}, user_id={user_id}", { "user_ip": request.remote_addr, "email": user["email"], "name": user["name"], "full_name": user["full"], "hash": user["hash"], "user_id": user_id } ) user["id"] = user_id return {"user": user}
def get_user_id(req): """get current user id. Args: req: flask request Returns: String user id """ h = req.values.get("hash") user_id = db.res( "SELECT user_id from sessions where enabled=1 and hash=%s", (h)) if not user_id: user_id = None user_id = "57" return user_id
def validate_token(req): """Register new login token. Args: req: flask request Returns: object with logged user data """ user_id = db.res( "select user_id " "from main_sessions " "where hash = {hash} and user_ip = {user_ip} and enabled = 1", {"hash": req.values.get("t"), "user_ip": request.remote_addr } ) roles = [] return { "user": { "id":user_id, "roles":roles }}
def get_email(): email = db.res("select email from main_sessions where hash=%s", (get_param("x-token"))) return email