mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 06:42:16 +00:00
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
from urllib import urlencode
|
|
from datetime import datetime
|
|
|
|
from django.http import HttpResponseForbidden
|
|
from django.contrib.auth.models import AnonymousUser
|
|
from django.utils.timezone import now
|
|
|
|
from api.models import AuthAPIKey, AuthAPILog
|
|
|
|
|
|
class APIKeyAuthentication(object):
|
|
""" Validats a request by API key passed as a GET parameter """
|
|
|
|
def is_authenticated(self, request):
|
|
try:
|
|
keyobj = AuthAPIKey.objects.get(key=request.GET.get('apikey', None))
|
|
except AuthAPIKey.DoesNotExist:
|
|
pass
|
|
else:
|
|
if keyobj and keyobj.active:
|
|
params = request.GET.copy()
|
|
if params.get('apikey', None): del params['apikey']
|
|
if len(params):
|
|
url = "%s?%s" % (request.path, urlencode(params))
|
|
else:
|
|
url = request.path
|
|
AuthAPILog.objects.create(key=keyobj, access_datetime=now(), url=url)
|
|
request.user = AnonymousUser()
|
|
request.api_key = keyobj
|
|
return True
|
|
return False
|
|
|
|
def challenge(self):
|
|
return HttpResponseForbidden('Access Denied, use a API Key')
|