Private
Public Access
1
0

rojabo token exchange works, refresh not

This commit is contained in:
Sander Roosendaal
2022-04-14 09:59:54 +02:00
parent 2b4179360d
commit 6ef9c19f4a
10 changed files with 250 additions and 8 deletions

View File

@@ -1,4 +1,4 @@
from rowsandall_app.settings import NK_OAUTH_LOCATION
from rowsandall_app.settings import NK_OAUTH_LOCATION, ROJABO_OAUTH_LOCATION
from rowers.views.statements import *
from rowers.plannedsessions import get_dates_timeperiod
@@ -139,6 +139,23 @@ def workout_sporttracks_upload_view(request, id=0):
return HttpResponseRedirect(url) # pragma: no cover
# ROJABO authorization
def rower_rojabo_authorize(request): # pragma: no cover
state = str(uuid4())
scope = "read"
params = {
# "grant_type": "authorization_code",
# "response_type": "code",
"client_id": ROJABO_CLIENT_ID,
#"client_secret": ROJABO_CLIENT_SECRET,
# "scope": scope,
#"state": state,
"redirect_uri": ROJABO_REDIRECT_URI,
}
url = ROJABO_OAUTH_LOCATION+'oauth/authorize?'+urllib.parse.urlencode(params)
return HttpResponseRedirect(url)
# NK Logbook authorization
@login_required()
@@ -496,9 +513,47 @@ def rower_process_garmincallback(request): # pragma: no cover
url = reverse('rower_exportsettings_view')
return HttpResponseRedirect(url)
# Process Rojabo callback
@login_required()
def rower_process_rojabocallback(request): # prgrma: no cover
# do stuff
try:
code = request.GET.get('code', None)
res = rojabo_stuff.get_token(code)
except MultiValueDictKeyError:
message = "The resource owner or authorization server denied the request"
messages.error(request, message)
url = reverse('rower_exportsettings_view')
return HttpResponseRedirect(url)
access_token = res[0]
if access_token == 0:
message = res[1]
message += ' Contact support@rowsandall.com if this behavior persists'
messages.error(request, message)
url = reverse('rower_exportsettings_view')
return HttpResponseRedirect(url)
expires_in = res[1]
refresh_token = res[2]
expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
r = getrower(request.user)
r.rojabo_token = access_token
r.rojabo_tokenexpirydate = expirydatetime
r.rojabo_refreshtoken = refresh_token
r.save()
successmessage = "Tokens stored. Good to go. Please check your import/export settings"
messages.info(request, successmessage)
url = reverse('rower_exportsettings_view')
return HttpResponseRedirect(url)
# Process NK Callback
@login_required()
def rower_process_nkcallback(request): # pragma: no cover
# do stuff