def post(self):
        data = request.form
        #print(request.cookies)

        # Check for data validity:
        if data is None:
            error(400, "Missing one or more required fields")
        if data.get('oecilogin') is None:
            error(400, "Missing OECI login username")
        if data.get('oecipassword') is None:
            error(400, "Missing OECI login password")

        response = make_response()
        credentials = {'username': data['oecilogin'], 'password': data['oecipassword']}
        #fake_creds = {'username': '******', 'password': '******'}

        cipher = DataCipher(key=current_app.config.get("SECRET_KEY"))
        encrypted_credentials = cipher.encrypt(credentials)
        #encrypted_fake_credentials = cipher.encrypt(fake_creds)

        # Try to log into OECI database
        try:
            Crawler.attempt_login(requests.Session(), credentials['username'], credentials['password'])
            response.set_cookie(
                "oeci_token",
                secure=os.getenv("TIER") == "production",
                samesite="strict",
                value=encrypted_credentials
            )
        except UnableToReachOECI:
            error(404, "Unable to reach OECI database")
        except InvalidLoginCreds:
            error(401, "Invalid login credentials")

        return response, 201
예제 #2
0
    def post(self):
        if TIMER:
            import time
            start_time = time.time()

        data = request.get_json()

        # Check for data validity:
        if data is None:
            error(400, "Missing first and last name")
        if len(data.get('first_name')) == 0:
            error(400, "Missing first name")
        if len(data.get('last_name')) == 0:
            error(400, "Missing last name")

        search_credentials = {
            'first': data['first_name'],
            'last': data['last_name'],
            'middle': data['middle_name']
        }

        session = requests.Session()

        username, password = Search._oeci_login_params(request)
        verify_login_credentials = Crawler.attempt_login(
            session, username, password)
        # Call search method
        search_results = Crawler.search(session, verify_login_credentials,
                                        search_credentials['first'],
                                        search_credentials['last'],
                                        search_credentials['middle'])
        if TIMER:
            print("--- Total Time: %s seconds ---" %
                  (time.time() - start_time))

        return json.dumps(search_results)