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?
One option would be to create a new topic with the terms that you want them to accept and use Discourse Policy to enforce acceptance.
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.
Just make all categories accessible to the accepted-the-tos group only?
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.)
On that note, you can hide categories but offer a preview using Category Previews.
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.
To require acceptance of a terms-of-service, use a required custom user field.
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.