Add basic login.
[wolnelektury.git] / src / api / drf_auth.py
1 # This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later.
2 # Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
3 #
4 from oauthlib.oauth1 import ResourceEndpoint
5 from rest_framework.authentication import BaseAuthentication, TokenAuthentication
6 from .request_validator import PistonRequestValidator
7 from .utils import oauthlib_request
8 from .models import Token
9
10
11 class PistonOAuthAuthentication(BaseAuthentication):
12     def __init__(self):
13         validator = PistonRequestValidator()
14         self.provider = ResourceEndpoint(validator)
15
16     def authenticate_header(self, request):
17         return 'OAuth realm="API"'
18
19     def authenticate(self, request):
20         v, r = self.provider.validate_protected_resource_request(
21             **oauthlib_request(request)
22         )
23         if v:
24             return r.token.user, r.token
25
26
27 class WLTokenAuthentication(TokenAuthentication):
28     model = Token