diff --git a/sapl/api/urls.py b/sapl/api/urls.py index 6bfeb12bf..cf07cb4ed 100644 --- a/sapl/api/urls.py +++ b/sapl/api/urls.py @@ -6,7 +6,7 @@ from rest_framework.routers import DefaultRouter from sapl.api.deprecated import MateriaLegislativaViewSet, SessaoPlenariaViewSet,\ AutoresProvaveisListView, AutoresPossiveisListView, AutorListView,\ ModelChoiceView -from sapl.api.views import SaplApiViewSetConstrutor, AppVersionView +from sapl.api.views import SaplApiViewSetConstrutor, AppVersionView, renova_token from .apps import AppConfig @@ -71,6 +71,7 @@ urlpatterns = [ url(r'^api/', include(urlpatterns_api_doc)), url(r'^api/', include(urlpatterns_router)), url(r'^api/version', AppVersionView.as_view()), + url(r'^api/renovar-token/$', renova_token, name="renova_token"), # implementar caminho para autenticação # https://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/ diff --git a/sapl/api/views.py b/sapl/api/views.py index cb0b1a8ff..33e88109e 100644 --- a/sapl/api/views.py +++ b/sapl/api/views.py @@ -3,10 +3,12 @@ import logging from django import apps from django.conf import settings from django.contrib.contenttypes.models import ContentType +from django.core.urlresolvers import reverse_lazy from django.db.models import Q from django.db.models.fields.files import FileField from django.db.models.signals import post_save from django.dispatch import receiver +from django.http import HttpResponseRedirect, HttpResponse from django.utils.decorators import classonlymethod from django.utils.text import capfirst from django.utils.translation import ugettext_lazy as _ @@ -48,6 +50,16 @@ def create_auth_token(sender, instance=None, created=False, **kwargs): Token.objects.create(user=instance) +def renova_token(request): + if request.user.is_authenticated: + Token.objects.filter(user_id=request.user.id).delete() + Token.objects.create(user_id=request.user.id) + + return HttpResponseRedirect(reverse_lazy("sapl.base:user_edit", kwargs={"pk": request.user.id})) + else: + return HttpResponse('Usuário não autenticado!', status=401) + + class BusinessRulesNotImplementedMixin: def create(self, request, *args, **kwargs): raise Exception(_("POST Create não implementado"))