[development] How to add user role during registration with custom form

Martin Afanasjew martin-lists at afanasjew.de
Fri Feb 26 22:22:40 UTC 2010

There's probably a cleaner approach to what you try to accomplish.

However, Drupal 5 and 6 both allow not only for uids as parameters but
also names, e.g.

   user_load(array('name' => $name))

If you are using Drupal 7 there's a similar user_load_by_name.


On 2010-02-26 22:49, Steve Edwards wrote:
> I took over a site that uses a custom registration form that directly
> calls user_register_submit directly, and I need to have a user role
> added to this user when this form is submitted.  However, I can't add
> the value to $form_state['values']['roles'] because the function
> errors out if there is a roles array because it is seen as a
> 'malicious attempt to alter protected user fields.'  Since that
> function then calls user_save, it seems that once the user is saved,
> I need to 1) load the user I just created, 2) add the role to the
> object, and 3) save it again.  However, in order to call user_load, I
> need the uid, which isn't returned from user_register_submit.  The
> only logical thing I can think to do is query the users table with
> the user name I just created (entered as part of the form), get the
> rid, and then call user_load and do my thing.
> Is there a better (and easier) way to do this that I'm missing, or am
> I on the right track?
> Thanks.
> Steve

More information about the development mailing list