There have been discussions of how to make new users accept terms of service as part of the signup process (links below). But what if you have many existing users and need them to explicitly accept the new ToS?
I considered using Discourse Policy- in fact @RGJ wrote a plugin for us long ago that adds members to a group based on accepting a policy. We require that users accept the policy in order to gain access to a premium group and category. But now I need to make it so they can’t see anything until they have accepted the new ToS. I don’t see how to use Discourse Policy to do that. We have thousands of users.
Yes, I guess that would work. So in every category’s permissions, replace “everyone” with “accepted-the-tos” group. (Except for the ToS category or some way to find it.)
Just to close the loop for any future visitors, using Policy with Discourse’s built-in ToS doesn’t work. So you would need to create a new topic like “My Other ToS” and use Policy on that.
When defining a user field, you can select “Field Requirement” as “For all users”. When you do so, all new and existing users will be prompted to fill the custom field.