mirror of
https://github.com/tubearchivist/tubearchivist-frontend.git
synced 2024-11-22 11:50:14 +00:00
add API login view
This commit is contained in:
parent
5d8e314983
commit
5dce2441fa
@ -20,6 +20,24 @@ headers = {"Authorization": "Token xxxxxxxxxx"}
|
|||||||
response = requests.get(url, headers=headers)
|
response = requests.get(url, headers=headers)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Login View
|
||||||
|
Return token and user ID for username and password:
|
||||||
|
POST /api/login
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"username": "tubearchivist",
|
||||||
|
"password": "verysecret"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
after successful login returns
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||||
|
"user_id": 1
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Video Item View
|
## Video Item View
|
||||||
/api/video/\<video_id>/
|
/api/video/\<video_id>/
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ from api.views import (
|
|||||||
ChannelApiView,
|
ChannelApiView,
|
||||||
DownloadApiListView,
|
DownloadApiListView,
|
||||||
DownloadApiView,
|
DownloadApiView,
|
||||||
|
LoginApiView,
|
||||||
PlaylistApiView,
|
PlaylistApiView,
|
||||||
VideoApiView,
|
VideoApiView,
|
||||||
VideoProgressView,
|
VideoProgressView,
|
||||||
@ -12,6 +13,7 @@ from api.views import (
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
path("login/", LoginApiView.as_view(), name="api-login"),
|
||||||
path(
|
path(
|
||||||
"video/<slug:video_id>/",
|
"video/<slug:video_id>/",
|
||||||
VideoApiView.as_view(),
|
VideoApiView.as_view(),
|
||||||
|
@ -10,6 +10,8 @@ from rest_framework.authentication import (
|
|||||||
SessionAuthentication,
|
SessionAuthentication,
|
||||||
TokenAuthentication,
|
TokenAuthentication,
|
||||||
)
|
)
|
||||||
|
from rest_framework.authtoken.models import Token
|
||||||
|
from rest_framework.authtoken.views import ObtainAuthToken
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
@ -242,3 +244,23 @@ class DownloadApiListView(ApiBaseView):
|
|||||||
extrac_dl.delay(youtube_ids)
|
extrac_dl.delay(youtube_ids)
|
||||||
|
|
||||||
return Response(data)
|
return Response(data)
|
||||||
|
|
||||||
|
|
||||||
|
class LoginApiView(ObtainAuthToken):
|
||||||
|
"""resolves to /api/login/
|
||||||
|
POST: return token and username after successful login
|
||||||
|
"""
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
"""post data"""
|
||||||
|
# pylint: disable=no-member
|
||||||
|
serializer = self.serializer_class(
|
||||||
|
data=request.data, context={"request": request}
|
||||||
|
)
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
user = serializer.validated_data["user"]
|
||||||
|
token, _ = Token.objects.get_or_create(user=user)
|
||||||
|
|
||||||
|
print(f"returning token for user with id {user.pk}")
|
||||||
|
|
||||||
|
return Response({"token": token.key, "user_id": user.pk})
|
||||||
|
Loading…
Reference in New Issue
Block a user