def get_access_token(request, redirect_uri): DBconn.connectDB() user_id = request.session["user_id"] if user_id: record = DBwrapper.getRecordFromOffice(user_id) current_token = record[0][4] refresh_token = record[0][5] expiration = record[0][6] now = int(time.time()) if (current_token and now < expiration): # Token still valid return current_token else: # Token expired #refresh_token = request.session['refresh_token'] new_tokens = Auth.get_token_from_refresh_token( refresh_token, redirect_uri) expiration = int(time.time()) + new_tokens['expires_in'] - 300 DBwrapper.refreshTokenOffice(user_id, new_tokens['access_token'], new_tokens['refresh_token'], expiration) # Save the token in the session request.session['access_token'] = new_tokens['access_token'] request.session['refresh_token'] = new_tokens['refresh_token'] request.session['token_expires'] = expiration return new_tokens['access_token'] else: return 0
def get_access_token(request, redirect_uri): DBconn.connectDB() current_token = request.session['access_token'] expiration = request.session['token_expires'] now = int(time.time()) if (current_token and now < expiration): # Token still valid return current_token else: # Token expired refresh_token = request.session['refresh_token'] new_tokens = get_token_from_refresh_token(refresh_token, redirect_uri) # Update session # expires_in is in seconds # Get current timestamp (seconds since Unix Epoch) and # add expires_in to get expiration time # Subtract 5 minutes to allow for clock differences expiration = int(time.time()) + new_tokens['expires_in'] - 300 # Save the token in the session request.session['access_token'] = new_tokens['access_token'] request.session['refresh_token'] = new_tokens['refresh_token'] request.session['token_expires'] = expiration return new_tokens['access_token']
def get_signin_url(redirect_uri): DBconn.connectDB() # Build the query parameters for the signin url params = { 'client_id': client_id, 'redirect_uri': redirect_uri, 'response_type': 'code', 'scope': ' '.join(str(i) for i in scopes) } signin_url = authorize_url.format(urlencode(params)) return signin_url
def refreshTokenOffice(user_id, access_token, refresh_token, expiration): DBconn.refreshTokenOffice(user_id, access_token, refresh_token, expiration) return
def getRecordFromOffice(user_id): access_token = DBconn.getRecordFromOffice(user_id) return access_token
def addTokenToOffice(user, mail, token, access_token, refresh_token, expiration, session_state): DBconn.addTokenOffice(user, mail, token, access_token, refresh_token, expiration, session_state) return
def getMailsFromOfficeAcc(id): mails = DBconn.getEmailOffice(id) return mails
def getOfficeAcc(): accounts = DBconn.getAccountsOffice() return accounts
def DBwrapper(): DBconn.connectDB() return