34 lines
805 B
Python
34 lines
805 B
Python
|
import urllib.parse
|
||
|
|
||
|
import requests
|
||
|
from django.contrib.auth.forms import AuthenticationForm
|
||
|
|
||
|
from . import api
|
||
|
|
||
|
|
||
|
def authenticate(username, password):
|
||
|
url = api.build_absolute_uri('token-auth')
|
||
|
r = requests.post(
|
||
|
url,
|
||
|
data={"username": username, "password": password},
|
||
|
)
|
||
|
|
||
|
token = r.json().get("token", None)
|
||
|
return token
|
||
|
|
||
|
|
||
|
class LoginForm(AuthenticationForm):
|
||
|
|
||
|
def clean(self):
|
||
|
username = self.cleaned_data.get('username')
|
||
|
password = self.cleaned_data.get('password')
|
||
|
|
||
|
if username is not None and password:
|
||
|
self.token = authenticate(username, password)
|
||
|
if self.token is None:
|
||
|
raise self.get_invalid_login_error()
|
||
|
else:
|
||
|
return self.token
|
||
|
|
||
|
return self.cleaned_data
|