def valid_otp(): try: if 'apiKey' in request.json and 'sid' in request.json: if 'Reg_Phase' in session and 'user' in session and 'client' in session and 'sent_at' in session: api_key = request.json.get('apiKey') Sid = request.json.get('sid') if session['Reg_Phase'] == "Mail sending Failed": return jsonify({ "response": "OTP sending Failed. Please Request another OTP to continue." }) else: if 'secretkey' in request.json and 'otp' in request.json: secret_key = request.json.get('secretkey') otp = request.json.get('otp') if api_key is None or secret_key == "" or Sid == "": return jsonify({"response": "Invalid Credentials"}) else: key_verf = models.api_vald(api_key=api_key, secret_key=secret_key) if key_verf == "Api key Verified": # s_id = models.mydb.User.find_one({"SID" : Sid}, {"_id":0}) # print "Session....", session.sid if Sid == session.sid: # can replace user = session['user'] client = session['client'] return otp_auth(user=user, client=client, otp=otp) # added client, not yet in database. else: return jsonify( {"response": "Session Id mismatch"}) else: return jsonify({"response": key_Verf}) else: return jsonify({"response": "Incomplete JSON data"}) else: sid = request.json.get('sid') print "session Expired. Recreating session..." new_session = models.recreate_session(sid) return new_session # models.mydb.sessions.update({"sid" : session.sid}, {"$set": {"Last Used" : datetime.now()}}) else: return jsonify({"response": "Invalid Credentials"}) except Exception as e: return "Error Occured: {}".format(str(e))
def user_state(): try: if 'apiKey' in request.json and 'secretkey' in request.json and 'email' in request.json: api_key = request.json.get('apiKey') secret_key = request.json.get('secretkey') email = request.json.get('email') if api_key is None: return jsonify({"response": "Invalid Credentials"}) else: key_verf = models.api_vald(api_key=api_key, secret_key=secret_key) if key_verf == "Api key Verified": api_auth = models.mydb.Os_ver.find_one( {"api_key": api_key}) client = api_auth['client'] user = models.mydb.User.find_one( { "Client Name": client, "email": email }, {"_id": 0}) if user: acc_stat = user['Account'] otp_stat = user['OTP_Verf'] client = user['Client Name'] phone = user['phone'] login_status = user['logged_in'] return jsonify({ "User": email, "Phone": phone, "User Client": client, "Account Status": acc_stat, "OTP Status": otp_stat, "Logged In": login_status }) else: return jsonify({"response": "User Not Found"}) else: return jsonify({"response": key_Verf}) else: return jsonify({"response": "InComplete Json Data"}) except Exception as e: return "Error Occured: {}".format(str(e))
def endpoint(): try: if 'apiKey' in request.args and 'phone_number' in request.args: api_key = request.args.get('apiKey') if api_key is None: return jsonify({"response": "Invalid Credentials"}) else: try: key_verf = models.api_vald(api_key) if key_verf == "Api key Verified": phone = request.args.get('phone_number') exists = models.mydb.Data.find_one({"phone_no" : phone}, {"_id":0}) if exists: if 'date' in request.args: # date = request.args.get('date') # if date == "all": user_no = models.mydb.Data.find({"phone_no" : phone}) data_list = [] for data_entry in user_no: user_data = data_entry['data'] data_list.append(user_data) return Response(json_util.dumps(data_list)) # else: # return jsonify({"response": "Sorry, No data found."}) else: user_no = models.mydb.Data.find({"phone_no" : phone}) for data_entry in user_no: latest = data_entry user_data = latest['data'] return Response(json_util.dumps(user_data)) else: return jsonify({"response": "Sorry, No data found."}) else: return jsonify({"response": key_Verf}) except Exception as e: return "Error Occured: {}".format (str(e)) else: raise ValueError ('Invalid Argument List') except Exception as e: return "Error Occured: {}".format (str(e))
def valid_api(): try: if 'apiKey' in request.json: api_key = request.json.get('apiKey') if 'secretkey' in request.json and 'email' in request.json and 'phone' in request.json: secret_key = request.json.get('secretkey') email = request.json.get('email') phone = request.json.get('phone') if api_key == "" or secret_key == "": return jsonify({"error-message": "Invalid Credentials"}) else: try: key_verf = models.api_vald(api_key=api_key, secret_key=secret_key) if key_verf == "Api key Verified": api_auth = models.mydb.Os_ver.find_one( {"api_key": api_key}) client = api_auth['client'] # sid = uuid.uuid4() # session['sid'] = sid session['client'] = client session['user'] = email entry = models.create_user(email=email, phone=phone, client=client) if entry == "Please fill all the feilds carefully": return jsonify({"error-message": entry}) else: if entry == "Email or Phone already exists.": return jsonify({"error-message": entry}) else: # addd client also mail = SendActivationApi.mailer( sid=sid, Resend="False") if mail == "Mail Sent Successfully": sent_at = datetime.now() + timedelta( minutes=2) models.mydb.User.update( { "Client Name": client, "email": email }, {"$set": { "sent_at": sent_at }}) session['sent_at'] = sent_at session[ 'Reg_Phase'] = "phase 1 complete" # if otp resend then having issue with sent_at timmings return jsonify({ 'Session_id': entry, 'error-message': mail }) else: session[ 'sent_at'] = "Mail sending Failed" session[ 'Reg_Phase'] = "Mail sending Failed" return jsonify({ 'Session_id': entry, 'error-message': "Mail sending Failed" }) # models.mydb.sessions.update({"sid" : session.sid}, {"$set": {"Last Used" : datetime.now()}}) else: return jsonify( {"error-message": "Invalid Api Key"}) except Exception as e: return "Error Occured: {}".format(str(e)) else: # raise ValueError ('Incomplete JSON data') return jsonify({"error-message": "Incomplete JSON data"}) else: # raise ValueError ('Invalid Argument List') return jsonify({"error-message": "Invalid Credentials"}) except Exception as e: return "Error Occured: {}".format(str(e))
def password(): try: # print "is session exist....",session['user'] if 'apiKey' in request.json and 'sid' in request.json: api_key = request.json.get('apiKey') Sid = request.json.get('sid') if 'Reg_Phase' in session and 'user' in session and 'client' in session: if session['Reg_Phase'] == "OTP Verified": if 'secretkey' in request.json and 'password' in request.json: secret_key = request.json.get('secretkey') password = request.json.get('password') # pas = password.encode('utf-8') pas = base64.b64decode(password) # print "password", pas if api_key is None or secret_key == "" or Sid is None: return jsonify({"response": "Invalid Credentials"}) else: key_verf = models.api_vald(api_key=api_key, secret_key=secret_key) if key_verf == "Api key Verified": # Sid = uuid.UUID(sid) # user = models.mydb.User.find_one({"SID" : Sid}, {"_id":0}) if Sid == session.sid: #change session.sid to lst id used of or updated id. # otp_stat = user['OTP_Verf'] # if otp_stat == 'Verified': key = "\xd4\xe6\x1a\x83\x1d\xf7\xa43\xf0\xe3)j\x06\xa7/\xba" IV = "Q\xb9\x11mk\x08*\xd1\n4N\x13\x05n\xc4^" cipher_suit = AES.new( key, AES.MODE_CFB, IV) # print "before", pas # pas = str(password) dec_pas = cipher_suit.decrypt(pas) # dd = dec_pas.decode('ascii') # print "after", dec_pas # dec_pas = password.decode('hex') session.clear() return models.add_password( sid=Sid, password=dec_pas) # else: # return jsonify({"response": "Your OTP is not verified"}) else: return jsonify( {"response": "Session Id mismatch"}) else: return jsonify({"response": key_Verf}) else: return jsonify({"response": "Incomplete JSON data"}) else: return jsonify({ "response": "OTP not Verified. Please Verify before proceding further." }) else: print "session Expired. Recreating session..." new_session = models.recreate_session(Sid) return new_session # models.mydb.sessions.update({"sid" : session.sid}, {"$set": {"Last Used" : datetime.now()}}) else: return jsonify({"response": "Invalid Credentials"}) except Exception as e: return "Error Occured: {}".format(str(e))
def user_login(): try: if 'login Status' in session: return jsonify({"response": "Already Logged In"}) else: if 'apiKey' in request.json: api_key = request.json.get('apiKey') if 'secretkey' in request.json and 'email' in request.json and 'password' in request.json: secret_key = request.json.get('secretkey') if api_key is None or secret_key == "": return jsonify({"response": "Invalid Credentials"}) else: try: key_verf = models.api_vald(api_key=api_key, secret_key=secret_key) if key_verf == "Api key Verified": user_api = models.mydb.Os_ver.find_one({"api_key" : api_key}) client = user_api['client'] email = request.json.get('email') password = request.json.get('password') if email == "" or password == "": return jsonify({"response": "Please fill all the feilds carefully"}) else: # dec_pas = password.decode('hex') try: verify = models.mydb.User.find_one({"Client Name" : client, "email" : email}, {"_id":0}) if verify: _verify = models.mydb.User.find_one({"Client Name" : client, "email" : email}) password_db = _verify['password'] otp_status = _verify['OTP_Verf'] login_status = _verify['logged_in'] if login_status == 'False': key = "\xd4\xe6\x1a\x83\x1d\xf7\xa43\xf0\xe3)j\x06\xa7/\xba" IV = "Q\xb9\x11mk\x08*\xd1\n4N\x13\x05n\xc4^" cipher_suit = AES.new(key, AES.MODE_CFB, IV) # pas = password.encode('utf-8') pas = base64.b64decode(password) dec_pas = cipher_suit.decrypt(pas) password_verf = check_password_hash(password_db, dec_pas) if otp_status == 'Verified': if password_verf == True: logged_in = 'True' session['User'] = email session['Client'] = client session['login Status'] = logged_in lst_sid = _verify['Current SID'] session_db = models.mydb.User.update({"Client Name" : session['Client'], "email" : session['User']}, {"$set": {"logged_in" : session['login Status'], "Last SID" : lst_sid, "Current SID" : session.sid}}) return jsonify({"Session Id" : session.sid, "response": "Login Successful"}) else: logged_in ='False' return jsonify({"response": "Your email or password doesn't match"}) else: logged_in ='False' return jsonify({"response": "Your OTP is not Verified"}) else: session['User'] = email session['Client'] = client session['login Status'] = 'True' # models.mydb.sessions.update({"sid" : session.sid}, {"$set": {"Last Used" : datetime.now()}}) # this is to be added for the apis to be used after login. return jsonify({"response": "User Already Logged In"}) else: logged_in ='False' return jsonify({"response": "Your email or password doesn't match"}) except Exception as e: return "Error Occured: {}".format (str(e)) else: return jsonify({"response": key_Verf}) except Exception as e: return "Error Occured: {}".format (str(e)) else: return jsonify({"response": "Incomplete JSON data"}) else: raise ValueError ('Invalid Argument List') except Exception as e: return "Error Occured: {}".format (str(e))