I have a rules that fire once a user submits an application through a multi step cck form.

The action should convert the submitted node to another content type using node convert.
The reason for the node convert is that I want to use a multi step form for usability on the user application side - I don't want the admin to have to bother with multi step on the node edit forms and there are also some other features I have set up on the destination content type which are unecessary in the application process.

Anyway - I don't want the user to have permissions to execute the node convert action as this adds/exposes unwanted tabs and functionality on the node edit form used in the application process. I do however want my rules/action to run the node convert action.
It seems this isn't possible as when the application is submitted and the rule is run (as anonymous) i receive the error:

You don't have permission to use this conversion template

I have tried converting the anonymous contents author to admin and tried loading the admin user in the rule prior to using the node convert , but neither of these work.?
How can I have my rules execute these actions? Surely it must be possible for 'the system' to execute actions as admin - rather that the current user role.

Comments

itangalo’s picture

Component: Rules Core » Rules Engine
Status: Active » Closed (works as designed)

This is an effect of how the Node Convert module works – my guess is that it always checks the acting user to verify that he/she has permissions to run the conversion. So sorry, there is nothing the Rules module can do about this (unless you want to temporarily change the active user, which seems really dangerous).

I would recommend posting an issue in the Node Convert issue queue, requesting the action to have a checkbox "verify that the acting user has permissions to convert the node".

gooddesignusa’s picture

I've had a similar permission issue with a ruleset I've made.
The ruleset checks a date field, if its filled out it sets up a rules schedule to add or remove a term from the node based on the date cck value. When cron runs the scheduled rule, the terms would not be changed. Apparently when cron is triggered by wget http://example.com/cron.php the user is anonymous and the rule runs as that user. The only way I could get it to work is by writing a script to login to the site, run cron and log out.