Esempio n. 1
0
    def form_valid(self, form):
        """!
        Form Valid Method

        @param form Recives form object
        @return validate True
        """
        new_user = form.save(commit=False)

        new_user.save()
        new_user.groups.add(3)
        ip_client = IpClient()
        get_ip = ip_client.get_client_ip(self.request)
        model_user = ContentType.objects.get_for_model(User).pk
        msg = 'User registered successfully'
        LogEntry.objects.log_action(user_id=new_user.pk,
                                    content_type_id=model_user,
                                    object_id=new_user.pk,
                                    object_repr=str(new_user.username),
                                    action_flag=ADDITION,
                                    change_message=[{
                                        "added": {
                                            'ip_client': get_ip,
                                            'message': msg
                                        }
                                    }])
        messages.info(self.request, msg)
        return super().form_valid(form)
Esempio n. 2
0
    def form_valid(self, form):
        """!
        Form Valid Method

        @param form Recives form object
        @return send mail and save forgot log
        """
        ip_client = IpClient()
        get_ip = ip_client.get_client_ip(self.request)
        model_user = ContentType.objects.get_for_model(User).pk
        opts = {
            'use_https': self.request.is_secure(),
            'token_generator': self.token_generator,
            'from_email': self.from_email,
            'email_template_name': self.email_template_name,
            'subject_template_name': self.subject_template_name,
            'request': self.request,
            'html_email_template_name': self.html_email_template_name,
            'extra_email_context': self.extra_email_context,
        }
        form.save(**opts)
        email = form.cleaned_data['email']
        msg = 'The email was sent successfully to recover the password of the user %s' % (
            email)
        message = [{'forgot': {'ip_client': get_ip, 'mail_send': msg}}]
        user = User.objects.get(email=email)
        LogEntry.objects.log_action(user_id=user.pk,
                                    content_type_id=model_user,
                                    object_id=user.pk,
                                    object_repr=str(user.username),
                                    action_flag=FORGOT,
                                    change_message=message)
        messages.success(self.request,
                         "Se envio el correo electronico con exito")
        return super().form_valid(form)
Esempio n. 3
0
    def dispatch(self, *args, **kwargs):
        assert 'uidb64' in kwargs and 'token' in kwargs

        self.validlink = False
        self.user = self.get_user(kwargs['uidb64'])
        ip_client = IpClient()
        get_ip = ip_client.get_client_ip(self.request)
        model_user = ContentType.objects.get_for_model(User).pk

        if self.user is not None:
            token = kwargs['token']
            if token == INTERNAL_RESET_URL_TOKEN:
                session_token = self.request.session.get(
                    INTERNAL_RESET_SESSION_TOKEN)
                if self.token_generator.check_token(self.user, session_token):
                    # If the token is valid, display the password reset form.
                    self.validlink = True
                    msg = 'The token is valid, you can recover the password'
                    message = [{
                        'forgot': {
                            'ip_client': get_ip,
                            'message': msg,
                            'validate': self.validlink
                        }
                    }]
                    LogEntry.objects.log_action(user_id=self.user.pk,
                                                content_type_id=model_user,
                                                object_id=self.user.pk,
                                                object_repr=str(
                                                    self.user.username),
                                                action_flag=FORGOT,
                                                change_message=message)
                    return super().dispatch(*args, **kwargs)
            else:
                if self.token_generator.check_token(self.user, token):
                    # Store the token in the session and redirect to the
                    # password reset form at a URL without the token. That
                    # avoids the possibility of leaking the token in the
                    # HTTP Referer header.
                    self.request.session[INTERNAL_RESET_SESSION_TOKEN] = token
                    redirect_url = self.request.path.replace(
                        token, INTERNAL_RESET_URL_TOKEN)
                    return HttpResponseRedirect(redirect_url)

        # Display the "Password reset unsuccessful" page.
        msg = 'The token is invalid, you can not recover the password, verify the mail and try again, but request a new token'
        message = [{
            'forgot': {
                'ip_client': get_ip,
                'message': msg,
                'validate': self.validlink
            }
        }]
        LogEntry.objects.log_action(user_id=self.user.pk,
                                    content_type_id=model_user,
                                    object_id=self.user.pk,
                                    object_repr=str(self.user.username),
                                    action_flag=FORGOT,
                                    change_message=message)
        return self.render_to_response(self.get_context_data())
Esempio n. 4
0
 def form_valid(self, form):
     ip_client = IpClient()
     get_ip = ip_client.get_client_ip(self.request)
     model_user = ContentType.objects.get_for_model(User).pk
     user = form.save()
     msg = 'The reset of the password is confirmed, the %s, has a new password' % (
         user.username)
     message = [{'forgot': {'ip_client': get_ip, 'message': msg}}]
     LogEntry.objects.log_action(user_id=self.user.pk,
                                 content_type_id=model_user,
                                 object_id=self.user.pk,
                                 object_repr=str(self.user.username),
                                 action_flag=FORGOT,
                                 change_message=message)
     if self.post_reset_login:
         login(self.request, user, self.post_reset_login_backend)
     messages.success(self.request, msg)
     return super().form_valid(form)
Esempio n. 5
0
    def form_valid(self, form):
        """
        Validate the logeo form
        @return: Direct to the initial screen of the platform
        """
        usuario = form.cleaned_data['usuario']

        contrasena = form.cleaned_data['contrasena']

        validate = False
        try:
            validate_email(usuario)
            try:
                usuario = User.objects.get(email=usuario).username
            except:
                #messages.error(self.request, MENSAJES_LOGIN['CORREO_INVALIDO'] % (usuario))
                pass
        except Exception as e:
            pass
        ip_client = IpClient()
        get_ip = ip_client.get_client_ip(self.request)
        model_token = ContentType.objects.get_for_model(TwoFactToken).pk
        model_user = ContentType.objects.get_for_model(User).pk
        username = usuario
        usuario = authenticate(username=usuario, password=contrasena)
        if usuario is not None:
            #send mail token validations
            user = User.objects.get(username=username)
            token_gen = TokenGenerator()
            generate_token = token_gen.generate_token(user)
            obj = TwoFactToken.objects.get(serial=generate_token, user=user)
            msg = 'Successfully authenticated user'
            message = [{'athenticate': {'ip_client': get_ip, 'message': msg}}]
            LogEntry.objects.log_action(user_id=user.pk,
                                        content_type_id=model_user,
                                        object_id=user.pk,
                                        object_repr=str(user.username),
                                        action_flag=AUTHENTICATE,
                                        change_message=message)
            if generate_token:
                msj_mail = 'This is the security token that you must enter before 5 minutes: %s' % (
                    generate_token)
                try:
                    send_mail(
                        'Validate Security',
                        str(msj_mail),
                        '*****@*****.**',
                        [user.email],
                        fail_silently=False,
                    )
                    validate = True
                    msg = 'Message sent succesfully'
                    message = [{
                        'added': {
                            'ip_client': get_ip,
                            'mail_send': msg
                        }
                    }]
                    LogEntry.objects.log_action(user_id=user.pk,
                                                content_type_id=model_token,
                                                object_id=obj.pk,
                                                object_repr=str(obj.serial),
                                                action_flag=ADDITION,
                                                change_message=message)
                    # Time left to validation token expires
                    time = 5 * 60
                    return JsonResponse({
                        'msg': msg,
                        'validate': validate,
                        'time': time
                    })
                except Exception as e:
                    validate = validate
                    msg = 'Error sent mail'
                    message = [{
                        'error': {
                            'ip_client': get_ip,
                            'mail_send': msg + str(e)
                        }
                    }]
                    LogEntry.objects.log_action(user_id=user.pk,
                                                content_type_id=model_token,
                                                object_id=obj.pk,
                                                object_repr=str(obj.serial),
                                                action_flag=ERROR,
                                                change_message=message)
                    return JsonResponse({'msg': msg, 'validate': validate})

            else:
                validate = validate
                msg = 'User error does not exist'
                message = [{'error': {'ip_client': get_ip, 'message': msg}}]
                LogEntry.objects.log_action(user_id=user.pk,
                                            content_type_id=model_token,
                                            object_id=user.pk,
                                            object_repr='None',
                                            action_flag=ERROR,
                                            change_message=message)
                return JsonResponse({'msg': msg, 'validate': validate})

        else:
            user = User.objects.filter(username=form.cleaned_data['usuario'])
            if user:
                user = user.get()
                if not user.is_active:
                    #messages.error(self.request, MENSAJES_LOGIN['CUENTA_INACTIVA'])
                    validate = validate
                    msg = str(MENSAJES_LOGIN['CUENTA_INACTIVA'])
                    message = [{
                        'athenticate': {
                            'ip_client': get_ip,
                            'message': msg
                        }
                    }]
                    LogEntry.objects.log_action(user_id=user.pk,
                                                content_type_id=model_user,
                                                object_id=user.pk,
                                                object_repr=str(user.username),
                                                action_flag=AUTHENTICATE,
                                                change_message=message)
                    return JsonResponse({'msg': msg, 'validate': validate})
                elif usuario is None:
                    validate = validate
                    msg = str(MENSAJES_LOGIN['LOGIN_USUARIO_NO_VALIDO'])
                    message = [{
                        'athenticate': {
                            'ip_client': get_ip,
                            'message': msg
                        }
                    }]
                    user = User.objects.filter(
                        groups__name="Super Admin").first()
                    LogEntry.objects.log_action(user_id=user.pk,
                                                content_type_id=model_user,
                                                object_id=user.pk,
                                                object_repr='None',
                                                action_flag=AUTHENTICATE,
                                                change_message=message)
                    return JsonResponse({'msg': msg, 'validate': validate})

            else:
                #messages.warning(self.request, MENSAJES_LOGIN['LOGIN_USUARIO_NO_VALIDO'])
                validate = validate
                msg = str(MENSAJES_LOGIN['LOGIN_USUARIO_NO_VALIDO'])
                message = [{
                    'athenticate': {
                        'ip_client': get_ip,
                        'message': msg
                    }
                }]
                user = User.objects.filter(groups__name="Super Admin").first()
                LogEntry.objects.log_action(user_id=user.pk,
                                            content_type_id=model_user,
                                            object_id=user.pk,
                                            object_repr='None',
                                            action_flag=AUTHENTICATE,
                                            change_message=message)
                return JsonResponse({'msg': msg, 'validate': validate})

        return super().form_valid(form)

        def form_invalid(self, form):
            print(form.errors)
            return super().form_valid(form)
Esempio n. 6
0
    def form_valid(self, form):
        valuenext = self.request.POST.get('next')
        if valuenext.strip() != 'None':
            redirect_url = valuenext
        else:
            redirect_url = '/inicio'
        usuario = form.cleaned_data['usuario_validate']

        contrasena = form.cleaned_data['contrasena_validate']

        validation_code = form.cleaned_data['serial_validate']

        remember_me = form.cleaned_data['remember_me_validate']

        model_token = ContentType.objects.get_for_model(TwoFactToken).pk
        model_user = ContentType.objects.get_for_model(User).pk

        token_check = TokenGenerator()
        ip_client = IpClient()
        get_ip = ip_client.get_client_ip(self.request)
        validate = False
        try:
            validate_email(usuario)
            try:
                usuario = User.objects.get(email=usuario).username
            except:
                #messages.error(self.request, MENSAJES_LOGIN['CORREO_INVALIDO'] % (usuario))
                pass
        except Exception as e:
            pass
        username = usuario
        try:
            user = User.objects.get(username=username)
        except Exception as e:
            msg = 'User error does not exist'
            user = User.objects.filter(groups__name="Super Admin").first()
            message = [{'athenticate': {'ip_client': get_ip, 'message': msg}}]
            LogEntry.objects.log_action(user_id=user.pk,
                                        content_type_id=model_user,
                                        object_id=user.pk,
                                        object_repr='None',
                                        action_flag=ERROR,
                                        change_message=message)
            return JsonResponse({'msg': msg, 'validate': validate})
        check_token = token_check.check_token(user.id, validation_code)
        if check_token:
            usuario = authenticate(username=usuario, password=contrasena)
            obj = TwoFactToken.objects.get(serial=validation_code, user=user)
            if usuario is not None:
                msg = 'Successfully authenticated user'
                message = [{
                    'athenticate': {
                        'ip_client': get_ip,
                        'message': msg
                    }
                }]
                LogEntry.objects.log_action(user_id=user.pk,
                                            content_type_id=model_user,
                                            object_id=user.pk,
                                            object_repr=str(user.username),
                                            action_flag=AUTHENTICATE,
                                            change_message=message)
                login(self.request, usuario)
                messages.info(
                    self.request, MENSAJES_START['INICIO_SESION'] %
                    (usuario.first_name, usuario.username))
                try:
                    parameter_location = ConfigParameter.objects.get(
                        active=True)
                    parameter_location = parameter_location.geolocation
                except:
                    parameter_location = True
                self.request.session['permisos'] = list(
                    usuario.get_all_permissions())
                self.request.session['location'] = parameter_location
                try:
                    grupos = usuario.groups.all()
                    grupo = []
                    if len(grupos) > 1:
                        for g in grupos:
                            grupo += str(g),
                    else:
                        grupo = str(usuario.groups.get())
                except:
                    grupo = "Does not belong to a group"

                self.request.session['grupos'] = grupo

                msg = 'Success when validating the user'
                validate = True
                message = [{'validate': {'ip_client': get_ip, 'message': msg}}]
                LogEntry.objects.log_action(user_id=user.pk,
                                            content_type_id=model_token,
                                            object_id=obj.pk,
                                            object_repr=str(validation_code),
                                            action_flag=VALIDATE,
                                            change_message=message)
                message = [{'login': {'ip_client': get_ip, 'message': msg}}]
                LogEntry.objects.log_action(user_id=user.pk,
                                            content_type_id=model_user,
                                            object_id=user.pk,
                                            object_repr=str(user.username),
                                            action_flag=LOGIN,
                                            change_message=message)
                return JsonResponse({
                    'msg': msg,
                    'validate': validate,
                    'url_redirect': redirect_url
                })
            else:
                user = User.objects.filter(
                    username=form.cleaned_data['usuario_validate'])
                if user:
                    user = user.get()
                    if not user.is_active:
                        #messages.error(self.request, MENSAJES_LOGIN['CUENTA_INACTIVA'])
                        validate = validate
                        msg = MENSAJES_LOGIN['CUENTA_INACTIVA']
                        message = [{
                            'athenticate': {
                                'ip_client': get_ip,
                                'message': msg
                            }
                        }]
                        LogEntry.objects.log_action(user_id=user.pk,
                                                    content_type_id=model_user,
                                                    object_id=user.pk,
                                                    object_repr=str(
                                                        user.username),
                                                    action_flag=AUTHENTICATE,
                                                    change_message=message)
                        return JsonResponse({'msg': msg, 'validate': validate})
                    elif usuario is None:
                        validate = validate
                        msg = str(MENSAJES_LOGIN['LOGIN_USUARIO_NO_VALIDO'])
                        message = [{
                            'athenticate': {
                                'ip_client': get_ip,
                                'message': msg
                            }
                        }]
                        user = User.objects.filter(
                            groups__name="Super Admin").first()
                        LogEntry.objects.log_action(user_id=user.pk,
                                                    content_type_id=model_user,
                                                    object_id=user.pk,
                                                    object_repr='None',
                                                    action_flag=AUTHENTICATE,
                                                    change_message=message)
                        return JsonResponse({'msg': msg, 'validate': validate})
                else:
                    #messages.warning(self.request, MENSAJES_LOGIN['LOGIN_USUARIO_NO_VALIDO'])
                    validate = validate
                    msg = str(MENSAJES_LOGIN['LOGIN_USUARIO_NO_VALIDO'])
                    message = [{
                        'athenticate': {
                            'ip_client': get_ip,
                            'message': msg
                        }
                    }]
                    user = User.objects.filter(
                        groups__name="Super Admin").first()
                    LogEntry.objects.log_action(user_id=user.pk,
                                                content_type_id=model_user,
                                                object_id=user.pk,
                                                object_repr='None',
                                                action_flag=AUTHENTICATE,
                                                change_message=message)
                    return JsonResponse({'msg': msg, 'validate': validate})
        else:
            msg = 'Token error invalid or expired'
            message = [{'error': {'ip_client': get_ip, 'message': msg}}]
            LogEntry.objects.log_action(user_id=user.pk,
                                        content_type_id=model_token,
                                        object_id='None',
                                        object_repr=str(validation_code),
                                        action_flag=ERROR,
                                        change_message=message)
            return JsonResponse({'msg': msg, 'validate': validate})