]> git.frykholm.com Git - tranquillity.git/blame - tranquillity/auth_backend.py
Make secret settings actually work.
[tranquillity.git] / tranquillity / auth_backend.py
CommitLineData
26235f08 1from django.contrib.auth import get_user_model
d1f79ec8 2from django.contrib.auth.models import User
26235f08 3from django.contrib.auth.backends import ModelBackend
d1f79ec8 4import requests
93be1853 5from django.conf import settings
26235f08
MF
6
7class EmailBackend(ModelBackend):
d1f79ec8
MF
8 def fetch_fortnox(self):
9 """ Fetch all active customers from Fortnox API. Return as dict keyed on email."""
10 res = None
11 customers = {}
93be1853
MF
12 headers = {"Access-Token":settings.FORTNOX_ACCESS_TOKEN,
13 "Client-Secret":settings.FORTNOX_CLIENT_SECRET,
d1f79ec8
MF
14 "Content-Type":"application/json",
15 "Accept":"application/json" }
16
17 res = requests.get("https://api.fortnox.se/3/customers?filter=active", headers=headers)
18 for customer in res.json()['Customers']:
19 customers[customer['Email']] = customer
20 return customers
21
26235f08
MF
22 def authenticate(self, username=None, password=None, **kwargs):
23 UserModel = get_user_model()
24 try:
25 user = UserModel.objects.get(email=username)
26 except UserModel.DoesNotExist:
d1f79ec8
MF
27 customers = self.fetch_fortnox()
28 if username in customers:
29 if ' ' in customers[username]['Name']:
30 (fname,lname) = customers[username]['Name'].split(' ',1)
31 user = User.objects.create_user(username=username,
32 email=username,
33 first_name=fname,
34 last_name=lname)
35 return user
36 else:
37 fname = customers[username]['Name']
38 user = User.objects.create_user(username=username,
39 email=username,
40 first_name=fname)
41 return user
26235f08
MF
42 return None
43 else:
44 if user.check_password(password):
45 return user
46 return None