def apply_confirm(header, payload, state):

    confirm_payload = role_transaction_pb2.ConfirmAddRoleAdmin()
    confirm_payload.ParseFromString(payload.content)

    role_admin_address = addresser.make_role_admins_address(
        role_id=confirm_payload.role_id, user_id=confirm_payload.user_id
    )

    txn_signer_admin_address = addresser.make_role_admins_address(
        role_id=confirm_payload.role_id, user_id=header.signer_public_key
    )

    state_entries = role_validator.get_state_entries(
        header=header,
        confirm=confirm_payload,
        txn_signer_rel_address=txn_signer_admin_address,
        state=state,
    )

    state_change.confirm_role_action(
        state_entries=state_entries,
        header=header,
        confirm=confirm_payload,
        role_rel_address=role_admin_address,
        state=state,
    )
def hierarchical_decide(header, payload, state, isApproval):
    confirm = role_transaction_pb2.ConfirmAddRoleAdmin()
    confirm.ParseFromString(payload.content)

    txn_signer_admin_address = addresser.role.admin.address(
        confirm.role_id, confirm.on_behalf_id)

    role_operation.hierarchical_decide(header, confirm, state,
                                       txn_signer_admin_address, isApproval)
Exemple #3
0
def confirm_add_role_admins(txn_key, batch_key, proposal_id, role_id, user_id,
                            reason):
    """Creates a BatchList with a ConfirmAddRoleAdmin transaction in it.

    Args:
        txn_key (Key): The txn signer key pair.
        batch_key (Key): The batch signer key pair.
        proposal_id (str): The proposal's identifier.
        role_id (str): The role's identifier.
        user_id (str): The user's signer public key.
        reason (str): The client supplied reason to confirm.

    Returns:
        tuple
            BatchList, batch header_signature tuple
    """

    confirm_add_payload = role_transaction_pb2.ConfirmAddRoleAdmin(
        proposal_id=proposal_id,
        role_id=role_id,
        user_id=user_id,
        reason=reason)

    inputs = [
        addresser.role.admin.address(role_id, txn_key.public_key),
        addresser.user.address(txn_key.public_key),
    ]
    inputs.append(addresser.proposal.address(role_id, user_id))

    outputs = [
        addresser.proposal.address(role_id, user_id),
        addresser.role.admin.address(role_id, user_id),
    ]

    rbac_payload = rbac_payload_pb2.RBACPayload(
        content=confirm_add_payload.SerializeToString(),
        message_type=rbac_payload_pb2.RBACPayload.CONFIRM_ADD_ROLE_ADMIN,
        inputs=inputs,
        outputs=outputs,
    )

    return make_header_and_batch(rbac_payload, inputs, outputs, txn_key,
                                 batch_key)