From bc19c083cef6f66d28528d79548cf692fa8a2ca6 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Mon, 2 May 2022 17:41:34 +0200
Subject: [PATCH] Add ability to set approval-based registration through
 tootctl (#18248)

Fixes #18235

Add `tootctl settings registrations approved` with
optional `--require-reason` switch.
---
 lib/mastodon/settings_cli.rb | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/lib/mastodon/settings_cli.rb b/lib/mastodon/settings_cli.rb
index 061650a80b..488c655dee 100644
--- a/lib/mastodon/settings_cli.rb
+++ b/lib/mastodon/settings_cli.rb
@@ -16,6 +16,20 @@ module Mastodon
       say('OK', :green)
     end
 
+    desc 'approved', 'Open approval-based registrations'
+    option :require_reason, type: :boolean, aliases: [:require_invite_text]
+    long_desc <<~LONG_DESC
+      Set registrations to require review from staff.
+
+      With --require-reason, require users to enter a reason when registering,
+      otherwise this field is optional.
+    LONG_DESC
+    def approved
+      Setting.registrations_mode = 'approved'
+      Setting.require_invite_text = options[:require_reason] unless options[:require_reason].nil?
+      say('OK', :green)
+    end
+
     desc 'close', 'Close registrations'
     def close
       Setting.registrations_mode = 'none'