# -*- encoding:utf-8 -*- from rest_framework.authtoken.models import Token from rest_framework.response import Response from rest_framework.decorators import api_view from django.views.decorators.cache import never_cache from django.contrib.auth import login def token_required(func): @api_view(['GET', 'POST']) @never_cache def inner(request, *args, **kwargs): if request.method == 'OPTIONS': return func(request, *args, **kwargs) auth_header = request.META.get('HTTP_AUTHORIZATION', None) if auth_header is not None: try: token = Token.objects.get(key=auth_header) request.auth=token user=token.user user.backend = 'django.contrib.auth.backends.ModelBackend' login(request,user) return func(request, *args, **kwargs) except Token.DoesNotExist: return Response({'succses': 'Error de autenticación'}) return Response({ 'error': 'Encabezado invalido' }, status=401) return inner