for the case your plugin gets activated after user-creations you'd have to use the hook action:plugin.activate (take care to compare the id you'll get with your plugins id since this fires for each plugin).
The following is the way I'd go within, maybe there is a more simple (or better performance) way:
Get somehow all user-ids (personally I don't know how, maybe this would help) and use the function setUserField of the user-module to set each users field-value.
I am wanting to add some fields to the registration page, so I thought I'd write a plugin for it.
It looks like the process would be:
Add a 'filter:register.build' hook function to insert the html for the extra form inputs.
Add a 'filter:user.custom_fields' function to insert the key/value to the userData object.
I looked at the spam-be-gone plugin to get an understanding of how to go about it, but my question is: Is it possible to place my added field(s) at the top of the form -- or anywhere else -- rather than the bottom?
I can also do this by adding my additional html into the register.tpl file and then adding the key/value to the userData object in /src/user/create.js, but I'd rather do it via a plugin as it seems cleaner. I don't need the data to appear on the site (i.e. the user's profile) so just these two things work fine.
The problem is I believe I'd have to do a 'git pull --rebase' each time I wanted to get updates for nodebb which could break things over time. Seems hacky. Plus, it is more maintainable to keep my modifications modular.
So, is there a better way? What's the best way to go about doing something like this? I'm just assuming that doing it via a plugin would be ideal, but if there are better options that are clean, then please let me know.
Lastly, if I wanted to have a function run a check on this info for duplicates during the registration (exactly like the one for username) can you steer me in the right direction on how I'd go about it?