Example #1
0
    def updateFields(self, *args, **kwargs):
        """
        Bar code image is applied here.
        """
        if bool(api.user.is_anonymous()) is False:

            # Adding a proper description (with bar code image)
            barcode_field = self.fields.get('qr_code')
            if barcode_field:
                barcode_field.field.description = _(get_token_description())

            return super(SetupForm, self).updateFields(*args, **kwargs)
    def updateFields(self, *args, **kwargs):
        """
        Here happens the following:

        - Signed user data is validated. If valid, the user is fetched.
        - Token (`signature` param) is matched to the one obtained from user records. If matched, the
          bar-code image is reset (security token is reset and saved in the users' profile).
        """
        # Adding a proper description (with bar code image)
        barcode_field = self.fields.get('qr_code')

        username = self.request.get('auth_user', '')
        token = self.request.get('signature', '')
        user = api.user.get(username=username)

        # If valid user
        if user:
            # Getting the users' bar-code reset token saved in his profile.
            bar_code_reset_token = user.getProperty('bar_code_reset_token')

            # Validate the user data
            user_data_validation_result = validate_user_data(request=self.request, user=user)

            # If all goes well, regenerate the token (overwrite_secret=True) and show the bar code image.
            if barcode_field:
                if user_data_validation_result.result and bar_code_reset_token == token:
                    barcode_field.field.description = _(get_token_description(user=user, overwrite_secret=False))
                else:
                    if not user_data_validation_result.result:
                        IStatusMessage(self.request).addStatusMessage(
                            ' '.join(user_data_validation_result.reason),
                            'error'
                            )
                    else:
                        IStatusMessage(self.request).addStatusMessage(
                            _("Invalid bar-code reset token"),
                            'error'
                            )

        return super(ResetBarCodeForm, self).updateFields(*args, **kwargs)
    def updateFields(self, *args, **kwargs):
        """
        Here happens the following:

        - Signed user data is validated. If valid, the user is fetched.
        - Token (`signature` param) is matched to the one obtained from user records. If matched, the
          bar-code image is reset (security token is reset and saved in the users' profile).
        """
        # Adding a proper description (with bar code image)
        barcode_field = self.fields.get('qr_code')

        username = self.request.get('auth_user', '')
        token = self.request.get('signature', '')
        user = api.user.get(username=username)

        # If valid user
        if user:
            # Getting the users' bar-code reset token saved in his profile.
            bar_code_reset_token = user.getProperty('bar_code_reset_token')

            # Validate the user data
            user_data_validation_result = validate_user_data(
                request=self.request, user=user)

            # If all goes well, regenerate the token (overwrite_secret=True) and show the bar code image.
            if barcode_field:
                if user_data_validation_result.result and bar_code_reset_token == token:
                    barcode_field.field.description = _(
                        get_token_description(user=user,
                                              overwrite_secret=False))
                else:
                    if not user_data_validation_result.result:
                        IStatusMessage(self.request).addStatusMessage(
                            ' '.join(user_data_validation_result.reason),
                            'error')
                    else:
                        IStatusMessage(self.request).addStatusMessage(
                            _("Invalid bar-code reset token"), 'error')

        return super(ResetBarCodeForm, self).updateFields(*args, **kwargs)