Código fuente para person.authenticator.views

# encoding: utf-8

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

'''
@date: 12/9/2017
@author: Luis Zarate Montero
@contact: luis.zarate@solvosoft.com
@license: GPLv3
'''

from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.authentication import TokenAuthentication
from rest_framework.decorators import authentication_classes, permission_classes
from rest_framework.permissions import IsAuthenticated

from django.utils import timezone
import logging

from rest_framework.viewsets import GenericViewSet

from corebase.views import ViewSetBase
from corebase.logging import get_ip, get_log_person_information
from person.models import AuthenticatePersonRequest
from person.authenticator.serializer import \
    Authenticate_Person_Request_Serializer,\
    Authenticate_Person_Response_Serializer
from django.conf import settings

logger = logging.getLogger(settings.DEFAULT_LOGGER_NAME)

from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework import mixins

logger = logging.getLogger(settings.DEFAULT_LOGGER_NAME)



[documentos]class AuthenticatePersonView(mixins.RetrieveModelMixin, mixins.CreateModelMixin, mixins.DestroyModelMixin, GenericViewSet): """ **Solucitud de autenticación de una persona** :: POST /person/authenticate/ Solicita una petición de autenticación para un usuario Los valores a suministrar en el parámetro data son: * **person:** identificación de la persona solicitante de autenticación, * **identification:** Identificación de la persona a autenticar, * **request_datetime:** Hora de petición en formato '%Y-%m-%d %H:%M:%S', osea '2006-10-25 14:30:59' Data es un diccionario, osea un objeto de tipo clave -> valor Los valores devueltos son: * **expiration_datetime:** hora final de validez * **request_datetime:** Hora de recepción de la solicitud * **id_transaction:** Id de trasnacción en el FVA del BCCR * **status:** Código de error de la transacción * **identification:** Identificador del suscriptor * **code:** Código para mostrar al usuario * **received_notification** True si la autenticación ha sido procesada, False si está esperando al usuario * **signed_document** Siempre es None puesto que el documento todavía no se ha firmado a este punto * **duration** Tiempo en segundos que dura la transacción **Solucitud de información de una transacción de autenticación** :: GET /person/authenticate/{transaction_id}/ Solicita un estado de la solicitud de autenticación para un usuario Los valores a suministrar en el parámetro data son: * **transaction_id:** identificación de la transacción de autenticación de la que se requiere información Data es un diccionario, osea un objeto de tipo clave -> valor Los valores devueltos son: * **expiration_datetime:** hora final de validez * **request_datetime:** Hora de recepción de la solicitud * **id_transaction:** Id de trasnacción en el FVA del BCCR * **status:** Código de error de la transacción * **identification:** Identificador del suscriptor * **code:** Código para mostrar al usuario * **received_notification** True si la autenticación ha sido procesada, False si está esperando al usuario * **signed_document** Documento firmado en base64 o None si aún no se ha firmado la autenticación * **duration** Tiempo en segundos que dura la transacción **Elimina la información de la transacción de autenticación** :: DELETE /person/authenticate/{transaction_id}/ Los valores devueltos son: No tiene valores devueltos """ serializer_class = Authenticate_Person_Request_Serializer queryset = AuthenticatePersonRequest.objects.all() response_class = Authenticate_Person_Response_Serializer permission_classes = [IsAuthenticated] authentication_classes = [TokenAuthentication] def retrieve(self, request, *args, **kwargs): self.serializer_class = self.response_class return super().retrieve(request, *args, **kwargs)