auth_utils.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from django.contrib.auth.models import User
  2. from django.utils import timezone
  3. from requests import post
  4. from django.conf import settings
  5. from .models import UserModel
  6. from requests import get
  7. def get_access_token(user_model):
  8. if user_model.expiry > timezone.now():
  9. return user_model.access_token
  10. else:
  11. access_token, expires_in = refresh_access_token(user_model.refresh_token)
  12. user_model.access_token = access_token
  13. user_model.expiry = timezone.now() + timezone.timedelta(seconds=expires_in)
  14. user_model.save()
  15. return access_token
  16. def get_auth_header():
  17. user = User.objects.get(username='admin@ercare')
  18. user_model = UserModel.objects.get(user=user)
  19. access_token = get_access_token(user_model)
  20. headers = {
  21. 'authorization': 'Bearer ' + access_token,
  22. 'content-type': 'application/json'
  23. }
  24. return headers
  25. # def has_expired(credentials):
  26. # expiry_time = credentials['expiry']
  27. # now = str(timezone.datetime.now())
  28. # return now > expiry_time
  29. # def get_access_token(request):
  30. # if 'credentials' in request.session and not has_expired(request.session['credentials']):
  31. # cred = request.session['credentials']
  32. # return cred['access_token']
  33. # access_token, expires_in = refresh_access_token()
  34. # expired_at = timezone.datetime.now() + timezone.timedelta(seconds=expires_in)
  35. # expiry = str(expired_at)
  36. # credentials = {
  37. # 'access_token': access_token,
  38. # 'expiry': expiry
  39. # }
  40. # request.session['credentials'] = credentials
  41. # return credentials['access_token']
  42. def refresh_access_token(refresh_token):
  43. client_id = settings.CLIENT_ID
  44. client_secret = settings.CLIENT_SECRET
  45. token_uri = settings.TOKEN_URI
  46. params = {
  47. "grant_type": "refresh_token",
  48. "client_id": client_id,
  49. "client_secret": client_secret,
  50. "refresh_token": refresh_token
  51. }
  52. response = post(token_uri, data=params).json()
  53. access_token = response.get('access_token')
  54. expires_in = response.get('expires_in')
  55. return access_token, expires_in
  56. def get_google_account_id(access_token):
  57. uri = 'https://mybusiness.googleapis.com/v4/accounts'
  58. headers = {
  59. 'authorization': 'Bearer '+access_token,
  60. 'content-type': 'application/json'
  61. }
  62. res = get(uri, headers=headers).json()
  63. accounts_name = res['accounts'][0]['name']
  64. id = accounts_name.split('/')[-1]
  65. return id
  66. def get_gmb_id():
  67. user = User.objects.get(username='admin@ercare')
  68. gmb_id = UserModel.objects.get(user=user).gmb_account_id
  69. return user, gmb_id