|
@@ -0,0 +1,41 @@
|
|
|
+from django.utils import timezone
|
|
|
+from .views import CLIENT_SECRETS_FILE
|
|
|
+from requests import post
|
|
|
+
|
|
|
+from .models import UserModel
|
|
|
+
|
|
|
+
|
|
|
+def has_expired(credentials):
|
|
|
+ expiry_time = credentials['access_token']
|
|
|
+ return timezone.datetime.now() > expiry_time
|
|
|
+
|
|
|
+
|
|
|
+def get_access_token(request):
|
|
|
+ uid = request.user.id
|
|
|
+ user = UserModel.objects.filter(pk=uid)
|
|
|
+ if user:
|
|
|
+ refresh_token = user.refresh_token
|
|
|
+ else:
|
|
|
+ return None
|
|
|
+
|
|
|
+ client_id = CLIENT_SECRETS_FILE.client_id
|
|
|
+ client_secret = CLIENT_SECRETS_FILE.client_secret
|
|
|
+ token_uri = CLIENT_SECRETS_FILE.token_uri
|
|
|
+ params = {
|
|
|
+ "grant_type": "refresh_token",
|
|
|
+ "client_id": client_id,
|
|
|
+ "client_secret": client_secret,
|
|
|
+ "refresh_token": refresh_token
|
|
|
+ }
|
|
|
+
|
|
|
+ response = post(token_uri, data=params).json()
|
|
|
+ access_token = response['access_token']
|
|
|
+ expires_in = response['expires_in']
|
|
|
+ expired_at = timezone.datetime.now() + timezone.timedelta(seconds=expires_in)
|
|
|
+ expiry = str(expired_at)
|
|
|
+ credentials = {
|
|
|
+ 'access_token': access_token,
|
|
|
+ 'expiry': expiry
|
|
|
+ }
|
|
|
+ request.session['credentials'] = credentials
|
|
|
+ return response.access_token
|