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?
AI-generated summary
The discussion explores methods to require existing users to accept a new Terms of Service (ToS) in Discourse. markschmucker seeks a solution for thousands of users, noting that Discourse Policy doesnât work with the built-in ToS. HAWK suggests creating a new topic with the ToS and using Discourse Policy to enforce acceptance. RGJ proposes restricting access to all categories to the âaccepted-the-tosâ group, which users join after accepting the policy. rishabh adds that category previews can help users see content before acceptance. markschmucker confirms that a custom topic must be used since the built-in ToS doesnât work with Policy. sam suggests using a required custom user field to prompt all users to accept the ToS, a method that applies to both new and existing users.
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.

