Esempio n. 1
0
def login():
    if not session.get("access_token"):
        return redirect("/oauth2callback")
    with requests.Session() as s:
        s.auth = OAuth2BearerToken(session["access_token"])
        r = s.get(
            "https://www.googleapis.com/plus/v1/people/me?access_token={}".
            format(session.get("access_token")))
    r.raise_for_status()
    data = r.json()

    if data["domain"] != "ousd.org":
        return "Please Sign in with your OUSD account"

    # Save Necessary variables
    session["displayName"] = data["displayName"]
    session["image"] = data["image"]["url"]

    user = User()

    for i in User.objects:
        if i.name == session["displayName"]:
            session["wallet"] = i.wallet
            session["reputation"] = i.reputation
            return redirect("/")
    user.name = session["displayName"]
    user.image = session["image"]
    user.wallet = "10"
    user.reputation = "0"
    session["wallet"] = user.wallet
    session["reputation"] = user.reputation
    user.save()

    return redirect("/")
def get_session_headers() -> tuple:
    """
    This method is to get the session and headers object for authenticating the api requests using credentials.
    Args:
    Returns: tuple
    """
    # getting the credentials and project details for gcp project
    credentials, your_project_id = google.auth.default(
        scopes=["https://www.googleapis.com/auth/cloud-platform"])

    # getting request object
    auth_req = google.auth.transport.requests.Request()

    credentials.refresh(auth_req)  # refresh token
    auth_token = credentials.token

    headers = {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + auth_token
    }

    with requests.Session() as session:
        session.auth = OAuth2BearerToken(auth_token)

    return (session, headers)
def send_post_request_with_Auth2(request_url, access_token, request_parameters):

    with requests.Session() as s:
        s.auth = OAuth2BearerToken(access_token)
        r = s.post(request_url, request_parameters)
        r.raise_for_status()
        data = r.json()
Esempio n. 4
0
def login():
    if not session.get("access_token"):
        return redirect("/oauth2callback")
    with requests.Session() as s:
        s.auth = OAuth2BearerToken(session["access_token"])
        r = s.get("https://www.googleapis.com/plus/v1/people/me?access_token={}".format(
            session.get("access_token")))
    r.raise_for_status()
    data = r.json()

    # Save Necessary variables
    session["displayName"] = data["displayName"]
    session["image"] = data["image"]["url"]

    user = User()

    # check if user exists
    for i in User.objects:
        if i.name == session["displayName"]:
            return redirect("/")

    #if not, create a new one
    user.name = data["displayName"]
    user.image = data["image"]["url"]
    user.save()

    return redirect("/")
def send_delete_request_with_Auth2(request_url, access_token):

    with requests.Session() as s:
        s.auth = OAuth2BearerToken(access_token)
        r = s.delete(request_url)
        r.raise_for_status()
        data = r.json()
Esempio n. 6
0
 def teslaSetOperationMode(self, mode):
     #if self.connectionEstablished:
     S = self.__teslaConnect()
     with requests.Session() as s:
         try:
             s.auth = OAuth2BearerToken(S['access_token'])
             if mode in self.OPERATING_MODES:
                 payload = {'default_real_mode': mode}
                 r = s.post(self.TESLA_URL + self.API + '/energy_sites' +
                            self.site_id + '/operation',
                            json=payload)
                 site = r.json()
                 if site['response']['code'] < 210:
                     self.site_info['default_real_mode'] = mode
                     return (True)
                 else:
                     return (False)
             else:
                 return (False)
                 #site="wrong mode supplied" + str(mode)
             #LOGGER.debug(site)
         except Exception as e:
             LOGGER.error('Exception teslaSetOperationMode: ' + str(e))
             LOGGER.error('Error setting operation mode')
             return (False)
Esempio n. 7
0
 def __tesla_refresh_token(self):
     S = {}
     if self.Rtoken:
         data = {}
         data['grant_type'] = 'refresh_token'
         data['client_id'] = 'ownerapi'
         data['refresh_token'] = self.Rtoken
         data['scope'] = 'openid email offline_access'
         resp = requests.post('https://auth.tesla.com/oauth2/v3/token',
                              data=data)
         S = json.loads(resp.text)
         if 'refresh_token' in S:
             self.Rtoken = S['refresh_token']
         else:
             self.Rtoken = None
         data = {}
         data['grant_type'] = 'urn:ietf:params:oauth:grant-type:jwt-bearer'
         data['client_id'] = self.CLIENT_ID
         data['client_secret'] = self.CLIENT_SECRET
         with requests.Session() as s:
             try:
                 s.auth = OAuth2BearerToken(S['access_token'])
                 r = s.post(self.TESLA_URL + '/oauth/token', data)
                 S = json.loads(r.text)
             except Exception as e:
                 LOGGER.error('Exception __tesla_refersh_token: ' + str(e))
                 pass
         s.close()
         time.sleep(1)
         #self.S = S
         #self.S['created_at'] = datetime.now()
     return S
Esempio n. 8
0
def google_index():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    if not session.get("access_token"):
        return redirect("/google/oauth2callback")
    with requests.Session() as s:
        s.auth = OAuth2BearerToken(session["access_token"])
        r = s.get("https://www.googleapis.com/plus/v1/people/me")
    r.raise_for_status()
    data = r.json()
    name = str(data.get("name"))
    email = str(data.get("email"))
    user = Usergoogle.query.filter_by(email=Usergoogle.email).first()
    Session['name'] = name
    #user.authenticated = True
    if user is None:
        user = Usergoogle(email=email, name=name)
        g.user = user
        db.session.add(user)
        db.session.commit()
        app.logger.info(user.id)
    login_user(user)
    Session['id'] = user.id
    A['user'] = False
    return render_template('index.html', user=True)
Esempio n. 9
0
    def tesla_vins(self,email,password,pwd):
        """
        Returns all VIN numbers associated with specified email and password
        """
        S = self.__tesla_connect(email, password)
        out = {}
        out["count"] = 0
        with requests.Session() as s:
            try:
                s.auth = OAuth2BearerToken(S['access_token'])
                r = s.get(self.TESLA_URL + self.API + '/vehicles')
                vehicle = r.json()
                L = vehicle['count']
                out["vehicle"] = {}
                out["count"] = L
                for i in range(0,L):
                    vin=vehicle['response'][i]['vin']
                    if len(pwd) == 0:
                        asset_id=vin
                    else:
                        asset_id = (vin + pwd).encode("utf-8")
                        asset_id = hashlib.sha256(asset_id).hexdigest()
                    checksum = self.checksum(asset_id,True)
                    out["vehicle"][str(i)] = asset_id + checksum
            except:
                pass

        return out
Esempio n. 10
0
def oauth2callback():
    code = request.args.get("code")
    error = request.args.get("error")
    if error:
        return "error :( {!r}".format(error)
    if not code:
        return redirect(
            google_auth.authorize_url(
                scope=["email"],
                response_type="code",
            ))

    data = google_auth.get_token(
        code=code,
        grant_type="authorization_code",
    )

    with requests.Session() as s:
        s.auth = OAuth2BearerToken(data["access_token"])
        discovery_request = s.get(
            "https://accounts.google.com/.well-known/openid-configuration")
        discovery_request.raise_for_status()
        userinfo_endpoint = discovery_request.json()["userinfo_endpoint"]

        userinfo_request = s.get(userinfo_endpoint)
        userinfo_request.raise_for_status()

    session["email"] = userinfo_request.json()["email"]
    return redirect(url_for("auth.login"))
Esempio n. 11
0
    def teslaSetBackoffLevel(self, backupPercent):
        #if self.connectionEstablished:
        LOGGER.debug('teslaSetBackoffLevel ' + str(backupPercent))
        S = self.__teslaConnect()
        with requests.Session() as s:
            try:
                s.auth = OAuth2BearerToken(S['access_token'])
                if backupPercent >= 0 and backupPercent <= 100:
                    payload = {'backup_reserve_percent': backupPercent}
                    r = s.post(self.TESLA_URL + self.API + '/energy_sites' +
                               self.site_id + '/backup',
                               json=payload)
                    site = r.json()
                    if site['response']['code'] < 210:
                        self.site_info[
                            'backup_reserve_percent'] = backupPercent
                        return (True)
                    else:
                        return (False)

                else:
                    return (False)
                    #site="Backup Percent out of range 0-100:" + str(backupPercent)
                    #LOGGER.debug(site)
            except Exception as e:
                LOGGER.error('Exception teslaSetBackoffLEvel: ' + str(e))
                LOGGER.error('Error setting bacup percent')
                return (False)
Esempio n. 12
0
 def teslaSetTimeOfUse(self):
     #if self.connectionEstablished:
     temp = {}
     S = self.__teslaConnect()
     with requests.Session() as s:
         try:
             s.auth = OAuth2BearerToken(S['access_token'])
             temp['tou_settings'] = {}
             temp['tou_settings']['optimization_strategy'] = self.touMode
             temp['tou_settings']['schedule'] = self.touScheduleList
             payload = temp
             r = s.post(self.TESLA_URL + self.API + '/energy_sites' +
                        self.site_id + '/time_of_use_settings',
                        json=payload)
             site = r.json()
             if site['response']['code'] < 210:
                 self.site_info['tou_settings'][
                     'optimization_strategy'] = self.touMode
                 self.site_info['tou_settings'][
                     'schedule'] = self.touScheduleList
                 return (True)
             else:
                 return (False)
         except Exception as e:
             LOGGER.error('Exception teslaSetTimeOfUse: ' + str(e))
             LOGGER.error('Error setting time of use parameters')
             return (False)
def google_index():
    if not session.get("access_token"):
        code = request.args.get("code")
        error = request.args.get("error")
        if error:
            return "error :( {!r}".format(error)
        if not code:
            login()
        data = google_auth.get_token(
            code=code,
            grant_type="authorization_code",
        )
        session["access_token"] = data.get("access_token")

    if session["access_token"]:
        with requests.Session() as s:
            s.auth = OAuth2BearerToken(session["access_token"])
            r = s.get("https://www.googleapis.com/plus/v1/people/me")
        r.raise_for_status()
        data = r.json()

        for email in data["emails"]:
            if not checkpermissions(email["value"]):
                return Response("<script>window.location.href=\"/login\"</script>",status=401)
        return Response("<script>window.location.href=\"/\"</script>",status=200)
    return Response("<script>window.location.href=\"/login\"</script>",status=401)
Esempio n. 14
0
def login():
    if not session.get("access_token"):
        return redirect("/oauth2callback")
    with requests.Session() as s:
        s.auth = OAuth2BearerToken(session["access_token"])
        r = s.get(
            "https://www.googleapis.com/plus/v1/people/me?access_token={}".
            format(session.get("access_token")))
    r.raise_for_status()
    data = r.json()
    if data["emails"][0]['value'] in displayname():
        session["displayName"] = data["displayName"]
        session["routeName"] = data["displayName"].replace(" ", "_")
        if usercheck(data["emails"][0]['value']):
            session["isUser"] = True
        else:
            session["isUser"] = False
        return redirect("/")
    if usercheck(data["emails"][0]['value']):
        session["displayName"] = data["displayName"]
        session["routeName"] = data["displayName"].replace(" ", "_")
        session["isUser"] = True
        # Creates new user if display is not in a User object:
        createuser(data["displayName"], data["emails"][0]['value'])
    else:
        session["displayName"] = data["displayName"]
        session["routeName"] = data["displayName"].replace(" ", "_")
        session["isUser"] = False
        # Creates new user if display is not in a User object:
        donorcreate(data["displayName"], data["emails"][0]['value'])
    return redirect("/")
Esempio n. 15
0
 def userExists(email):
     url = 'https://www.googleapis.com/admin/directory/v1/users/' + email
     with requests.Session() as s:
         s.auth = OAuth2BearerToken(self.__webdev_cred.token)
         r = s.get(url)
         if (r.status_code == 404):
             return False
         return True
Esempio n. 16
0
def google_index():
    if not session.get("access_token"):
        return redirect("/google/oauth2callback")
    with requests.Session() as s:
        s.auth = OAuth2BearerToken(session["access_token"])
        r = s.get("https://www.googleapis.com/plus/v1/people/me")
    r.raise_for_status()
    data = r.json()
    return "Hello, {}!".format(data["displayName"])
 def _get_session(self) -> Session:
     """
     This method create the session object for request
     :return:
     session object
     """
     with Session() as session:
         session.auth = OAuth2BearerToken(self._auth_token)
     return session
Esempio n. 18
0
def pco_index():
    info = ""
    if not session.get("access_token"):
        return redirect("/auth/callback")
    with requests.Session() as s:
        s.auth = OAuth2BearerToken(session["access_token"])
        r = s.get("https://api.planningcenteronline.com/people/v2/people")
    r.raise_for_status()
    data = r.json()
    return jsonify(data)
Esempio n. 19
0
 def query(self):
     with requests.Session() as session:
         session.auth = OAuth2BearerToken(self.access_token)
         response = session.get(self.url)
         try:
             response.raise_for_status()
         except HTTPError:
             pass
         data = response.json()
     return data
Esempio n. 20
0
    def jg_index():
        if not session.get("access_token"):
            return "not logged in"
        with requests.Session() as s:
            s.auth = OAuth2BearerToken(session["access_token"])
            r = s.get("http://api.justgiving.com/v1/account/getconsumerdetails")
        r.raise_for_status()
        data = r.json()

        return data
Esempio n. 21
0
 def teslaGetProduct(self):
     S = self.__teslaConnect()
     with requests.Session() as s:
         try:
             s.auth = OAuth2BearerToken(S['access_token'])
             r = s.get(self.TESLA_URL + self.API + "/products")
             products = r.json()
             return (products)
         except Exception as e:
             LOGGER.error('Exception teslaGetProduct: ' + str(e))
             LOGGER.error('Error getting product info')
             return (None)
Esempio n. 22
0
 def course_list(self, teacherEmail):
     cred = self.__mentor_cred
     http = _auth.authorized_http(cred)
     cred.refresh(http._request)
     url = "https://classroom.googleapis.com/v1/courses?courseStates=ACTIVE&teacherId=" + teacherEmail
     headers = {
         'Accept': 'application/json',
     }
     with requests.Session() as s:
         s.auth = OAuth2BearerToken(cred.token)
         r = s.get(url, headers=headers)
         return r.text
Esempio n. 23
0
def callapi(request):
    profile_endpoint = f'{settings.VERACITY_MYSERVICE_ENDPOINT}/my/profile'
    social = request.user.social_auth.get(
        provider=settings.SOCIAL_AUTH_AZUREAD_B2C_OAUTH2_SCHEMA)
    print(social.extra_data["access_token"])
    context = {}
    with requests.Session() as s:
        s.auth = OAuth2BearerToken(social.extra_data["access_token"])
        r = s.get(profile_endpoint)
        r.raise_for_status()
        data = r.json()
        context["result"] = data
    return render(request, 'api.html', context)
Esempio n. 24
0
def profile(user):
    if not session.get("access_token"):
        return redirect("/oauth2callback")
    with requests.Session() as s:
        s.auth = OAuth2BearerToken(session["access_token"])
        r = s.get(
            "https://www.googleapis.com/plus/v1/people/me?access_token={}".
            format(session.get("access_token")))
    r.raise_for_status()
    data = r.json()
    session["displayName"] = data["displayName"]
    session["routeName"] = data["displayName"].replace(" ", "_")
    return render_template("profile.html", data=data)
Esempio n. 25
0
def flight(origin, destination, departureDate, returnDate, adults, children,
           infants, token):

    conn = psycopg2.connect(host=pg_host,
                            database=pg_db,
                            user=pg_user,
                            password=pg_pasword)
    cur = conn.cursor()
    cur.execute("select token from users where token = %s;", (token, ))

    rows = cur.fetchall()
    cur.close()
    conn.close()

    if (rows == []):
        data = '3003'
    else:
        access_token = get_token()
        url2 = "https://test.api.amadeus.com/v2/shopping/flight-offers"
        query = {}
        if (origin != None or origin == ""):
            query["originLocationCode"] = origin

        if (destination != None or destination == ""):
            query["destinationLocationCode"] = destination

        if (departureDate != None or departureDate == ""):
            query["departureDate"] = departureDate

        if (returnDate != None or returnDate == ""):
            query["returnDate"] = returnDate

        if (adults != None or adults == ""):
            query["adults"] = adults

        if (children != None or children == ""):
            query["children"] = children

        if (infants != None or infants == ""):
            query["infants"] = infants

        query['max'] = '50'

        with requests.Session() as s:
            s.auth = OAuth2BearerToken(access_token)
            s.params = query
            r = s.get(url2)
            r.raise_for_status()
            data = r.json()

    return data
Esempio n. 26
0
    def __tesla_connect(self,email, pwd):
        """
        Checks if valid email and password
        """

        code_verifier = ''.join(random.choices(string.ascii_letters+string.digits, k=86))
        code_challenge = hashlib.sha256(code_verifier.encode('utf-8')).hexdigest()

        data = {}
        data['client_id']='ownerapi'
        data['code_challenge']=code_challenge
        data['code_challenge_method']='S256'
        data['redirect_uri']='https://auth.tesla.com/void/callback'
        data['response_type']='code'
        data['scope']='openid email offline_access'
        data['state']='123'
        data['login_hint']=email

        r = requests.get('https://auth.tesla.com/oauth2/v3/authorize', data)
        cookies = r.cookies
        data = self.html_parse(data,r.text)
        data['identity'] = email
        data['credential'] = pwd

        r = requests.post('https://auth.tesla.com/oauth2/v3/authorize', data=data, cookies=cookies, allow_redirects=False)
        code = self.myparse2(r.text,'code=')

        data = {}
        data['grant_type'] = 'authorization_code'
        data['client_id'] = 'ownerapi'
        data['code'] = code
        data['code_verifier'] = code_verifier
        data['redirect_uri'] = 'https://auth.tesla.com/void/callback'        
        r = requests.post('https://auth.tesla.com/oauth2/v3/token', data=data)
        S = json.loads(r.text)

        data = {}
        data['grant_type'] = 'urn:ietf:params:oauth:grant-type:jwt-bearer'
        data['client_id']=self.CLIENT_ID
        data['client_secret']=self.CLIENT_SECRET
        with requests.Session() as s:
            try:
                s.auth = OAuth2BearerToken(S['access_token'])
                r = s.post(self.TESLA_URL + '/oauth/token',data)
                S = json.loads(r.text)
            except:
                pass
		
        time.sleep(1)
        return S
Esempio n. 27
0
def prove():
    access_token = get_token()
    url2 = "https://test.api.amadeus.com/v1/shopping/flight-offers"
    query = {'origin': 'NYC',
            'destination': 'MAD',
            'departureDate':'2020-10-01',
            'max':'8'}

    with requests.Session() as s:
        s.auth = OAuth2BearerToken(access_token)
        s.params = query 
        r = s.get(url2)
        r.raise_for_status()
        data = r.json()
    return data
Esempio n. 28
0
    def query(self):
        """The request that returns a JSON file of the API call given a url.

        :return: the `base_url` and the `end_url`.
        :rtype: :class: `json`
        """
        with requests.Session() as session:
            session.auth = OAuth2BearerToken(self.access_token)
            response = session.get(self.url)
            try:
                response.raise_for_status()
            except HTTPError:
                pass
            data = response.json()
        return data
Esempio n. 29
0
def login():
    if not session.get("access_token"):
        return redirect("/oauth2callback")
    with requests.Session() as s:
        s.auth = OAuth2BearerToken(session["access_token"])
        r = s.get(
            "https://www.googleapis.com/plus/v1/people/me?access_token={}".
            format(session.get("access_token")))
    r.raise_for_status()
    data = r.json()

    # Save Necessary variables
    session["displayName"] = data["displayName"]
    session["image"] = data["image"]["url"]

    return redirect("/")
Esempio n. 30
0
    def account_create(self, firstName, lastName, personalEmail):
        http = _auth.authorized_http(self.__webdev_cred)
        self.__webdev_cred.refresh(http._request)
        url = "https://www.googleapis.com/admin/directory/v1/users"
        headers = {
            # 'Authorization': 'Bearer' delegated_credentials.token,
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        }
        # checking if the email id already exists, adds an id to the end to differentiate
        addedID = 0  # on repeat, email will start from [email protected]

        def userExists(email):
            url = 'https://www.googleapis.com/admin/directory/v1/users/' + email
            with requests.Session() as s:
                s.auth = OAuth2BearerToken(self.__webdev_cred.token)
                r = s.get(url)
                if (r.status_code == 404):
                    return False
                return True

        primaryEmail = firstName + '.' + lastName + '@villagementors.org'

        while (userExists(primaryEmail)):
            addedID += 1
            primaryEmail = firstName + '.' + lastName + \
                str(addedID) + '@villagementors.org'
        pwd = 'VBB' + random.choice(['!', '@', '#', '$', '%', '&']) + \
                                    str(random.randint(100000000, 1000000000))

        data = '''
    {
      "primaryEmail": "%s",
      "name": {
        "familyName": "%s",
        "givenName": "%s"
      },
      "password": "******",
      "changePasswordAtNextLogin": "******",
      "recoveryEmail": "%s",
    }
    ''' % (primaryEmail, lastName, firstName, pwd, personalEmail)

        with requests.Session() as s:
            s.auth = OAuth2BearerToken(self.__webdev_cred.token)
            r = s.post(url, headers=headers, data=data)
        return (primaryEmail, pwd)