@@ -183,7 +183,7 @@ private function contextualVariables()
183183 'xml_header ' => '<?xml version="1.0" encoding="utf-8" ?> ' , // @TODO remove and document new best practice
184184 'csrf_token ' => csrf_token (),
185185 'csrf_field ' => csrf_field (),
186- 'config ' => config ()-> all (),
186+ 'config ' => static :: config (),
187187 'response_code ' => 200 ,
188188
189189 // Auth
@@ -247,4 +247,141 @@ public function clearSections()
247247
248248 return $ this ;
249249 }
250+
251+ public static function config (): array
252+ {
253+ $ defaults = [
254+ 'app.name ' ,
255+ 'app.env ' ,
256+ 'app.debug ' ,
257+ 'app.url ' ,
258+ 'app.asset_url ' ,
259+ 'app.locale ' ,
260+ 'app.fallback_locale ' ,
261+ 'app.timezone ' ,
262+ 'auth.defaults ' ,
263+ 'auth.guards ' ,
264+ 'auth.passwords ' ,
265+ 'broadcasting.default ' ,
266+ 'cache.default ' ,
267+ 'filesystems.default ' ,
268+ 'mail.default ' ,
269+ 'mail.from ' ,
270+ 'queue.default ' ,
271+ 'session.lifetime ' ,
272+ 'session.expire_on_close ' ,
273+ 'session.driver ' ,
274+ 'statamic.assets.image_manipulation ' ,
275+ 'statamic.assets.auto_crop ' ,
276+ 'statamic.assets.thumbnails ' ,
277+ 'statamic.assets.video_thumbnails ' ,
278+ 'statamic.assets.google_docs_viewer ' ,
279+ 'statamic.assets.cache_meta ' ,
280+ 'statamic.assets.focal_point_editor ' ,
281+ 'statamic.assets.lowercase ' ,
282+ 'statamic.assets.svg_sanitization_on_upload ' ,
283+ 'statamic.assets.ffmpeg ' ,
284+ 'statamic.assets.set_preview_images ' ,
285+ 'statamic.autosave ' ,
286+ 'statamic.cp ' ,
287+ 'statamic.editions ' ,
288+ 'statamic.forms.email_view_folder ' ,
289+ 'statamic.forms.send_email_job ' ,
290+ 'statamic.forms.exporters ' ,
291+ 'statamic.git.enabled ' ,
292+ 'statamic.git.automatic ' ,
293+ 'statamic.git.queue_connection ' ,
294+ 'statamic.git.dispatch_delay ' ,
295+ 'statamic.git.use_authenticated ' ,
296+ 'statamic.git.user ' ,
297+ 'statamic.git.binary ' ,
298+ 'statamic.git.commands ' ,
299+ 'statamic.git.push ' ,
300+ 'statamic.git.ignored_events ' ,
301+ 'statamic.git.locale ' ,
302+ 'statamic.graphql ' ,
303+ 'statamic.live_preview ' ,
304+ 'statamic.markdown ' ,
305+ 'statamic.oauth ' ,
306+ 'statamic.protect.default ' ,
307+ 'statamic.revisions ' ,
308+ 'statamic.routes ' ,
309+ 'statamic.search.default ' ,
310+ 'statamic.search.indexes ' ,
311+ 'statamic.search.defaults ' ,
312+ 'statamic.search.queue ' ,
313+ 'statamic.search.queue_connection ' ,
314+ 'statamic.search.chunk_size ' ,
315+ 'statamic.stache.watcher ' ,
316+ 'statamic.stache.cache_store ' ,
317+ 'statamic.stache.indexes ' ,
318+ 'statamic.stache.lock ' ,
319+ 'statamic.stache.warming ' ,
320+ 'statamic.static_caching.strategy ' ,
321+ 'statamic.static_caching.strategies ' ,
322+ 'statamic.static_caching.exclude ' ,
323+ 'statamic.static_caching.invalidation ' ,
324+ 'statamic.static_caching.ignore_query_strings ' ,
325+ 'statamic.static_caching.allowed_query_strings ' ,
326+ 'statamic.static_caching.disallowed_query_strings ' ,
327+ 'statamic.static_caching.nocache ' ,
328+ 'statamic.static_caching.nocache_db_connection ' ,
329+ 'statamic.static_caching.replacers ' ,
330+ 'statamic.static_caching.warm_queue ' ,
331+ 'statamic.static_caching.warm_queue_connection ' ,
332+ 'statamic.static_caching.warm_insecure ' ,
333+ 'statamic.static_caching.background_recache ' ,
334+ 'statamic.static_caching.recache_token_parameter ' ,
335+ 'statamic.static_caching.share_errors ' ,
336+ 'statamic.system.multisite ' ,
337+ 'statamic.system.send_powered_by_header ' ,
338+ 'statamic.system.date_format ' ,
339+ 'statamic.system.display_timezone ' ,
340+ 'statamic.system.localize_dates_in_modifiers ' ,
341+ 'statamic.system.charset ' ,
342+ 'statamic.system.track_last_update ' ,
343+ 'statamic.system.cache_tags_enabled ' ,
344+ 'statamic.system.php_memory_limit ' ,
345+ 'statamic.system.php_max_execution_time ' ,
346+ 'statamic.system.ajax_timeout ' ,
347+ 'statamic.system.pcre_backtrack_limit ' ,
348+ 'statamic.system.debugbar ' ,
349+ 'statamic.system.ascii_replace_extra_symbols ' ,
350+ 'statamic.system.update_references ' ,
351+ 'statamic.system.always_augment_to_query ' ,
352+ 'statamic.system.row_id_handle ' ,
353+ 'statamic.system.fake_sql_queries ' ,
354+ 'statamic.system.layout ' ,
355+ 'statamic.templates ' ,
356+ 'statamic.users.repository ' ,
357+ 'statamic.users.avatars ' ,
358+ 'statamic.users.new_user_roles ' ,
359+ 'statamic.users.new_user_groups ' ,
360+ 'statamic.users.wizard_invitation ' ,
361+ 'statamic.users.passwords ' ,
362+ 'statamic.users.database ' ,
363+ 'statamic.users.tables ' ,
364+ 'statamic.users.guards ' ,
365+ 'statamic.users.impersonate ' ,
366+ 'statamic.users.elevated_session_duration ' ,
367+ 'statamic.users.two_factor_enforced_roles ' ,
368+ 'statamic.users.sort_field ' ,
369+ 'statamic.users.sort_direction ' ,
370+ 'statamic.webauthn ' ,
371+ ];
372+
373+ $ allowed = collect ((array ) config ('statamic.system.view_config_allowlist ' , $ defaults ))
374+ ->flatMap (fn ($ key ) => $ key === '@default ' ? $ defaults : [$ key ])
375+ ->unique ()->values ()->all ();
376+
377+ return array_reduce ($ allowed , function ($ config , $ key ) {
378+ $ value = config ($ key );
379+
380+ if (! is_null ($ value )) {
381+ Arr::set ($ config , $ key , $ value );
382+ }
383+
384+ return $ config ;
385+ }, []);
386+ }
250387}
0 commit comments