Make default user services configurable by admin
This commit is contained in:
		
							parent
							
								
									5addd25186
								
							
						
					
					
						commit
						fc2bec6246
					
				| @ -9,4 +9,12 @@ class Admin::Settings::RegistrationsController < Admin::SettingsController | ||||
|       success: "Settings saved" | ||||
|     } | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|     def setting_params | ||||
|       params.require(:setting).permit([ | ||||
|         :reserved_usernames, default_services: [] | ||||
|       ]) | ||||
|     end | ||||
| end | ||||
|  | ||||
| @ -9,11 +9,12 @@ class Admin::SettingsController < Admin::BaseController | ||||
|     changed_keys = [] | ||||
| 
 | ||||
|     setting_params.keys.each do |key| | ||||
|       next if setting_params[key].nil? || | ||||
|               (Setting.send(key).to_s == setting_params[key].strip) | ||||
|       next if clean_param(key).nil? || | ||||
|         (Setting.send(key).to_s == clean_param(key)) | ||||
| 
 | ||||
|       changed_keys.push(key) | ||||
|       setting = Setting.new(var: key) | ||||
|       setting.value = setting_params[key].strip | ||||
|       setting.value = clean_param(key) | ||||
|       unless setting.valid? | ||||
|         @errors.merge!(setting.errors) | ||||
|       end | ||||
| @ -24,7 +25,8 @@ class Admin::SettingsController < Admin::BaseController | ||||
|     end | ||||
| 
 | ||||
|     changed_keys.each do |key| | ||||
|       Setting.send("#{key}=", setting_params[key].strip) | ||||
| 
 | ||||
|       Setting.send("#{key}=", clean_param(key)) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
| @ -37,4 +39,12 @@ class Admin::SettingsController < Admin::BaseController | ||||
|     def setting_params | ||||
|       params.require(:setting).permit(Setting.editable_keys.map(&:to_sym)) | ||||
|     end | ||||
| 
 | ||||
|     def clean_param(key) | ||||
|       if Setting.get_field(key)[:type] == :string | ||||
|         setting_params[key].strip! | ||||
|       else | ||||
|         setting_params[key] | ||||
|       end | ||||
|     end | ||||
| end | ||||
|  | ||||
| @ -9,18 +9,35 @@ | ||||
|         <%= render partial: "admin/settings/errors", locals: { errors: @errors } %> | ||||
|       <% end %> | ||||
| 
 | ||||
|       <label class="block"> | ||||
|         <p class="font-bold mb-1">Reserved usernames</p> | ||||
|         <p class="text-gray-500"> | ||||
|           These usernames cannot be registered as accounts: | ||||
|         </p> | ||||
|         <%= f.text_area :reserved_usernames, | ||||
|           value: Setting.reserved_usernames.join("\n"), | ||||
|           class: "h-44 mb-2" %> | ||||
|         <p class="text-sm text-gray-500"> | ||||
|           One username per line | ||||
|         </p> | ||||
|       </label> | ||||
|       <ul role="list"> | ||||
|         <%= render FormElements::FieldsetComponent.new( | ||||
|               title: "Reserved usernames", | ||||
|               description: "These usernames cannot be registered as accounts." | ||||
|             ) do %> | ||||
|           <%= f.text_area :reserved_usernames, | ||||
|             value: Setting.reserved_usernames.join("\n"), | ||||
|             class: "h-44 w-60" %> | ||||
|           <p class="text-sm text-gray-500"> | ||||
|             One username per line | ||||
|           </p> | ||||
|         <% end %> | ||||
|         <li> | ||||
|           <p class="font-bold mb-1">Default services</p> | ||||
|           <p class="text-gray-500"> | ||||
|             These services are enabled for new users by default after signup. | ||||
|           </p> | ||||
|           <div class="flex flex-wrap gap-x-6 gap-y-2"> | ||||
|             <% Setting.available_services.each do |option| %> | ||||
|               <div class="md:inline-block"> | ||||
|                 <%= f.check_box :default_services, | ||||
|                   { multiple: true, checked: Setting.default_services.include?(option) }, | ||||
|                   option, nil %> | ||||
|                 <%= f.label "default_services_#{option.parameterize}", service_human_name(option) %> | ||||
|               </div> | ||||
|             <% end %> | ||||
|           </div> | ||||
|         </li> | ||||
|       </ul> | ||||
|     </section> | ||||
| 
 | ||||
|     <section> | ||||
|  | ||||
| @ -8,14 +8,16 @@ RSpec.describe Setting, type: :model do | ||||
|       Setting.ejabberd_enabled = true | ||||
|       Setting.email_enabled = false | ||||
|       Setting.gitea_enabled = false | ||||
|       Setting.lndhub_enabled = true | ||||
|       Setting.mastodon_enabled = true | ||||
|       Setting.mediawiki_enabled = false | ||||
|       Setting.nostr_enabled = false | ||||
|       Setting.remotestorage_enabled = true | ||||
|     end | ||||
| 
 | ||||
|     it "contains all enabled services" do | ||||
|       expect(Setting.available_services).to eq(%w[ | ||||
|         discourse ejabberd mastodon remotestorage | ||||
|         discourse ejabberd lndhub mastodon remotestorage | ||||
|       ]) | ||||
|     end | ||||
|   end | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user