Esempio n. 1
0
        SolidityModifier CreateAddressGuard()
        {
            //Initialize the modifier using the generated name
            SolidityModifier addressGuard = new SolidityModifier(ConversionTemplates.AddressGuardModifierName(GetElementCallName()));

            addressGuard.AddParameters(processConverter.GetIdentifiersAsParameters());
            //Address is force assigned
            if (userTaskElement.Assignee.Address != null)
            {
                SolidityStatement requireStatement = new SolidityStatement($"require(msg.sender=={GetAssigneeAddress()})");
                addressGuard.AddToBody(requireStatement);
            }
            //Address is not force assigned, it will be assigned to the first caller of the first task method containing this assignee
            else if (userTaskElement.Assignee.Name != null)
            {
                var addressPosition = $"{ConverterConfig.ADDRESS_MAPPING_VAR_NAME}[\"{userTaskElement.Assignee.Name}\"]";

                var ifElseBlock = new SolidityIfElse();
                //Assigns the address, if address has not been been yet assigned to the assignee
                ifElseBlock.AddConditionBlock($"{addressPosition} == address(0x0)", new SolidityStatement($"{addressPosition} = msg.sender"));
                //Checks whether the sender has the required address
                SolidityStatement requireStatement = new SolidityStatement($"require(msg.sender=={addressPosition})");
                addressGuard.AddToBody(ifElseBlock);
                addressGuard.AddToBody(requireStatement);
            }
            return(addressGuard);
        }
Esempio n. 2
0
        SolidityModifier CreateStateGuard()
        {
            SolidityModifier  stateGuard       = new SolidityModifier("is" + GetTaskName() + "State");
            SolidityStatement requireStatement = new SolidityStatement(
                "require(" + ProcessConverter.IS_STATE_ACTIVE_FUNCTION_NAME + "(\"" + GetTaskName() + "\")==true)");

            stateGuard.AddToBody(requireStatement);
            return(stateGuard);
        }
        public void EmptyModifierTest()
        {
            SolidityModifier modifier = new SolidityModifier("isEnabled");

            var actual   = modifier.ToString();
            var expected = "modifier isEnabled{\n" +
                           "\t_;\n}\n";

            Assert.Equal(expected, actual);
        }
        public void ModifierWithBodyTest()
        {
            SolidityModifier modifier = new SolidityModifier("isEnabled");

            modifier.AddToBody(new SolidityStatement("a = b"));

            var actual   = modifier.ToString();
            var expected = "modifier isEnabled{\n" +
                           "\ta = b;\n" +
                           "\t_;\n}\n";

            Assert.Equal(expected, actual);
        }
Esempio n. 5
0
        public override void ConvertElementLogic()
        {
            /*
             * if (IsAddressGuardRequired())
             *  addressGuard = CreateAddressGuard();
             */
            stateGuard   = CreateStateGuard();
            mainFunction = CreateElementMainFunction();

            if (userTaskElement.InstanceType != InstanceType.Single)
            {
                multiInstanceCounter = CreateMultiInstanceCounterDefinition();
            }
        }
Esempio n. 6
0
        SolidityModifier CreateStateGuard()
        {
            SolidityModifier stateGuard = new SolidityModifier(ConversionTemplates.StateGuardModifierName(GetElementCallName()));

            stateGuard.AddParameters(processConverter.GetIdentifiersAsParameters());
            var activeStateFunctionName = ConversionTemplates.ActiveStatesFunctionName(processConverter.Id);
            var callParameters          = processConverter.GetIdentifierNames();

            if (callParameters.Length > 0)
            {
                callParameters += ",";
            }
            callParameters += $"\"{GetElementCallName()}\"";
            SolidityStatement requireStatement = new SolidityStatement($"require({activeStateFunctionName}({callParameters}) == true)");

            stateGuard.AddToBody(requireStatement);
            return(stateGuard);
        }
Esempio n. 7
0
        SolidityModifier CreateAddressGuard()
        {
            SolidityModifier addressGuard = new SolidityModifier("is" + GetTaskName() + "Authorized");

            if (userTask.Assignee.Address != null)
            {
                SolidityStatement requireStatement = new SolidityStatement("require(msg.sender==" + GetAssigneeAddress() + ")");
                addressGuard.AddToBody(requireStatement);
            }
            else if (userTask.Assignee.Name != null)
            {
                var addressPosition = Helpers.ADDRESS_MAPPING_VAR_NAME + "[\"" + userTask.Assignee.Name + "\"]";
                var ifElseBlock     = new SolidityIfElse();
                ifElseBlock.AddConditionBlock(addressPosition + " == address(0x0)", new SolidityStatement(addressPosition + " = msg.sender"));
                SolidityStatement requireStatement = new SolidityStatement("require(msg.sender==" + addressPosition + ")");
                addressGuard.AddToBody(ifElseBlock);
                addressGuard.AddToBody(requireStatement);
            }
            return(addressGuard);
        }