Module: SiteSettings::Validations
- Included in:
- TypeSupervisor
- Defined in:
- lib/site_settings/validations.rb
Constant Summary collapse
- PROHIBITED_USER_AGENT_STRINGS =
%w[ apple windows linux ubuntu gecko firefox chrome safari applewebkit webkit mozilla macintosh khtml intel osx os\ x iphone ipad mac ]
Instance Method Summary collapse
- #validate_backup_location(new_val) ⇒ Object
- #validate_category_ids(category_ids) ⇒ Object
- #validate_cors_origins(new_val) ⇒ Object
- #validate_default_categories(category_ids, default_categories_selected) ⇒ Object
- #validate_default_categories_muted(new_val) ⇒ Object
- #validate_default_categories_normal(new_val) ⇒ Object
- #validate_default_categories_tracking(new_val) ⇒ Object
- #validate_default_categories_watching(new_val) ⇒ Object
- #validate_default_categories_watching_first_post(new_val) ⇒ Object
- #validate_default_tags(tag_names, default_tags_selected) ⇒ Object
- #validate_default_tags_muted(new_val) ⇒ Object
- #validate_default_tags_tracking(new_val) ⇒ Object
- #validate_default_tags_watching(new_val) ⇒ Object
- #validate_default_tags_watching_first_post(new_val) ⇒ Object
- #validate_enable_local_logins(new_val) ⇒ Object
- #validate_enable_page_publishing(new_val) ⇒ Object
- #validate_enable_s3_uploads(new_val) ⇒ Object
- #validate_enforce_second_factor(new_val) ⇒ Object
- #validate_error(key, opts = {}) ⇒ Object
- #validate_s3_backup_bucket(new_val) ⇒ Object
- #validate_s3_upload_bucket(new_val) ⇒ Object
- #validate_s3_use_acls(new_val) ⇒ Object
- #validate_secure_uploads(new_val) ⇒ Object
- #validate_share_quote_buttons(new_val) ⇒ Object
- #validate_slow_down_crawler_user_agents(new_val) ⇒ Object
- #validate_strip_image_metadata(new_val) ⇒ Object
- #validate_twitter_summary_large_image(new_val) ⇒ Object
Instance Method Details
#validate_backup_location(new_val) ⇒ Object
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/site_settings/validations.rb', line 190 def validate_backup_location(new_val) return unless new_val == BackupLocationSiteSetting::S3 if SiteSetting.s3_backup_bucket.blank? validate_error(:s3_backup_requires_s3_settings, setting_name: "s3_backup_bucket") end unless SiteSetting.s3_use_iam_profile if SiteSetting.s3_access_key_id.blank? validate_error(:s3_backup_requires_s3_settings, setting_name: "s3_access_key_id") end if SiteSetting.s3_secret_access_key.blank? validate_error(:s3_backup_requires_s3_settings, setting_name: "s3_secret_access_key") end end end |
#validate_category_ids(category_ids) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/site_settings/validations.rb', line 33 def validate_category_ids(category_ids) category_ids = category_ids.split("|").map(&:to_i).to_set if Category.where(id: category_ids).count != category_ids.size validate_error :invalid_category_id end category_ids end |
#validate_cors_origins(new_val) ⇒ Object
233 234 235 236 237 |
# File 'lib/site_settings/validations.rb', line 233 def validate_cors_origins(new_val) return if new_val.blank? return if new_val.split("|").none?(%r{/\z}) validate_error :cors_origins_should_not_have_trailing_slash end |
#validate_default_categories(category_ids, default_categories_selected) ⇒ Object
41 42 43 44 45 |
# File 'lib/site_settings/validations.rb', line 41 def validate_default_categories(category_ids, default_categories_selected) if (category_ids & default_categories_selected).size > 0 validate_error :default_categories_already_selected end end |
#validate_default_categories_muted(new_val) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/site_settings/validations.rb', line 73 def validate_default_categories_muted(new_val) category_ids = validate_category_ids(new_val) default_categories_selected = [ SiteSetting.default_categories_watching.split("|"), SiteSetting.default_categories_tracking.split("|"), SiteSetting.default_categories_watching_first_post.split("|"), SiteSetting.default_categories_normal.split("|"), ].flatten.map(&:to_i).to_set validate_default_categories(category_ids, default_categories_selected) end |
#validate_default_categories_normal(new_val) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/site_settings/validations.rb', line 99 def validate_default_categories_normal(new_val) category_ids = validate_category_ids(new_val) default_categories_selected = [ SiteSetting.default_categories_watching.split("|"), SiteSetting.default_categories_tracking.split("|"), SiteSetting.default_categories_muted.split("|"), SiteSetting.default_categories_watching_first_post.split("|"), ].flatten.map(&:to_i).to_set validate_default_categories(category_ids, default_categories_selected) end |
#validate_default_categories_tracking(new_val) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/site_settings/validations.rb', line 60 def validate_default_categories_tracking(new_val) category_ids = validate_category_ids(new_val) default_categories_selected = [ SiteSetting.default_categories_watching.split("|"), SiteSetting.default_categories_muted.split("|"), SiteSetting.default_categories_watching_first_post.split("|"), SiteSetting.default_categories_normal.split("|"), ].flatten.map(&:to_i).to_set validate_default_categories(category_ids, default_categories_selected) end |
#validate_default_categories_watching(new_val) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/site_settings/validations.rb', line 47 def validate_default_categories_watching(new_val) category_ids = validate_category_ids(new_val) default_categories_selected = [ SiteSetting.default_categories_tracking.split("|"), SiteSetting.default_categories_muted.split("|"), SiteSetting.default_categories_watching_first_post.split("|"), SiteSetting.default_categories_normal.split("|"), ].flatten.map(&:to_i).to_set validate_default_categories(category_ids, default_categories_selected) end |
#validate_default_categories_watching_first_post(new_val) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/site_settings/validations.rb', line 86 def validate_default_categories_watching_first_post(new_val) category_ids = validate_category_ids(new_val) default_categories_selected = [ SiteSetting.default_categories_watching.split("|"), SiteSetting.default_categories_tracking.split("|"), SiteSetting.default_categories_muted.split("|"), SiteSetting.default_categories_normal.split("|"), ].flatten.map(&:to_i).to_set validate_default_categories(category_ids, default_categories_selected) end |
#validate_default_tags(tag_names, default_tags_selected) ⇒ Object
112 113 114 |
# File 'lib/site_settings/validations.rb', line 112 def (tag_names, ) validate_error :default_tags_already_selected if (tag_names & ).size > 0 end |
#validate_default_tags_muted(new_val) ⇒ Object
140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/site_settings/validations.rb', line 140 def (new_val) tag_names = new_val.split("|").to_set = [ SiteSetting..split("|"), SiteSetting..split("|"), SiteSetting..split("|"), ].flatten.to_set (tag_names, ) end |
#validate_default_tags_tracking(new_val) ⇒ Object
128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/site_settings/validations.rb', line 128 def (new_val) tag_names = new_val.split("|").to_set = [ SiteSetting..split("|"), SiteSetting..split("|"), SiteSetting..split("|"), ].flatten.to_set (tag_names, ) end |
#validate_default_tags_watching(new_val) ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/site_settings/validations.rb', line 116 def (new_val) tag_names = new_val.split("|").to_set = [ SiteSetting..split("|"), SiteSetting..split("|"), SiteSetting..split("|"), ].flatten.to_set (tag_names, ) end |
#validate_default_tags_watching_first_post(new_val) ⇒ Object
152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/site_settings/validations.rb', line 152 def (new_val) tag_names = new_val.split("|").to_set = [ SiteSetting..split("|"), SiteSetting..split("|"), SiteSetting..split("|"), ].flatten.to_set (tag_names, ) end |
#validate_enable_local_logins(new_val) ⇒ Object
227 228 229 230 231 |
# File 'lib/site_settings/validations.rb', line 227 def validate_enable_local_logins(new_val) return if new_val == "t" return if SiteSetting.enforce_second_factor == "no" validate_error :local_login_cannot_be_disabled_if_second_factor_enforced end |
#validate_enable_page_publishing(new_val) ⇒ Object
180 181 182 |
# File 'lib/site_settings/validations.rb', line 180 def validate_enable_page_publishing(new_val) validate_error :page_publishing_requirements if new_val == "t" && SiteSetting.secure_uploads? end |
#validate_enable_s3_uploads(new_val) ⇒ Object
164 165 166 167 168 |
# File 'lib/site_settings/validations.rb', line 164 def validate_enable_s3_uploads(new_val) return if new_val == "f" validate_error :cannot_enable_s3_uploads_when_s3_enabled_globally if GlobalSetting.use_s3? validate_error :s3_upload_bucket_is_required if SiteSetting.s3_upload_bucket.blank? end |
#validate_enforce_second_factor(new_val) ⇒ Object
218 219 220 221 222 223 224 225 |
# File 'lib/site_settings/validations.rb', line 218 def validate_enforce_second_factor(new_val) if new_val != "no" && SiteSetting.enable_discourse_connect? return validate_error :second_factor_cannot_be_enforced_with_discourse_connect_enabled end return if SiteSetting.enable_local_logins return if new_val == "no" validate_error :second_factor_cannot_be_enforced_with_disabled_local_login end |
#validate_error(key, opts = {}) ⇒ Object
29 30 31 |
# File 'lib/site_settings/validations.rb', line 29 def validate_error(key, opts = {}) raise Discourse::InvalidParameters.new(I18n.t("errors.site_settings.#{key}", opts)) end |
#validate_s3_backup_bucket(new_val) ⇒ Object
214 215 216 |
# File 'lib/site_settings/validations.rb', line 214 def validate_s3_backup_bucket(new_val) validate_bucket_setting("s3_backup_bucket", SiteSetting.s3_upload_bucket, new_val) end |
#validate_s3_upload_bucket(new_val) ⇒ Object
206 207 208 209 210 211 212 |
# File 'lib/site_settings/validations.rb', line 206 def validate_s3_upload_bucket(new_val) validate_bucket_setting("s3_upload_bucket", new_val, SiteSetting.s3_backup_bucket) if new_val.blank? && SiteSetting.enable_s3_uploads? validate_error(:s3_upload_bucket_is_required, setting_name: "s3_upload_bucket") end end |
#validate_s3_use_acls(new_val) ⇒ Object
176 177 178 |
# File 'lib/site_settings/validations.rb', line 176 def validate_s3_use_acls(new_val) validate_error :s3_use_acls_requirements if new_val == "f" && SiteSetting.secure_uploads end |
#validate_secure_uploads(new_val) ⇒ Object
170 171 172 173 174 |
# File 'lib/site_settings/validations.rb', line 170 def validate_secure_uploads(new_val) if new_val == "t" && (!SiteSetting.Upload.enable_s3_uploads || !SiteSetting.s3_use_acls) validate_error :secure_uploads_requirements end end |
#validate_share_quote_buttons(new_val) ⇒ Object
184 185 186 187 188 |
# File 'lib/site_settings/validations.rb', line 184 def (new_val) if new_val.include?("facebook") && SiteSetting.facebook_app_id.blank? validate_error :share_quote_facebook_requirements end end |
#validate_slow_down_crawler_user_agents(new_val) ⇒ Object
239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 |
# File 'lib/site_settings/validations.rb', line 239 def validate_slow_down_crawler_user_agents(new_val) return if new_val.blank? new_val .downcase .split("|") .each do |crawler| if crawler.size < 3 validate_error(:slow_down_crawler_user_agent_must_be_at_least_3_characters) end if PROHIBITED_USER_AGENT_STRINGS.any? { |c| c.include?(crawler) } validate_error( :slow_down_crawler_user_agent_cannot_be_popular_browsers, values: PROHIBITED_USER_AGENT_STRINGS.join(I18n.t("word_connector.comma")), ) end end end |
#validate_strip_image_metadata(new_val) ⇒ Object
258 259 260 261 262 |
# File 'lib/site_settings/validations.rb', line 258 def (new_val) return if new_val == "t" return if SiteSetting.composer_media_optimization_image_enabled == false validate_error :strip_image_metadata_cannot_be_disabled_if_composer_media_optimization_image_enabled end |
#validate_twitter_summary_large_image(new_val) ⇒ Object
264 265 266 267 268 |
# File 'lib/site_settings/validations.rb', line 264 def validate_twitter_summary_large_image(new_val) return if new_val.blank? return if !Upload.exists?(id: new_val, extension: "svg") validate_error :twitter_summary_large_image_no_svg end |