See #75: user can now manage the Subsonic API token from their settings page
This commit is contained in:
parent
7595936260
commit
24cb1d9519
5 changed files with 264 additions and 4 deletions
|
|
@ -1,11 +1,13 @@
|
|||
from rest_framework.response import Response
|
||||
from rest_framework import mixins
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.decorators import list_route
|
||||
from rest_framework.decorators import detail_route, list_route
|
||||
|
||||
from rest_auth.registration.views import RegisterView as BaseRegisterView
|
||||
from allauth.account.adapter import get_adapter
|
||||
|
||||
from funkwhale_api.common import preferences
|
||||
|
||||
from . import models
|
||||
from . import serializers
|
||||
|
||||
|
|
@ -37,6 +39,28 @@ class UserViewSet(
|
|||
serializer = serializers.UserReadSerializer(request.user)
|
||||
return Response(serializer.data)
|
||||
|
||||
@detail_route(
|
||||
methods=['get', 'post', 'delete'], url_path='subsonic-token')
|
||||
def subsonic_token(self, request, *args, **kwargs):
|
||||
if not self.request.user.username == kwargs.get('username'):
|
||||
return Response(status=403)
|
||||
if not preferences.get('subsonic__enabled'):
|
||||
return Response(status=405)
|
||||
if request.method.lower() == 'get':
|
||||
return Response({
|
||||
'subsonic_api_token': self.request.user.subsonic_api_token
|
||||
})
|
||||
if request.method.lower() == 'delete':
|
||||
self.request.user.subsonic_api_token = None
|
||||
self.request.user.save(update_fields=['subsonic_api_token'])
|
||||
return Response(status=204)
|
||||
self.request.user.update_subsonic_api_token()
|
||||
self.request.user.save(update_fields=['subsonic_api_token'])
|
||||
data = {
|
||||
'subsonic_api_token': self.request.user.subsonic_api_token
|
||||
}
|
||||
return Response(data)
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
if not self.request.user.username == kwargs.get('username'):
|
||||
return Response(status=403)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue