feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run

- Base: wintercms/winter branch 1.2 (full framework)
- Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS
- Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication
- Partials: hero (offline-first), features, modes (offline/nube toggle),
  screenshots, pricing (3 planes), comparison, FAQ, CTA
- Plugin VivesPOS.Site with ContactForm
- Dockerfile: PHP 8.2 Apache, port 80, healthcheck
- Added winter/wn-pages, blog, sitemap, seo plugins
- Active theme set to vivespos
This commit is contained in:
2026-08-21 19:29:00 -06:00
commit 1f72193a64
3266 changed files with 531480 additions and 0 deletions

322
config/app.php Normal file
View File

@@ -0,0 +1,322 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| When your application is in debug mode, detailed error messages with
| stack traces will be shown on every error that occurs within your
| application. If disabled, a simple generic error page is shown.
|
| You can create a CMS page with route "/error" to set the contents
| of this page. Otherwise a default error page is shown.
|
| IMPORTANT: Always have debug mode set to false in production environments
| as it can reveal sensitive information about your application and
| infrastructure to untrusted users through more detailed errors.
|
*/
'debug' => env('APP_DEBUG', true),
/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| This value is the name of your application. This value is used when the
| framework needs to place the application's name in a notification or
| any other location as required by the application or its packages.
|
*/
'name' => env('APP_NAME', 'Winter CMS'),
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| your application so that it is used when running Artisan tasks.
|
*/
'url' => env('APP_URL', 'http://localhost'),
/*
|--------------------------------------------------------------------------
| Asset URL
|--------------------------------------------------------------------------
|
| This URL is used to properly generate URLs for assets, including
| URLs generated by the `| theme` & `| asset` filters in Twig, or the
| `Url::asset()` & `asset()` helpers. If set to null, the URL used will
| be the current hostname or `app.url` config.
|
| 'asset_url' => 'https://cdn.example.com/',
|
*/
'asset_url' => env('ASSET_URL', null),
/*
|--------------------------------------------------------------------------
| Temporary Path
|--------------------------------------------------------------------------
|
| This is used to set the application's temporary path. Normally this value
| is set automatically by the application, however on some systems you
| may need to change it (Laravel Vapor / read-only systems: /tmp).
|
*/
'tempPath' => env('APP_TEMP_PATH', null),
/*
|--------------------------------------------------------------------------
| Trusted hosts
|--------------------------------------------------------------------------
|
| You may specify valid hosts for your application as an array or boolean
| below. This helps prevent host header poisoning attacks.
|
| Possible values:
| - `true`: Trust the host specified in app.url, as well as the "www"
| subdomain, if applicable.
| - `false`: Disable the trusted hosts feature.
| - array: Defines the domains to be trusted hosts. Each item should be
| a string defining a domain, IP address, or a regex pattern.
|
| Example of array values:
|
| 'trustedHosts' => [
| 'example.com', // Matches just example.com
| 'www.example.com', // Matches just www.example.com
| '^(.+\.)?example\.com$', // Matches example.com and all subdomains
| 'https://example.com', // Matches just example.com
| ],
|
| NOTE: Even when set to `false`, this functionality is explicitly enabled
| on the Backend password reset flow for security reasons.
*/
'trustedHosts' => false,
/*
|--------------------------------------------------------------------------
| Trusted proxies
|--------------------------------------------------------------------------
|
| You may specify valid proxies for your application, in order for URLs
| and requests to be presented as the proxy address should you request
| a URL through the proxy.
|
| Possible values:
| - `null` or `false`: Do not trust any proxies
| - `'*'`: Trust all proxies
| - string: A single or comma-separated list of proxies to trust
| - array: An array of proxies to trust
|
| Examples:
| - To trust any proxy (i.e. a single proxy with an unknown IP address):
|
| 'trustedProxies' => '*',
|
| - To trust all proxies (i.e. AWS ELB behind CloudFront):
|
| 'trustedProxies' => '**',
|
| - To trust two IP addresses as proxies
|
| 'trustedProxies' => '192.168.1.1, 192.168.1.2',
| 'trustedProxies' => ['192.168.1.1', '192.168.1.2'],
*/
'trustedProxies' => null,
/*
|--------------------------------------------------------------------------
| Trusted proxy headers
|--------------------------------------------------------------------------
|
| In addition to the above, you can also determine which headers to trust
| from your proxy when rewriting the request. This is an integer map value
| so you may specify more than one value.
|
| Possible values:
| - 'HEADER_X_FORWARDED_ALL' - trust all forwarded headers
| - Illuminate\Http\Request::HEADER_X_FORWARDED_FOR - trust only the proxy IP
| - Illuminate\Http\Request::HEADER_X_FORWARDED_HOST - trust only the proxy hostname
| - Illuminate\Http\Request::HEADER_X_FORWARDED_PORT - trust only the proxy port
| - Illuminate\Http\Request::HEADER_X_FORWARDED_PROTO - trust only the proxy protocol
| - Illuminate\Http\Request::HEADER_X_FORWARDED_PREFIX - trust only the proxy prefix
| - Illuminate\Http\Request::HEADER_X_FORWARDED_AWS_ELB - trust Amazon Elastic Load Balancing headers
| - Illuminate\Http\Request::HEADER_X_FORWARDED_TRAEFIK - trust Traefik reverse proxy headers
|
| Examples:
| - To trust only the hostname, use the following:
|
| 'trustedProxyHeaders' => Illuminate\Http\Request::HEADER_X_FORWARDED_HOST
|
| - For trusting all except the protocol, you can use the following:
|
| 'trustedProxyHeaders' => Illuminate\Http\Request::HEADER_X_FORWARDED_FOR
| | Illuminate\Http\Request::HEADER_X_FORWARDED_HOST
| | Illuminate\Http\Request::HEADER_X_FORWARDED_PORT
|
| - Amazon ELB users should always use the "HEADER_X_FORWARDED_AWS_ELB" option.
*/
'trustedProxyHeaders' => 'HEADER_X_FORWARDED_ALL',
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
|
| -------- STOP! --------
| Before you change this value, consider carefully if that is actually
| what you want to do. It is HIGHLY recommended that this is always set
| to UTC (as your server & DB timezone should be as well) and instead you
| use cms.backendTimezone to set the default timezone used in the backend
| to display dates & times.
|
*/
'timezone' => 'UTC',
/*
|--------------------------------------------------------------------------
| Scheduler Timezone
|--------------------------------------------------------------------------
|
| This property specifies the default timezone for your application's
| scheduled tasks. You can set it independently of the application's
| default timezone to ensure that schedules run at the desired local time.
|
*/
'schedule_timezone' => 'UTC',
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
| WARNING: Avoid setting this to a locale that is not supported by the
| backend yet, as this can cause issues in the backend.
|
| Currently supported backend locales are listed in
| Backend\Models\Preference->getLocaleOptions()
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
/*
|--------------------------------------------------------------------------
| Faker Locale
|--------------------------------------------------------------------------
|
| This locale will be used by the Faker PHP library when generating fake
| data for your database seeds. For example, this will be used to get
| localized telephone numbers, street address information and more.
|
*/
'faker_locale' => 'en_US',
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
/*
|--------------------------------------------------------------------------
| Autoloaded Service Providers
|--------------------------------------------------------------------------
|
| The service providers listed here will be automatically loaded on the
| request to your application. Feel free to add your own services to
| this array to grant expanded functionality to your applications.
|
*/
'providers' => array_merge(include(base_path('modules/system/providers.php')), [
// 'Illuminate\Html\HtmlServiceProvider', // Example
System\ServiceProvider::class,
]),
/*
|--------------------------------------------------------------------------
| Load automatically discovered packages
|--------------------------------------------------------------------------
|
| By default, Winter CMS disables the loading of discovered packages
| through Laravel's package discovery service, in order to allow packages
| used by plugins to be disabled if the plugin itself is disabled.
|
| Set this to `true` to enable automatic loading of these packages. This
| will result in packages being loaded, even if the plugin using them is
| disabled. This is NOT RECOMMENDED.
|
| Please note that packages defined in `app.providers` will still be loaded
| even if discovery is disabled.
|
*/
'loadDiscoveredPackages' => false,
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
'aliases' => array_merge(include(base_path('modules/system/aliases.php')), [
// 'Str' => 'Illuminate\Support\Str', // Example
]),
];

41
config/auth.php Normal file
View File

@@ -0,0 +1,41 @@
<?php
return [
'throttle' => [
/*
|--------------------------------------------------------------------------
| Enable throttling of Backend authentication attempts
|--------------------------------------------------------------------------
|
| If set to true, users will be given a limited number of attempts to sign
| in to the Backend before being blocked for a specified number of minutes.
|
*/
'enabled' => true,
/*
|--------------------------------------------------------------------------
| Failed Authentication Attempt Limit
|--------------------------------------------------------------------------
|
| Number of failed attempts allowed while trying to authenticate a user.
|
*/
'attemptLimit' => 5,
/*
|--------------------------------------------------------------------------
| Suspension Time
|--------------------------------------------------------------------------
|
| The number of minutes to suspend further attempts on authentication once
| the attempt limit is reached.
|
*/
'suspensionTime' => 15,
],
];

60
config/broadcasting.php Normal file
View File

@@ -0,0 +1,60 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Broadcaster
|--------------------------------------------------------------------------
|
| This option controls the default broadcaster that will be used by the
| framework when an event needs to be broadcast. You may set this to
| any of the connections defined in the "connections" array below.
|
| Supported: "pusher", "ably", "redis", "log", "null"
|
*/
'default' => env('BROADCAST_DRIVER', 'null'),
/*
|--------------------------------------------------------------------------
| Broadcast Connections
|--------------------------------------------------------------------------
|
| Here you may define all of the broadcast connections that will be used
| to broadcast events to other systems or over websockets. Samples of
| each available type of connection are provided inside this array.
|
*/
'connections' => [
'pusher' => [
'app_id' => env('PUSHER_APP_ID'),
'client_options' => [
// Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
],
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
],
'secret' => env('PUSHER_APP_SECRET'),
],
'ably' => [
'driver' => 'ably',
'key' => env('ABLY_KEY'),
],
'redis' => [
'connection' => 'default',
'driver' => 'redis',
],
'log' => [
'driver' => 'log',
],
'null' => [
'driver' => 'null',
],
],
];

139
config/cache.php Normal file
View File

@@ -0,0 +1,139 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Cache Store
|--------------------------------------------------------------------------
|
| This option controls the default cache connection that gets used while
| using this caching library. This connection is used when another is
| not explicitly specified when executing a given caching function.
|
| WARNING! Do not use anything that is used for other information in your
| application. Example: If you are using redis for managing queues and / or
| sessions, you should NOT be using the EXACT SAME redis connection for the
| Cache store, as calling Cache::flush() will flush the entire redis store.
|
*/
'default' => env('CACHE_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Cache Stores
|--------------------------------------------------------------------------
|
| Here you may define all of the cache "stores" for your application as
| well as their drivers. You may even define multiple stores for the
| same cache driver to group types of items stored in your caches.
|
| Supported drivers: "apc", "array", "database", "file",
| "memcached", "redis", "dynamodb", "octane", "null"
|
*/
'stores' => [
'apc' => [
'driver' => 'apc',
],
'array' => [
'driver' => 'array',
'serialize' => false,
],
'database' => [
'connection' => null,
'driver' => 'database',
'lock_connection' => null,
'table' => 'cache',
],
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache'),
],
'memcached' => [
'driver' => 'memcached',
'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'sasl' => [
env('MEMCACHED_USERNAME'),
env('MEMCACHED_PASSWORD'),
],
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
'redis' => [
'connection' => 'cache',
'driver' => 'redis',
'lock_connection' => 'default',
],
'dynamodb' => [
'driver' => 'dynamodb',
'endpoint' => env('DYNAMODB_ENDPOINT'),
'key' => env('AWS_ACCESS_KEY_ID'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
],
'octane' => [
'driver' => 'octane',
],
],
/*
|--------------------------------------------------------------------------
| Cache Key Prefix
|--------------------------------------------------------------------------
|
| When utilizing a RAM based store such as APC or Memcached, there might
| be other applications utilizing the same cache. So, we'll specify a
| value to get prefixed to all our keys so we can avoid collisions.
|
*/
'prefix' => env('CACHE_PREFIX', str_slug(env('APP_NAME', 'winter'), '_') . '_cache'),
/*
|--------------------------------------------------------------------------
| Cache Key for the CMS' PHP code parser cache
|--------------------------------------------------------------------------
|
| This option controls the cache key used by the CMS when storing generated
| PHP from the theme PHP sections. Recommended to change this when multiple
| servers running Winter CMS are connected to the same cache server to
| prevent conflicts.
|
*/
'codeParserDataCacheKey' => 'cms-php-file-data',
/*
|--------------------------------------------------------------------------
| Disable Request Cache
|--------------------------------------------------------------------------
|
| The request cache stores cache retrievals from the cache store
| in memory to speed up consecutive retrievals within the same request.
|
| true - always disable this in-memory request cache
|
| false - always enable; be aware that long-running console commands
| (including queue workers) may retain cache entries in memory that
| have been changed in other processes or would have otherwise
| expired, causing issues with the `queue:restart` command, for
| example
|
| null - enable for HTTP requests, disable when running in CLI
|
*/
'disableRequestCache' => null,
];

476
config/cms.php Normal file
View File

@@ -0,0 +1,476 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Specifies the default CMS theme.
|--------------------------------------------------------------------------
|
| This parameter value can be overridden by the CMS back-end settings.
|
*/
'activeTheme' => 'vivespos',
/*
|--------------------------------------------------------------------------
| Bleeding edge updates
|--------------------------------------------------------------------------
|
| If you are developing with Winter, it is important to have the latest
| code base. Set this value to 'true' to tell the platform to download
| and use the development copies of core files and plugins.
|
*/
'edgeUpdates' => false,
/*
|--------------------------------------------------------------------------
| Back-end URI prefix
|--------------------------------------------------------------------------
|
| Specifies the URL name used for accessing back-end pages.
| For example: backend -> http://localhost/backend
|
*/
'backendUri' => 'backend',
/*
|--------------------------------------------------------------------------
| Back-end force HTTPS security
|--------------------------------------------------------------------------
|
| Use this setting to force a secure protocol when accessing any back-end
| pages, including the authentication pages. This is usually handled by
| web server config, but can be handled by the app for added security.
|
*/
'backendForceSecure' => false,
/*
|--------------------------------------------------------------------------
| Back-end login remember
|--------------------------------------------------------------------------
|
| Define live duration of backend sessions:
|
| true - session never expire (cookie expiration in 5 years)
|
| false - session have a limited time (see session.lifetime)
|
| null - The form login display a checkbox that allow user to choose
| wanted behavior
|
*/
'backendForceRemember' => true,
/*
|--------------------------------------------------------------------------
| Back-end timezone
|--------------------------------------------------------------------------
|
| This acts as the default setting for a back-end user's timezone. This can
| be changed by the user at any time using the backend preferences. All
| dates displayed in the back-end will be converted to this timezone.
|
*/
'backendTimezone' => 'UTC',
/*
|--------------------------------------------------------------------------
| Back-end Skin
|--------------------------------------------------------------------------
|
| Specifies the back-end skin to use.
|
*/
'backendSkin' => \Backend\Skins\Standard::class,
/*
|--------------------------------------------------------------------------
| Automatically run migrations on login
|--------------------------------------------------------------------------
|
| If value is true, UpdateManager will be run on logging in to the backend.
| It's recommended to set this value to 'null' in production enviroments
| because it clears the cache every time a user logs in to the backend.
| If set to null, this setting is enabled when debug mode (app.debug) is enabled
| and disabled when debug mode is disabled.
|
*/
'runMigrationsOnLogin' => null,
/*
|--------------------------------------------------------------------------
| Determines which modules to load
|--------------------------------------------------------------------------
|
| Specify which modules should be registered when using the application.
|
*/
'loadModules' => [
'System',
'Backend',
'Cms',
],
/*
|--------------------------------------------------------------------------
| Prevents application updates
|--------------------------------------------------------------------------
|
| If using composer or git to download updates to the core files, set this
| value to 'true' to prevent the update gateway from trying to download
| these files again as part of the application update process. Plugins
| and themes will still be downloaded.
|
*/
'disableCoreUpdates' => false,
/*
|--------------------------------------------------------------------------
| Specific plugins to disable
|--------------------------------------------------------------------------
|
| Specify plugin codes which will always be disabled in the application.
|
*/
'disablePlugins' => [],
/*
|--------------------------------------------------------------------------
| Determines if the routing caching is enabled.
|--------------------------------------------------------------------------
|
| If the caching is enabled, the page URL map is saved in the cache. If a page
| URL was changed on the disk, the old URL value could be still saved in the cache.
| To update the cache the back-end Clear Cache feature should be used. It is recommended
| to disable the caching during the development, and enable it in the production mode.
|
*/
'enableRoutesCache' => env('ROUTES_CACHE', false),
/*
|--------------------------------------------------------------------------
| Time to live for the URL map.
|--------------------------------------------------------------------------
|
| The URL map used in the CMS page routing process. By default
| the map is updated every time when a page is saved in the back-end or when the
| interval, in minutes, specified with the urlMapCacheTTL parameter expires.
|
*/
'urlCacheTtl' => 10,
/*
|--------------------------------------------------------------------------
| Time to live for parsed CMS objects.
|--------------------------------------------------------------------------
|
| Specifies the number of minutes the CMS object cache lives. After the interval
| is expired item are re-cached. Note that items are re-cached automatically when
| the corresponding template file is modified.
|
*/
'parsedPageCacheTTL' => 10,
/*
|--------------------------------------------------------------------------
| Determines if the asset caching is enabled.
|--------------------------------------------------------------------------
|
| If the caching is enabled, combined assets are cached. If a asset file
| is changed on the disk, the old file contents could be still saved in the cache.
| To update the cache the back-end Clear Cache feature should be used. It is recommended
| to disable the caching during the development, and enable it in the production mode.
|
*/
'enableAssetCache' => env('ASSET_CACHE', false),
/*
|--------------------------------------------------------------------------
| Determines if the asset minification is enabled.
|--------------------------------------------------------------------------
|
| If the minification is enabled, combined assets are compressed (minified).
| It is recommended to disable the minification during development, and
| enable it in production mode. If set to null, assets are minified
| when debug mode (app.debug) is disabled.
|
*/
'enableAssetMinify' => null,
/*
|--------------------------------------------------------------------------
| Check import timestamps when combining assets
|--------------------------------------------------------------------------
|
| If deep hashing is enabled, the combiner cache will be reset when a change
| is detected on imported files, in addition to those referenced directly.
| This will cause slower page performance. If set to null, deep hashing
| is used when debug mode (app.debug) is enabled.
|
*/
'enableAssetDeepHashing' => null,
/*
|--------------------------------------------------------------------------
| Database-driven Themes
|--------------------------------------------------------------------------
|
| Stores theme templates in the database instead of the filesystem.
|
| false - All theme templates are sourced from the filesystem.
|
| true - Source theme templates from the database with fallback to the filesytem.
|
| null - Setting equal to the inverse of app.debug: debug enabled, this disabled.
|
| The database layer stores all modified CMS files in the database. Files that are
| not modified continue to be loaded from the filesystem. The `theme:sync $themeDir`
| console command is available to populate the database from the filesystem with
| the `--toFile` flag to sync in the other direction (database to filesystem) and
| the `--paths="/path/to/file.md,/path/to/file2.md" flag to sync only specific files.
|
| Files modified in the database are cached to indicate that they should be loaded
| from the database.
|
*/
'databaseTemplates' => env('DATABASE_TEMPLATES', false),
/*
|--------------------------------------------------------------------------
| Public plugins path
|--------------------------------------------------------------------------
|
| Specifies the public plugins path relative to the application base URL,
| or you can specify a full URL path.
|
*/
'pluginsPath' => '/plugins',
/*
|--------------------------------------------------------------------------
| Public themes path
|--------------------------------------------------------------------------
|
| Specifies the public themes path relative to the application base URL,
| or you can specify a full URL path.
|
*/
'themesPath' => '/themes',
/*
|--------------------------------------------------------------------------
| Resource storage
|--------------------------------------------------------------------------
|
| Specifies the configuration for resource storage, such as media and
| upload files. These resources are used:
|
| media - generated by the media manager.
| uploads - generated by attachment model relationships.
| resized - generated by System\Classes\ImageResizer or the resize() Twig filter
|
| For each resource you can specify:
|
| disk - filesystem disk, as specified in filesystems.php config.
| folder - a folder prefix for storing all generated files inside.
| path - the public path relative to the application base URL,
| or you can specify a full URL path.
|
| Optionally, you can specify how long temporary URLs to protected files
| in cloud storage (ex. AWS, RackSpace) are valid for by setting
| temporaryUrlTTL to a value in seconds to define a validity period. This
| is only used for the 'uploads' config when using a supported cloud disk
|
| NOTE: If you have installed Winter in a subfolder, are using local
| storage and are not using a linkPolicy of 'force' you should include
| the path to the subfolder in the `path` option for these storage
| configurations.
|
| Example: Winter is installed under https://localhost/projects/winter.
| You should then specify `/projects/winter/storage/app/uploads` as the
| path for the uploads disk and `/projects/winter/storage/app/media` as
| the path for the media disk.
*/
'storage' => [
'uploads' => [
'disk' => 'local',
'folder' => 'uploads',
'path' => '/storage/app/uploads',
'temporaryUrlTTL' => 3600,
],
'media' => [
'disk' => 'local',
'folder' => 'media',
'path' => '/storage/app/media',
],
'resized' => [
'disk' => 'local',
'folder' => 'resized',
'path' => '/storage/app/resized',
],
],
/*
|--------------------------------------------------------------------------
| Convert Line Endings
|--------------------------------------------------------------------------
|
| Determines if Winter should convert line endings from the windows style
| \r\n to the unix style \n.
|
*/
'convertLineEndings' => false,
/*
|--------------------------------------------------------------------------
| Linking policy
|--------------------------------------------------------------------------
|
| Controls how URL links are generated throughout the application.
|
| detect - detect hostname and use the current schema
| secure - detect hostname and force HTTPS schema
| insecure - detect hostname and force HTTP schema
| force - force hostname and schema using app.url config value
|
| NOTE: force will ensure that the app.url value is used as the host for
| urls generated through the URL helpers which might have unintended
| consequences for projects that support multiple hostnames.
|
*/
'linkPolicy' => env('LINK_POLICY', 'detect'),
/*
|--------------------------------------------------------------------------
| Default permission mask
|--------------------------------------------------------------------------
|
| Specifies a default file and folder permission for newly created objects.
|
*/
'defaultMask' => [
'file' => null,
'folder' => null,
],
/*
|--------------------------------------------------------------------------
| Safe mode
|--------------------------------------------------------------------------
|
| If safe mode is enabled, the PHP code section is disabled in the CMS
| for security reasons. If set to null, safe mode is enabled when
| debug mode (app.debug) is disabled.
|
*/
'enableSafeMode' => null,
/*
|--------------------------------------------------------------------------
| Cross Site Request Forgery (CSRF) Protection
|--------------------------------------------------------------------------
|
| If the CSRF protection is enabled, all "postback" & AJAX requests are
| checked for a valid security token.
|
*/
'enableCsrfProtection' => env('ENABLE_CSRF', true),
/*
|--------------------------------------------------------------------------
| Force bytecode invalidation
|--------------------------------------------------------------------------
|
| When using OPcache with opcache.validate_timestamps set to 0 or APC
| with apc.stat set to 0 and Twig cache enabled, clearing the template
| cache won't update the cache, set to true to get around this.
|
*/
'forceBytecodeInvalidation' => true,
/*
|--------------------------------------------------------------------------
| Twig Strict Variables
|--------------------------------------------------------------------------
|
| If strict_variables is disabled, Twig will silently ignore invalid
| variables (variables and or attributes/methods that do not exist) and
| replace them with a null value. When enabled, Twig throws an exception
| instead. If set to null, it is enabled when debug mode (app.debug) is
| enabled.
|
*/
'enableTwigStrictVariables' => false,
/*
|--------------------------------------------------------------------------
| Base Directory Restriction
|--------------------------------------------------------------------------
|
| Restricts loading backend template and config files to within the base
| directory of the application.
|
| WARNING: This should always be enabled for security reasons. However, in
| some cases you may need to disable this; for instance when developing
| plugins that are stored elsewhere in the filesystem for organizational
| reasons and then symlinked into the application plugins/ directory.
|
| NEVER have this disabled in production.
|
*/
'restrictBaseDir' => env('RESTRICT_BASE_DIR', true),
/*
|--------------------------------------------------------------------------
| Backend Service Worker
|--------------------------------------------------------------------------
|
| Allow plugins to run Service Workers in the backend.
|
| WARNING: This should always be disabled for security reasons as Service
| Workers can be hijacked and used to run XSS into the backend. Turning
| this feature on can create a conflict if you have a frontend Service
| Worker running. The 'scope' needs to be correctly set and not have a
| duplicate subfolder structure on the frontend, otherwise it will run
| on both the frontend and backend of your website.
|
| true - allow service workers to run in the backend
|
| false - disallow service workers to run in the backend
|
*/
'enableBackendServiceWorkers' => false,
];

20
config/cookie.php Normal file
View File

@@ -0,0 +1,20 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Cookies that should not be encrypted
|--------------------------------------------------------------------------
|
| Winter CMS encrypts/decrypts cookies by default. You can specify cookies
| that should not be encrypted or decrypted here. This is useful, for
| example, when you want to pass data from frontend to server side backend
| via cookies, and vice versa.
|
*/
'unencryptedCookies' => [
// 'my_cookie',
],
];

34
config/cors.php Normal file
View File

@@ -0,0 +1,34 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Cross-Origin Resource Sharing (CORS) Configuration
|--------------------------------------------------------------------------
|
| Here you may configure your settings for cross-origin resource sharing
| or "CORS". This determines what cross-origin operations may execute
| in web browsers. You are free to adjust these settings as needed.
|
| To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
|
*/
'paths' => [],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
];

133
config/database.php Normal file
View File

@@ -0,0 +1,133 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
*/
'default' => env('DB_CONNECTION', 'mysql'),
/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Here are each of the database connections setup for your application.
| Of course, examples of configuring each database platform that is
| supported by Winter CMS is shown below to make development simple.
|
| All database work in Winter CMS is done through the PHP PDO facilities
| so make sure you have the driver for your particular database of
| choice installed on your machine before you begin development.
|
*/
'connections' => [
'sqlite' => [
'database' => env('DB_DATABASE', storage_path('database.sqlite')),
'driver' => 'sqlite',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
'prefix' => '',
'url' => env('DATABASE_URL'),
],
'mysql' => [
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'database' => env('DB_DATABASE', 'winter'),
'driver' => 'mysql',
'engine' => 'InnoDB',
'host' => env('DB_HOST', '127.0.0.1'),
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
'password' => env('DB_PASSWORD', ''),
'port' => env('DB_PORT', '3306'),
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'unix_socket' => env('DB_SOCKET', ''),
'url' => env('DATABASE_URL'),
'username' => env('DB_USERNAME', 'winter'),
],
'pgsql' => [
'charset' => 'utf8',
'database' => env('DB_DATABASE', 'winter'),
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'password' => env('DB_PASSWORD', ''),
'port' => env('DB_PORT', '5432'),
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'sslmode' => 'prefer',
'url' => env('DATABASE_URL'),
'username' => env('DB_USERNAME', 'winter'),
],
'sqlsrv' => [
'charset' => 'utf8',
'database' => env('DB_DATABASE', 'winter'),
'driver' => 'sqlsrv',
'host' => env('DB_HOST', '127.0.0.1'),
'password' => env('DB_PASSWORD', ''),
'port' => env('DB_PORT', '1433'),
'prefix' => '',
'prefix_indexes' => true,
'url' => env('DATABASE_URL'),
'username' => env('DB_USERNAME', 'winter'),
],
],
/*
|--------------------------------------------------------------------------
| Migration Repository Table
|--------------------------------------------------------------------------
|
| This table keeps track of all the migrations that have already run for
| your application. Using this information, we can determine which of
| the migrations on disk haven't actually been run in the database.
|
*/
'migrations' => 'migrations',
/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer body of commands than a typical key-value system
| such as APC or Memcached. Winter makes it easy to dig right in.
|
*/
'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', str_slug(env('APP_NAME', 'winter'), '_') . '_database_'),
],
'default' => [
'database' => env('REDIS_DB', '0'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'url' => env('REDIS_URL'),
],
'cache' => [
'database' => env('REDIS_CACHE_DB', '1'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'url' => env('REDIS_URL'),
],
],
];

2
config/dev/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*
!.gitignore

58
config/develop.php Normal file
View File

@@ -0,0 +1,58 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Decompile backend assets
|--------------------------------------------------------------------------
|
| Enabling this will load all individual backend asset files, instead of
| loading the compiled asset files generated by `winter:util compile
| assets`. This is useful only for development purposes, and should not be
| enabled in production. Please note that enabling this will make the
| Backend load a LOT of individual asset files.
|
| true - allow decompiled backend assets
|
| false - use compiled backend assets (default)
|
*/
'decompileBackendAssets' => false,
/*
|--------------------------------------------------------------------------
| Allow deep-level symlinks
|--------------------------------------------------------------------------
|
| Winter CMS, by default, will allow symlinks within the first level of
| subdirectories. When this feature is enabled, the system will allow
| symlinks to be used at any directory level. This can be useful for
| symlinking individual plugins or themes.
|
| Please note that this has a negative effect on performance. This feature
| abides by "cms.restrictBaseDir" - if enabled, symlinks cannot point to
| resources outside of the root folder.
|
| true - allow symlinks at any level
|
| false - only allow symlinks at the first level of subdirectories (default)
|
*/
'allowDeepSymlinks' => false,
/*
|--------------------------------------------------------------------------
| Enable Snowboard debugging
|--------------------------------------------------------------------------
|
| By default, Snowboard debugging and client-side logging is disabled.
|
| If you wish to enable Snowboard debugging, set this value to `true`.
|
*/
'debugSnowboard' => env('DEBUG_SNOWBOARD', false),
];

32
config/environment.php Normal file
View File

@@ -0,0 +1,32 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services your application utilizes. Set this in your ".env" file.
|
*/
'default' => 'development',
/*
|--------------------------------------------------------------------------
| Environment Multitenancy
|--------------------------------------------------------------------------
|
| You may specify a different environment according to the hostname that
| is provided with the HTTP request. This is useful if you want to use
| different configuration, such as database and theme, per hostname.
|
*/
'hosts' => [
'localhost' => 'dev',
],
];

53
config/filesystems.php Normal file
View File

@@ -0,0 +1,53 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. The "local" disk, as well as a variety of cloud
| based disks are available to your application. Just store away!
|
*/
'default' => env('FILESYSTEM_DISK', 'local'),
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
| Supported Drivers: "local", "ftp", "sftp", "s3"
|
| NOTE: s3's stream_uploads option requires the Winter.DriverAWS plugin
| to be installed and enabled.
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
'url' => '/storage/app',
'visibility' => 'public',
],
's3' => [
'bucket' => env('AWS_BUCKET'),
'driver' => 's3',
'endpoint' => env('AWS_ENDPOINT'),
'key' => env('AWS_ACCESS_KEY_ID'),
'region' => env('AWS_DEFAULT_REGION'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'stream_uploads' => env('AWS_S3_STREAM_UPLOADS', false),
'url' => env('AWS_URL'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
],
],
];

51
config/hashing.php Normal file
View File

@@ -0,0 +1,51 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Hash Driver
|--------------------------------------------------------------------------
|
| This option controls the default hash driver that will be used to hash
| passwords for your application. By default, the bcrypt algorithm is
| used; however, you remain free to modify this option if you wish.
|
| Supported: "bcrypt", "argon", "argon2id"
|
*/
'driver' => 'bcrypt',
/*
|--------------------------------------------------------------------------
| Bcrypt Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Bcrypt algorithm. This will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'bcrypt' => [
'rounds' => env('BCRYPT_ROUNDS', 10),
],
/*
|--------------------------------------------------------------------------
| Argon Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Argon algorithm. These will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'argon' => [
'memory' => 65536,
'threads' => 1,
'time' => 4,
],
];

107
config/logging.php Normal file
View File

@@ -0,0 +1,107 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that gets used when writing
| messages to the logs. The name specified in this option should match
| one of the channels defined in the "channels" configuration array.
|
*/
'default' => env('LOG_CHANNEL', 'stack'),
/*
|--------------------------------------------------------------------------
| Deprecations Log Channel
|--------------------------------------------------------------------------
|
| This option controls the log channel that should be used to log warnings
| regarding deprecated PHP and library features. This allows you to get
| your application ready for upcoming major versions of dependencies.
|
*/
'deprecations' => env('LOG_DEPRECATIONS_CHANNEL', 'null'),
/*
|--------------------------------------------------------------------------
| Log Channels
|--------------------------------------------------------------------------
|
| Here you may configure the log channels for your application. Out of
| the box, Winter uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Drivers: "single", "daily", "slack", "syslog",
| "errorlog", "monolog",
| "custom", "stack"
|
*/
'channels' => [
'stack' => [
'channels' => [
'single',
],
'driver' => 'stack',
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'level' => env('LOG_LEVEL', 'debug'),
'path' => storage_path('logs/system.log'),
],
'daily' => [
'days' => 14,
'driver' => 'daily',
'level' => env('LOG_LEVEL', 'debug'),
'path' => storage_path('logs/system.log'),
],
'slack' => [
'driver' => 'slack',
'emoji' => ':boom:',
'level' => env('LOG_LEVEL', 'critical'),
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Winter Log',
],
'papertrail' => [
'driver' => 'monolog',
'handler' => env('LOG_PAPERTRAIL_HANDLER', \Monolog\Handler\SyslogUdpHandler::class),
'handler_with' => [
'connectionString' => 'tls://' . env('PAPERTRAIL_URL') . ':' . env('PAPERTRAIL_PORT'),
'host' => env('PAPERTRAIL_URL'),
'port' => env('PAPERTRAIL_PORT'),
],
'level' => env('LOG_LEVEL', 'debug'),
],
'stderr' => [
'driver' => 'monolog',
'formatter' => env('LOG_STDERR_FORMATTER'),
'handler' => \Monolog\Handler\StreamHandler::class,
'level' => env('LOG_LEVEL', 'debug'),
'with' => [
'stream' => 'php://stderr',
],
],
'syslog' => [
'driver' => 'syslog',
'level' => env('LOG_LEVEL', 'debug'),
],
'errorlog' => [
'driver' => 'errorlog',
'level' => env('LOG_LEVEL', 'debug'),
],
'null' => [
'driver' => 'monolog',
'handler' => \Monolog\Handler\NullHandler::class,
],
'emergency' => [
'path' => storage_path('logs/system.log'),
],
],
];

92
config/mail.php Normal file
View File

@@ -0,0 +1,92 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Mailer
|--------------------------------------------------------------------------
|
| This option controls the default mailer that is used to send any email
| messages sent by your application. Alternative mailers may be setup
| and used as needed; however, this mailer will be used by default.
|
*/
'default' => env('MAIL_MAILER', 'smtp'),
/*
|--------------------------------------------------------------------------
| Mailer Configurations
|--------------------------------------------------------------------------
|
| Here you may configure all of the mailers used by your application plus
| their respective settings. Several examples have been configured for
| you and you are free to add your own as your application requires.
|
| Winter supports a variety of mail "transport" drivers to be used while
| sending an e-mail. You will specify which one you are using for your
| mailers below. You are free to add additional mailers as required.
|
| Supported: "smtp", "sendmail", "mailgun", "ses",
| "postmark", "log", "array", "failover"
|
*/
'mailers' => [
'smtp' => [
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'password' => env('MAIL_PASSWORD'),
'port' => env('MAIL_PORT', 587),
'timeout' => null,
'transport' => 'smtp',
'username' => env('MAIL_USERNAME'),
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
],
'postmark' => [
'transport' => 'postmark',
],
'mail' => [
'transport' => 'mail',
],
'sendmail' => [
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -i'),
'transport' => 'sendmail',
],
'log' => [
'channel' => env('MAIL_LOG_CHANNEL'),
'transport' => 'log',
],
'array' => [
'transport' => 'array',
],
'failover' => [
'mailers' => [
'smtp',
'log',
],
'transport' => 'failover',
],
],
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'noreply@example.com'),
'name' => env('MAIL_FROM_NAME', env('APP_NAME', 'Winter CMS')),
],
];

102
config/queue.php Normal file
View File

@@ -0,0 +1,102 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Queue Connection Name
|--------------------------------------------------------------------------
|
| Winter's queue API supports an assortment of back-ends via a single
| API, giving you convenient access to each back-end using the same
| syntax for every one. Here you may define a default connection.
|
*/
'default' => env('QUEUE_CONNECTION', 'sync'),
/*
|--------------------------------------------------------------------------
| Queue Connections
|--------------------------------------------------------------------------
|
| Here you may configure the connection information for each server that
| is used by your application. A default configuration has been added
| for each back-end shipped with Winter. You are free to add more.
|
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
|
*/
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'after_commit' => false,
'driver' => 'database',
'queue' => 'default',
'retry_after' => 90,
'table' => 'jobs',
],
'beanstalkd' => [
'after_commit' => false,
'block_for' => 0,
'driver' => 'beanstalkd',
'host' => 'localhost',
'queue' => 'default',
'retry_after' => 90,
],
'sqs' => [
'after_commit' => false,
'driver' => 'sqs',
'key' => env('AWS_ACCESS_KEY_ID'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'default'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'suffix' => env('SQS_SUFFIX'),
],
'redis' => [
'after_commit' => false,
'block_for' => null,
'connection' => 'default',
'driver' => 'redis',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
],
],
/*
|--------------------------------------------------------------------------
| Job Batching
|--------------------------------------------------------------------------
|
| The following options configure the database and table that store job
| batching information. These options can be updated to any database
| connection and table which has been defined by your application.
|
*/
'batching' => [
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'job_batches',
],
/*
|--------------------------------------------------------------------------
| Failed Queue Jobs
|--------------------------------------------------------------------------
|
| These options configure the behavior of failed queue job logging so you
| can control which database and table are used to store the jobs that
| have failed. You may change them to any database / table you wish.
|
*/
'failed' => [
'database' => env('DB_CONNECTION', 'mysql'),
'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
'table' => 'failed_jobs',
],
];

30
config/services.php Normal file
View File

@@ -0,0 +1,30 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Mailgun, Postmark, AWS and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
'secret' => env('MAILGUN_SECRET'),
],
'postmark' => [
'token' => env('POSTMARK_TOKEN'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
],
];

216
config/session.php Normal file
View File

@@ -0,0 +1,216 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option controls the default session "driver" that will be used on
| requests. By default, we will use the lightweight native driver but
| you may specify any of the other wonderful drivers provided here.
|
| Supported: "file", "cookie", "database", "apc",
| "memcached", "redis", "dynamodb", "array"
|
*/
'driver' => env('SESSION_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to immediately expire on the browser closing, set that option.
|
*/
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
/*
|--------------------------------------------------------------------------
| Session Encryption
|--------------------------------------------------------------------------
|
| This option allows you to easily specify that all of your session data
| should be encrypted before it is stored. All encryption will be run
| automatically by Laravel and you can use the Session like normal.
|
*/
'encrypt' => false,
/*
|--------------------------------------------------------------------------
| Session File Location
|--------------------------------------------------------------------------
|
| When using the native session driver, we need a location where session
| files may be stored. A default has been set for you but a different
| location may be specified. This is only needed for file sessions.
|
*/
'files' => storage_path('framework/sessions'),
/*
|--------------------------------------------------------------------------
| Session Database Connection
|--------------------------------------------------------------------------
|
| When using the "database" or "redis" session drivers, you may specify a
| connection that should be used to manage these sessions. This should
| correspond to a connection in your database configuration options.
|
*/
'connection' => env('SESSION_CONNECTION'),
/*
|--------------------------------------------------------------------------
| Session Database Table
|--------------------------------------------------------------------------
|
| When using the "database" session driver, you may specify the table we
| should use to manage the sessions. Of course, a sensible default is
| provided for you; however, you are free to change this as needed.
|
*/
'table' => 'sessions',
/*
|--------------------------------------------------------------------------
| Session Cache Store
|--------------------------------------------------------------------------
|
| While using one of the framework's cache driven session backends you may
| list a cache store that should be used for these sessions. This value
| must match with one of the application's configured cache "stores".
|
| Affects: "apc", "dynamodb", "memcached", "redis"
|
*/
'store' => env('SESSION_STORE'),
/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/
'lottery' => [
2,
100,
],
/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the cookie used to identify a session
| instance by ID. The name specified here will get used every time a
| new session cookie is created by the framework for every driver.
|
*/
'cookie' => env('SESSION_COOKIE', str_slug(env('APP_NAME', 'winter'), '_') . '_session'),
/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The session cookie path determines the path for which the cookie will
| be regarded as available. Typically, this will be the root path of
| your application but you are free to change this when necessary.
|
*/
'path' => '/',
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| Here you may change the domain of the cookie used to identify a session
| in your application. This will determine which domains the cookie is
| available to in your application. A sensible default has been set.
|
*/
'domain' => env('SESSION_DOMAIN'),
/*
|--------------------------------------------------------------------------
| HTTP Access Only
|--------------------------------------------------------------------------
|
| Setting this value to true will prevent JavaScript from accessing the
| value of the cookie and the cookie will only be accessible through
| the HTTP protocol. You are free to modify this option if needed.
|
*/
'http_only' => true,
/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you when it can't be done securely.
|
*/
'secure' => env('SESSION_SECURE_COOKIE', false),
/*
|--------------------------------------------------------------------------
| Same-Site Cookies
|--------------------------------------------------------------------------
|
| This option determines how your cookies behave when cross-site requests
| take place, and can be used to mitigate CSRF attacks. By default, we
| will set this value to "lax" since this is a secure default value.
|
| Cookies that match the domain of the current site, i.e. what's displayed
| in the browser's address bar, are referred to as first-party cookies.
| Similarly, cookies from domains other than the current site are referred
| to as third-party cookies.
|
| Cookies without a SameSite attribute will be treated as `SameSite=lax`,
| meaning the default behaviour will be to restrict cookies to first party
| contexts only.
|
| Cookies for cross-site usage must specify `same_site` as 'None' and `secure`
| as `true` to work correctly.
|
| lax - Cookies are allowed to be sent with top-level navigations and will
| be sent along with GET request initiated by third party website.
| This is the default value in modern browsers.
|
| strict - Cookies will only be sent in a first-party context and not be
| sent along with requests initiated by third party websites.
|
| Supported: "lax", "strict", "none", null
|
*/
'same_site' => 'lax',
];

182
config/testing/cms.php Normal file
View File

@@ -0,0 +1,182 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Specifies the default CMS theme
|--------------------------------------------------------------------------
|
| This parameter value can be overridden by the CMS back-end settings.
|
*/
'activeTheme' => 'test',
/*
|--------------------------------------------------------------------------
| Time to live for parsed CMS objects.
|--------------------------------------------------------------------------
|
| Specifies the number of minutes the CMS object cache lives. After the interval
| is expired item are re-cached. Note that items are re-cached automatically when
| the corresponding template file is modified.
|
*/
'parsedPageCacheTTL' => 1440,
/*
|--------------------------------------------------------------------------
| Determines if the routing caching is enabled.
|--------------------------------------------------------------------------
|
| If the caching is enabled, the page URL map is saved in the cache. If a page
| URL was changed on the disk, the old URL value could be still saved in the cache.
| To update the cache the back-end Clear Cache feature should be used. It is recommended
| to disable the caching during the development, and enable it in the production mode.
|
*/
'enableRoutesCache' => true,
/*
|--------------------------------------------------------------------------
| Time to live for the URL map.
|--------------------------------------------------------------------------
|
| The URL map used in the CMS page routing process. By default
| the map is updated every time when a page is saved in the back-end or when the
| interval, in minutes, specified with the urlMapCacheTTL parameter expires.
|
*/
'urlCacheTtl' => 1,
/*
|--------------------------------------------------------------------------
| Determines if the asset caching is enabled.
|--------------------------------------------------------------------------
|
| If the caching is enabled, combined assets are cached. If a asset file
| is changed on the disk, the old file contents could be still saved in the cache.
| To update the cache the back-end Clear Cache feature should be used. It is recommended
| to disable the caching during the development, and enable it in the production mode.
|
*/
'enableAssetCache' => false,
/*
|--------------------------------------------------------------------------
| Disables Twig caching for unit tests
|--------------------------------------------------------------------------
*/
'twigNoCache' => true,
/*
|--------------------------------------------------------------------------
| Convert Line Endings
|--------------------------------------------------------------------------
|
| Determines if Winter should convert line endings from the windows style
| \r\n to the unix style \n.
|
*/
'convertLineEndings' => true,
/*
|--------------------------------------------------------------------------
| Local plugins path
|--------------------------------------------------------------------------
|
| Specifies the absolute local plugins path.
|
*/
'pluginsPathLocal' => base_path('modules/system/tests/fixtures/plugins'),
/*
|--------------------------------------------------------------------------
| Local themes path
|--------------------------------------------------------------------------
|
| Specifies the absolute local themes path.
|
*/
'themesPathLocal' => base_path('modules/cms/tests/fixtures/themes'),
/*
|--------------------------------------------------------------------------
| Resource storage
|--------------------------------------------------------------------------
|
| Specifies the configuration for resource storage, such as media and
| upload files. These resources are used:
|
| media - generated by the media manager.
| uploads - generated by attachment model relationships.
| resized - generated by System\Classes\ImageResizer or the resize() Twig filter
|
| For each resource you can specify:
|
| disk - filesystem disk, as specified in filesystems.php config.
| folder - a folder prefix for storing all generated files inside.
| path - the public path relative to the application base URL,
| or you can specify a full URL path.
|
| Optionally, you can specify how long temporary URLs to protected files
| in cloud storage (ex. AWS, RackSpace) are valid for by setting
| temporaryUrlTTL to a value in seconds to define a validity period. This
| is only used for the 'uploads' config when using a supported cloud disk
|
| NOTE: If you have installed Winter in a subfolder, are using local
| storage and are not using a linkPolicy of 'force' you should include
| the path to the subfolder in the `path` option for these storage
| configurations.
|
| Example: Winter is installed under https://localhost/projects/winter.
| You should then specify `/projects/winter/storage/app/uploads` as the
| path for the uploads disk and `/projects/winter/storage/app/media` as
| the path for the media disk.
*/
'storage' => [
'uploads' => [
'disk' => 'local',
'folder' => 'uploads',
'path' => '/storage/tests/app/uploads',
'temporaryUrlTTL' => 3600,
],
'media' => [
'disk' => 'local',
'folder' => 'media',
'path' => '/storage/tests/app/media',
],
'resized' => [
'disk' => 'local',
'folder' => 'resized',
'path' => '/storage/tests/app/resized',
],
],
/*
|--------------------------------------------------------------------------
| Cross Site Request Forgery (CSRF) Protection
|--------------------------------------------------------------------------
|
| If the CSRF protection is enabled, all "postback" requests are checked
| for a valid security token.
|
*/
'enableCsrfProtection' => false,
];

View File

@@ -0,0 +1,64 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. The "local" disk, as well as a variety of cloud
| based disks are available to your application. Just store away!
|
*/
'default' => 'local',
/*
|--------------------------------------------------------------------------
| Default Cloud Filesystem Disk
|--------------------------------------------------------------------------
|
| Many applications store files both locally and in the cloud. For this
| reason, you may specify a default "cloud" driver here. This driver
| will be bound as the Cloud disk implementation in the container.
|
*/
'cloud' => 's3',
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
| Supported Drivers: "local", "ftp", "sftp", "s3"
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => base_path('storage/tests/app'),
'url' => '/storage/tests/app',
],
's3' => [
'driver' => 's3',
'key' => '',
'secret' => '',
'region' => '',
'bucket' => '',
// 'url' => env('AWS_URL'),
// 'endpoint' => env('AWS_ENDPOINT'),
],
],
];

34
config/view.php Normal file
View File

@@ -0,0 +1,34 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| View Storage Paths
|--------------------------------------------------------------------------
|
| Most templating systems load templates from disk. Here you may specify
| an array of paths that should be checked for your views. Of course
| the usual Laravel view path has already been registered for you.
|
*/
'paths' => [
// Default Laravel Blade template location
// @see https://github.com/octobercms/october/issues/3473 & https://github.com/octobercms/october/issues/3459
// realpath(base_path('resources/views'))
],
/*
|--------------------------------------------------------------------------
| Compiled View Path
|--------------------------------------------------------------------------
|
| This option determines where all the compiled Blade templates will be
| stored for your application. Typically, this is within the storage
| directory. However, as usual, you are free to change this value.
|
*/
'compiled' => env('VIEW_COMPILED_PATH', realpath(storage_path('framework/views'))),
];