Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
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))
Exemplo n.º 4
0
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))
Exemplo n.º 5
0
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))
Exemplo n.º 6
0
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))