mirror of
https://github.com/coollabsio/coolify-examples.git
synced 2026-02-18 21:38:58 +00:00
Add Shopware 6 example (#61)
This commit is contained in:
40
shopware6/.env
Normal file
40
shopware6/.env
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
|
||||||
|
###> shopware/core ###
|
||||||
|
APP_ENV=prod
|
||||||
|
APP_URL=http://127.0.0.1:8000
|
||||||
|
APP_SECRET=b15bed7d8d3ccecf7b13fb0822f4fc6d
|
||||||
|
INSTANCE_ID=a44644b8d3e364706622673027fce5a9
|
||||||
|
BLUE_GREEN_DEPLOYMENT=0
|
||||||
|
DATABASE_URL=mysql://root:root@localhost/shopware
|
||||||
|
###< shopware/core ###
|
||||||
|
|
||||||
|
###> symfony/messenger ###
|
||||||
|
# Choose one of the transports below
|
||||||
|
# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages
|
||||||
|
# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
|
||||||
|
# doctrine://default?auto_setup=0
|
||||||
|
###< symfony/messenger ###
|
||||||
|
|
||||||
|
###> symfony/mailer ###
|
||||||
|
# MAILER_DSN=null://null
|
||||||
|
###< symfony/mailer ###
|
||||||
|
|
||||||
|
###> symfony/lock ###
|
||||||
|
# Choose one of the stores below
|
||||||
|
# postgresql+advisory://db_user:db_password@localhost/db_name
|
||||||
|
LOCK_DSN=flock
|
||||||
|
###< symfony/lock ###
|
||||||
|
|
||||||
|
###> shopware/elasticsearch ###
|
||||||
|
OPENSEARCH_URL=http://localhost:9200
|
||||||
|
SHOPWARE_ES_ENABLED=0
|
||||||
|
SHOPWARE_ES_INDEXING_ENABLED=0
|
||||||
|
SHOPWARE_ES_INDEX_PREFIX=sw
|
||||||
|
SHOPWARE_ES_THROW_EXCEPTION=1
|
||||||
|
###< shopware/elasticsearch ###
|
||||||
|
|
||||||
|
###> shopware/storefront ###
|
||||||
|
PROXY_URL=http://localhost
|
||||||
|
SHOPWARE_HTTP_CACHE_ENABLED=1
|
||||||
|
SHOPWARE_HTTP_DEFAULT_TTL=7200
|
||||||
|
###< shopware/storefront ###
|
||||||
20
shopware6/.gitignore
vendored
Normal file
20
shopware6/.gitignore
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/.idea
|
||||||
|
/vendor/
|
||||||
|
|
||||||
|
###> shopware/core ###
|
||||||
|
.env.local
|
||||||
|
.env.local.php
|
||||||
|
.env.*.local
|
||||||
|
/public/bundles/*
|
||||||
|
/public/media/*
|
||||||
|
/public/theme/*
|
||||||
|
/public/thumbnail/*
|
||||||
|
/public/sitemap/*
|
||||||
|
/files/*
|
||||||
|
!/files/.htaccess
|
||||||
|
/var/*
|
||||||
|
!/var/.htaccess
|
||||||
|
/auth.json
|
||||||
|
/install.lock
|
||||||
|
/public/asset-manifest.json
|
||||||
|
###< shopware/core ###
|
||||||
14
shopware6/.htaccess
Normal file
14
shopware6/.htaccess
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
DirectoryIndex index.html index.php
|
||||||
|
|
||||||
|
<IfModule mod_negotiation.c>
|
||||||
|
Options -MultiViews
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mod_alias.c>
|
||||||
|
# Restrict access to VCS directories
|
||||||
|
RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)
|
||||||
|
|
||||||
|
# Restrict access to root folder files
|
||||||
|
RedirectMatch 404 /(composer\.(json|lock|phar)|README\.md|\.gitignore|.*\.dist|\.env.*)$
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
27
shopware6/Dockerfile
Normal file
27
shopware6/Dockerfile
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#syntax=docker/dockerfile:1.4
|
||||||
|
|
||||||
|
ARG BASE_IMAGE=shopware/docker-base:8.3
|
||||||
|
|
||||||
|
# pin versions
|
||||||
|
FROM ghcr.io/shopware/docker-base:8.3 as base-image
|
||||||
|
FROM ghcr.io/shopware/shopware-cli:latest-php-8.3 AS shopware-cli
|
||||||
|
|
||||||
|
# build
|
||||||
|
|
||||||
|
FROM shopware-cli as build
|
||||||
|
|
||||||
|
ARG SHOPWARE_PACKAGES_TOKEN
|
||||||
|
|
||||||
|
ADD . /src
|
||||||
|
WORKDIR /src
|
||||||
|
|
||||||
|
RUN --mount=type=secret,id=composer_auth,dst=/src/auth.json \
|
||||||
|
--mount=type=cache,target=/root/.composer \
|
||||||
|
--mount=type=cache,target=/root/.npm \
|
||||||
|
/usr/local/bin/entrypoint.sh shopware-cli project ci /src
|
||||||
|
|
||||||
|
FROM base-image
|
||||||
|
|
||||||
|
COPY --from=build --chown=82 --link /src /var/www/html
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
9
shopware6/LICENSE
Normal file
9
shopware6/LICENSE
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 shopware AG
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
11
shopware6/bin/.htaccess
Normal file
11
shopware6/bin/.htaccess
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<Files ~ ".*">
|
||||||
|
# Deny all requests from Apache 2.4+.
|
||||||
|
<IfModule mod_authz_core.c>
|
||||||
|
Require all denied
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Deny all requests from Apache 2.0-2.2.
|
||||||
|
<IfModule !mod_authz_core.c>
|
||||||
|
Deny from all
|
||||||
|
</IfModule>
|
||||||
|
</Files>
|
||||||
112
shopware6/bin/build-administration.sh
Normal file
112
shopware6/bin/build-administration.sh
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
unset CDPATH
|
||||||
|
CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
|
||||||
|
|
||||||
|
export PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
|
||||||
|
export ENV_FILE=${ENV_FILE:-"${PROJECT_ROOT}/.env"}
|
||||||
|
export NPM_CONFIG_FUND=false
|
||||||
|
export NPM_CONFIG_AUDIT=false
|
||||||
|
export NPM_CONFIG_UPDATE_NOTIFIER=false
|
||||||
|
|
||||||
|
# shellcheck source=functions.sh
|
||||||
|
source "${PROJECT_ROOT}/bin/functions.sh"
|
||||||
|
|
||||||
|
curenv=$(declare -p -x)
|
||||||
|
|
||||||
|
load_dotenv "$ENV_FILE"
|
||||||
|
|
||||||
|
# Restore environment variables set globally
|
||||||
|
set -o allexport
|
||||||
|
eval "$curenv"
|
||||||
|
set +o allexport
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
export APP_URL
|
||||||
|
export PROJECT_ROOT
|
||||||
|
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
|
||||||
|
|
||||||
|
if [[ -e "${PROJECT_ROOT}/vendor/shopware/platform" ]]; then
|
||||||
|
ADMIN_ROOT="${ADMIN_ROOT:-"${PROJECT_ROOT}/vendor/shopware/platform/src/Administration"}"
|
||||||
|
else
|
||||||
|
ADMIN_ROOT="${ADMIN_ROOT:-"${PROJECT_ROOT}/vendor/shopware/administration"}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export ADMIN_ROOT
|
||||||
|
|
||||||
|
BIN_TOOL="${CWD}/console"
|
||||||
|
|
||||||
|
if [[ ${CI:-""} ]]; then
|
||||||
|
BIN_TOOL="${CWD}/ci"
|
||||||
|
|
||||||
|
if [[ ! -x "$BIN_TOOL" ]]; then
|
||||||
|
chmod +x "$BIN_TOOL"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# build admin
|
||||||
|
[[ ${SHOPWARE_SKIP_BUNDLE_DUMP:-""} ]] || "${BIN_TOOL}" bundle:dump
|
||||||
|
"${BIN_TOOL}" feature:dump || true
|
||||||
|
|
||||||
|
if [[ $(command -v jq) ]]; then
|
||||||
|
OLDPWD=$(pwd)
|
||||||
|
cd "$PROJECT_ROOT" || exit
|
||||||
|
basePaths=()
|
||||||
|
|
||||||
|
while read -r config; do
|
||||||
|
srcPath=$(echo "$config" | jq -r '(.basePath + .administration.path)')
|
||||||
|
basePath=$(echo "$config" | jq -r '.basePath')
|
||||||
|
|
||||||
|
# the package.json files are always one upper
|
||||||
|
path=$(dirname "$srcPath")
|
||||||
|
name=$(echo "$config" | jq -r '.technicalName' )
|
||||||
|
|
||||||
|
skippingEnvVarName="SKIP_$(echo "$name" | sed -e 's/\([a-z]\)/\U\1/g' -e 's/-/_/g')"
|
||||||
|
|
||||||
|
if [[ ${!skippingEnvVarName:-""} ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n $srcPath && ! " ${basePaths[*]:-} " =~ " ${basePath} " ]]; then
|
||||||
|
basePaths+=("$basePath")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$path/package.json" && ! -d "$path/node_modules" && $name != "administration" ]]; then
|
||||||
|
echo "=> Installing npm dependencies for ${name}"
|
||||||
|
|
||||||
|
(cd "$path" && npm install --omit=dev --no-audit --prefer-offline)
|
||||||
|
fi
|
||||||
|
done < <(jq -c '.[]' "var/plugins.json")
|
||||||
|
|
||||||
|
for basePath in "${basePaths[@]:-}"; do
|
||||||
|
if [[ -z $basePath ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if [[ -r "${basePath}/package.json" ]]; then
|
||||||
|
echo "=> Installing npm dependencies for ${basePath}"
|
||||||
|
(cd "${basePath}" && npm ci --omit=dev --no-audit --prefer-offline)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -r "${basePath}/../package.json" ]]; then
|
||||||
|
echo "=> Installing npm dependencies for ${basePath}/.."
|
||||||
|
(cd "${basePath}/.." && npm ci --omit=dev --no-audit --prefer-offline)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
cd "$OLDPWD" || exit
|
||||||
|
else
|
||||||
|
echo "Cannot check extensions for required npm installations as jq is not installed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
(cd "${ADMIN_ROOT}"/Resources/app/administration && npm install --prefer-offline --omit=dev)
|
||||||
|
|
||||||
|
# Dump entity schema
|
||||||
|
if [[ -z "${SHOPWARE_SKIP_ENTITY_SCHEMA_DUMP:-""}" ]] && [[ -f "${ADMIN_ROOT}"/Resources/app/administration/scripts/entitySchemaConverter/entity-schema-converter.ts ]]; then
|
||||||
|
mkdir -p "${ADMIN_ROOT}"/Resources/app/administration/test/_mocks_
|
||||||
|
"${BIN_TOOL}" -e prod framework:schema -s 'entity-schema' "${ADMIN_ROOT}"/Resources/app/administration/test/_mocks_/entity-schema.json
|
||||||
|
(cd "${ADMIN_ROOT}"/Resources/app/administration && npm run convert-entity-schema)
|
||||||
|
fi
|
||||||
|
|
||||||
|
(cd "${ADMIN_ROOT}"/Resources/app/administration && npm run build)
|
||||||
|
[[ ${SHOPWARE_SKIP_ASSET_COPY:-""} ]] ||"${BIN_TOOL}" assets:install
|
||||||
14
shopware6/bin/build-js.sh
Normal file
14
shopware6/bin/build-js.sh
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
BIN_DIR="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
|
||||||
|
if [[ -e "${BIN_DIR}/build-administration.sh" ]]; then
|
||||||
|
"${BIN_DIR}/build-administration.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -e "${BIN_DIR}/build-storefront.sh" ]]; then
|
||||||
|
"${BIN_DIR}/build-storefront.sh"
|
||||||
|
fi
|
||||||
93
shopware6/bin/build-storefront.sh
Normal file
93
shopware6/bin/build-storefront.sh
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
unset CDPATH
|
||||||
|
CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
|
||||||
|
export PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
|
||||||
|
export NPM_CONFIG_FUND=false
|
||||||
|
export NPM_CONFIG_AUDIT=false
|
||||||
|
export NPM_CONFIG_UPDATE_NOTIFIER=false
|
||||||
|
|
||||||
|
if [[ -e "${PROJECT_ROOT}/vendor/shopware/platform" ]]; then
|
||||||
|
STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/platform/src/Storefront"}"
|
||||||
|
else
|
||||||
|
STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/storefront"}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
BIN_TOOL="${CWD}/console"
|
||||||
|
|
||||||
|
if [[ ${CI:-""} ]]; then
|
||||||
|
BIN_TOOL="${CWD}/ci"
|
||||||
|
|
||||||
|
if [[ ! -x "$BIN_TOOL" ]]; then
|
||||||
|
chmod +x "$BIN_TOOL"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# build storefront
|
||||||
|
[[ ${SHOPWARE_SKIP_BUNDLE_DUMP:-""} ]] || "${BIN_TOOL}" bundle:dump
|
||||||
|
[[ ${SHOPWARE_SKIP_FEATURE_DUMP:-""} ]] || "${BIN_TOOL}" feature:dump
|
||||||
|
|
||||||
|
if [[ $(command -v jq) ]]; then
|
||||||
|
OLDPWD=$(pwd)
|
||||||
|
cd "$PROJECT_ROOT" || exit
|
||||||
|
basePaths=()
|
||||||
|
|
||||||
|
while read -r config; do
|
||||||
|
srcPath=$(echo "$config" | jq -r '(.basePath + .storefront.path)')
|
||||||
|
basePath=$(echo "$config" | jq -r '.basePath')
|
||||||
|
|
||||||
|
# the package.json files are always one upper
|
||||||
|
path=$(dirname "$srcPath")
|
||||||
|
name=$(echo "$config" | jq -r '.technicalName' )
|
||||||
|
|
||||||
|
skippingEnvVarName="SKIP_$(echo "$name" | sed -e 's/\([a-z]\)/\U\1/g' -e 's/-/_/g')"
|
||||||
|
|
||||||
|
if [[ ${!skippingEnvVarName:-""} ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n $srcPath && ! " ${basePaths[*]:-} " =~ " ${basePath} " ]]; then
|
||||||
|
|
||||||
|
basePaths+=("$basePath")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$path/package.json" && ! -d "$path/node_modules" && $name != "storefront" ]]; then
|
||||||
|
echo "=> Installing npm dependencies for ${name}"
|
||||||
|
|
||||||
|
(cd "$path" && npm install --prefer-offline)
|
||||||
|
fi
|
||||||
|
done < <(jq -c '.[]' "var/plugins.json")
|
||||||
|
|
||||||
|
for basePath in "${basePaths[@]:-}"; do
|
||||||
|
if [[ -z $basePath ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if [[ -r "${basePath}/package.json" ]]; then
|
||||||
|
echo "=> Installing npm dependencies for ${basePath}"
|
||||||
|
(cd "${basePath}" && npm ci --omit=dev --no-audit --prefer-offline)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -r "${basePath}/../package.json" ]]; then
|
||||||
|
echo "=> Installing npm dependencies for ${basePath}/.."
|
||||||
|
(cd "${basePath}/.." && npm ci --omit=dev --no-audit --prefer-offline)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
cd "$OLDPWD" || exit
|
||||||
|
else
|
||||||
|
echo "Cannot check extensions for required npm installations as jq is not installed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront install --prefer-offline --omit=dev
|
||||||
|
node "${STOREFRONT_ROOT}"/Resources/app/storefront/copy-to-vendor.js
|
||||||
|
npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront run production
|
||||||
|
[[ ${SHOPWARE_SKIP_ASSET_COPY:-""} ]] ||"${BIN_TOOL}" assets:install
|
||||||
|
[[ ${SHOPWARE_SKIP_THEME_COMPILE:-""} ]] || "${BIN_TOOL}" theme:compile --active-only
|
||||||
|
|
||||||
|
if ! [ "${1:-default}" = "--keep-cache" ]; then
|
||||||
|
"${BIN_TOOL}" cache:clear
|
||||||
|
fi
|
||||||
55
shopware6/bin/ci
Normal file
55
shopware6/bin/ci
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
|
||||||
|
use Shopware\Core\Framework\Plugin\KernelPluginLoader\ComposerPluginLoader;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Console\Application;
|
||||||
|
use Symfony\Component\Console\Input\ArgvInput;
|
||||||
|
|
||||||
|
if (!file_exists(__DIR__ . '/../.env') && !file_exists(__DIR__ . '/../.env.dist') && !file_exists(__DIR__ . '/../.env.local.php')) {
|
||||||
|
$_SERVER['APP_RUNTIME_OPTIONS']['disable_dotenv'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../vendor/autoload_runtime.php';
|
||||||
|
|
||||||
|
return static function (array &$context) {
|
||||||
|
set_time_limit(0);
|
||||||
|
|
||||||
|
$classLoader = require __DIR__ . '/../vendor/autoload.php';
|
||||||
|
|
||||||
|
if (!class_exists(Application::class)) {
|
||||||
|
throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($context['PROJECT_ROOT'])) {
|
||||||
|
$context['PROJECT_ROOT'] = dirname(__DIR__);
|
||||||
|
}
|
||||||
|
|
||||||
|
$input = new ArgvInput();
|
||||||
|
$env = $input->getParameterOption(['--env', '-e'], $context['APP_ENV'] ?? 'prod', true);
|
||||||
|
$debug = ($context['APP_DEBUG'] ?? ($env !== 'prod')) && !$input->hasParameterOption('--no-debug', true);
|
||||||
|
|
||||||
|
if ($input->getFirstArgument() === 'system:install') {
|
||||||
|
$context['INSTALL'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (trim($context['DATABASE_URL'] ?? '') === '') {
|
||||||
|
// fake DATABASE_URL
|
||||||
|
$_SERVER['DATABASE_URL'] = 'mysql://_placeholder.test';
|
||||||
|
}
|
||||||
|
|
||||||
|
$kernel = KernelFactory::create(
|
||||||
|
environment: $env,
|
||||||
|
debug: $debug,
|
||||||
|
classLoader: $classLoader,
|
||||||
|
pluginLoader: new ComposerPluginLoader($classLoader, null),
|
||||||
|
);
|
||||||
|
|
||||||
|
$application = new Application($kernel);
|
||||||
|
$kernel->boot();
|
||||||
|
|
||||||
|
$application->setName('Shopware');
|
||||||
|
$application->setVersion($kernel->getContainer()->getParameter('kernel.shopware_version'));
|
||||||
|
|
||||||
|
return $application;
|
||||||
|
};
|
||||||
66
shopware6/bin/console
Normal file
66
shopware6/bin/console
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
|
||||||
|
use Shopware\Core\Framework\Plugin\KernelPluginLoader\ComposerPluginLoader;
|
||||||
|
use Shopware\Core\Framework\Plugin\KernelPluginLoader\DbalKernelPluginLoader;
|
||||||
|
use Shopware\Core\Framework\Plugin\KernelPluginLoader\StaticKernelPluginLoader;
|
||||||
|
use Shopware\Core\Kernel;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Console\Application;
|
||||||
|
use Symfony\Component\Console\Input\ArgvInput;
|
||||||
|
|
||||||
|
$envFile = __DIR__ . '/../.env';
|
||||||
|
|
||||||
|
if (!file_exists(__DIR__ . '/../.env') && !file_exists(__DIR__ . '/../.env.dist') && !file_exists(__DIR__ . '/../.env.local.php')) {
|
||||||
|
$_SERVER['APP_RUNTIME_OPTIONS']['disable_dotenv'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../vendor/autoload_runtime.php';
|
||||||
|
|
||||||
|
return static function (array &$context) {
|
||||||
|
set_time_limit(0);
|
||||||
|
|
||||||
|
$classLoader = require __DIR__ . '/../vendor/autoload.php';
|
||||||
|
|
||||||
|
if (!class_exists(Application::class)) {
|
||||||
|
throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($context['PROJECT_ROOT'])) {
|
||||||
|
$context['PROJECT_ROOT'] = dirname(__DIR__);
|
||||||
|
}
|
||||||
|
|
||||||
|
$input = new ArgvInput();
|
||||||
|
$env = $input->getParameterOption(['--env', '-e'], $context['APP_ENV'] ?? 'prod', true);
|
||||||
|
$debug = ($context['APP_DEBUG'] ?? ($env !== 'prod')) && !$input->hasParameterOption('--no-debug', true);
|
||||||
|
|
||||||
|
$pluginLoader = new StaticKernelPluginLoader($classLoader, null);
|
||||||
|
|
||||||
|
if ($input->getFirstArgument() === 'system:install') {
|
||||||
|
$context['INSTALL'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($context['INSTALL'])) {
|
||||||
|
$useComposerPluginLoader = (bool) ($context['COMPOSER_PLUGIN_LOADER'] ?? false);
|
||||||
|
if ($useComposerPluginLoader) {
|
||||||
|
$pluginLoader = new ComposerPluginLoader($classLoader, null);
|
||||||
|
} elseif (trim($context['DATABASE_URL'] ?? '') !== '') {
|
||||||
|
$pluginLoader = new DbalKernelPluginLoader($classLoader, null, Kernel::getConnection());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$kernel = KernelFactory::create(
|
||||||
|
environment: $env,
|
||||||
|
debug: $debug,
|
||||||
|
classLoader: $classLoader,
|
||||||
|
pluginLoader: $pluginLoader,
|
||||||
|
);
|
||||||
|
|
||||||
|
$application = new Application($kernel);
|
||||||
|
$kernel->boot();
|
||||||
|
|
||||||
|
$application->setName('Shopware');
|
||||||
|
$application->setVersion($kernel->getContainer()->getParameter('kernel.shopware_version'));
|
||||||
|
|
||||||
|
return $application;
|
||||||
|
};
|
||||||
39
shopware6/bin/functions.sh
Normal file
39
shopware6/bin/functions.sh
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
load_dotenv() {
|
||||||
|
LOAD_DOTENV=${LOAD_DOTENV:-"1"}
|
||||||
|
|
||||||
|
if [[ "$LOAD_DOTENV" == "0" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
CURRENT_ENV=${APP_ENV:-"dev"}
|
||||||
|
env_file="$1"
|
||||||
|
|
||||||
|
# If we have an actual .env file load it
|
||||||
|
if [[ -e "$env_file" ]]; then
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
source "$env_file"
|
||||||
|
elif [[ -e "$env_file.dist" ]]; then
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
source "$env_file.dist"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If we have an local env file load it
|
||||||
|
if [[ -e "$env_file.local" ]]; then
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
source "$env_file.local"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If we have an env file for the current env load it
|
||||||
|
if [[ -e "$env_file.$CURRENT_ENV" ]]; then
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
source "$env_file.$CURRENT_ENV"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If we have an env file for the current env load it'
|
||||||
|
if [[ -e "$env_file.$CURRENT_ENV.local" ]]; then
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
source "$env_file.$CURRENT_ENV.local"
|
||||||
|
fi
|
||||||
|
}
|
||||||
78
shopware6/bin/watch-administration.sh
Normal file
78
shopware6/bin/watch-administration.sh
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
|
||||||
|
|
||||||
|
export PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
|
||||||
|
export ENV_FILE=${ENV_FILE:-"${PROJECT_ROOT}/.env"}
|
||||||
|
|
||||||
|
# shellcheck source=functions.sh
|
||||||
|
source "${PROJECT_ROOT}/bin/functions.sh"
|
||||||
|
|
||||||
|
curenv=$(declare -p -x)
|
||||||
|
|
||||||
|
load_dotenv "$ENV_FILE"
|
||||||
|
|
||||||
|
# Restore environment variables set globally
|
||||||
|
set -o allexport
|
||||||
|
eval "$curenv"
|
||||||
|
set +o allexport
|
||||||
|
|
||||||
|
export HOST=${HOST:-"localhost"}
|
||||||
|
export VITE_HOST
|
||||||
|
export ADMIN_PORT
|
||||||
|
export APP_URL
|
||||||
|
export SHOPWARE_ADMIN_SKIP_SOURCEMAP_GENERATION
|
||||||
|
export DISABLE_DEVSERVER_OPEN
|
||||||
|
export DDEV_PRIMARY_URL
|
||||||
|
|
||||||
|
if [[ -e "${PROJECT_ROOT}/vendor/shopware/platform" ]]; then
|
||||||
|
ADMIN_ROOT="${ADMIN_ROOT:-"${PROJECT_ROOT}/vendor/shopware/platform/src/Administration"}"
|
||||||
|
else
|
||||||
|
ADMIN_ROOT="${ADMIN_ROOT:-"${PROJECT_ROOT}/vendor/shopware/administration"}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export ADMIN_ROOT
|
||||||
|
|
||||||
|
BIN_TOOL="${CWD}/console"
|
||||||
|
|
||||||
|
[[ ${SHOPWARE_SKIP_BUNDLE_DUMP:-""} ]] || "${BIN_TOOL}" bundle:dump
|
||||||
|
"${BIN_TOOL}" feature:dump || true
|
||||||
|
|
||||||
|
if [[ $(command -v jq) ]]; then
|
||||||
|
OLDPWD=$(pwd)
|
||||||
|
cd "$PROJECT_ROOT" || exit
|
||||||
|
|
||||||
|
jq -c '.[]' "var/plugins.json" | while read -r config; do
|
||||||
|
srcPath=$(echo "$config" | jq -r '(.basePath + .administration.path)')
|
||||||
|
|
||||||
|
# the package.json files are always one upper
|
||||||
|
path=$(dirname "$srcPath")
|
||||||
|
name=$(echo "$config" | jq -r '.technicalName' )
|
||||||
|
|
||||||
|
skippingEnvVarName="SKIP_$(echo "$name" | sed -e 's/\([a-z]\)/\U\1/g' -e 's/-/_/g')"
|
||||||
|
|
||||||
|
if [[ ${!skippingEnvVarName:-""} ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$path/package.json" && ! -d "$path/node_modules" && $name != "administration" ]]; then
|
||||||
|
echo "=> Installing npm dependencies for ${name}"
|
||||||
|
|
||||||
|
(cd "$path" && npm install --omit=dev)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
cd "$OLDPWD" || exit
|
||||||
|
else
|
||||||
|
echo "Cannot check extensions for required npm installations as jq is not installed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
(cd "${ADMIN_ROOT}"/Resources/app/administration && npm install --prefer-offline)
|
||||||
|
|
||||||
|
# Dump entity schema
|
||||||
|
if [[ -z "${SHOPWARE_SKIP_ENTITY_SCHEMA_DUMP:-""}" ]] && [[ -f "${ADMIN_ROOT}"/Resources/app/administration/scripts/entitySchemaConverter/entity-schema-converter.ts ]]; then
|
||||||
|
mkdir -p "${ADMIN_ROOT}"/Resources/app/administration/test/_mocks_
|
||||||
|
"${BIN_TOOL}" -e prod framework:schema -s 'entity-schema' "${ADMIN_ROOT}"/Resources/app/administration/test/_mocks_/entity-schema.json
|
||||||
|
(cd "${ADMIN_ROOT}"/Resources/app/administration && npm run convert-entity-schema)
|
||||||
|
fi
|
||||||
|
|
||||||
|
(cd "${ADMIN_ROOT}"/Resources/app/administration && npm run dev)
|
||||||
78
shopware6/bin/watch-storefront.sh
Normal file
78
shopware6/bin/watch-storefront.sh
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
|
||||||
|
|
||||||
|
export PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
|
||||||
|
export ENV_FILE=${ENV_FILE:-"${PROJECT_ROOT}/.env"}
|
||||||
|
export NPM_CONFIG_FUND=false
|
||||||
|
export NPM_CONFIG_AUDIT=false
|
||||||
|
export NPM_CONFIG_UPDATE_NOTIFIER=false
|
||||||
|
|
||||||
|
# shellcheck source=functions.sh
|
||||||
|
source "${PROJECT_ROOT}/bin/functions.sh"
|
||||||
|
|
||||||
|
curenv=$(declare -p -x)
|
||||||
|
|
||||||
|
load_dotenv "$ENV_FILE"
|
||||||
|
|
||||||
|
# Restore environment variables set globally
|
||||||
|
set -o allexport
|
||||||
|
eval "$curenv"
|
||||||
|
set +o allexport
|
||||||
|
|
||||||
|
export APP_URL
|
||||||
|
export PROXY_URL
|
||||||
|
export STOREFRONT_ASSETS_PORT
|
||||||
|
export STOREFRONT_PROXY_PORT
|
||||||
|
export STOREFRONT_HTTPS_KEY_FILE
|
||||||
|
export STOREFRONT_HTTPS_CERTIFICATE_FILE
|
||||||
|
export STOREFRONT_SKIP_SSL_CERT
|
||||||
|
|
||||||
|
if [[ -e "${PROJECT_ROOT}/vendor/shopware/platform" ]]; then
|
||||||
|
STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/platform/src/Storefront"}"
|
||||||
|
else
|
||||||
|
STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/storefront"}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "${STOREFRONT_ROOT}"/Resources/app/storefront/node_modules/webpack-dev-server ]]; then
|
||||||
|
npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront install --prefer-offline
|
||||||
|
fi
|
||||||
|
|
||||||
|
"${CWD}"/console bundle:dump
|
||||||
|
"${CWD}"/console feature:dump
|
||||||
|
"${CWD}"/console theme:compile --active-only
|
||||||
|
if [[ -n "$1" ]]; then
|
||||||
|
"${CWD}"/console theme:dump --theme-name="$1"
|
||||||
|
else
|
||||||
|
"${CWD}"/console theme:dump
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $(command -v jq) ]]; then
|
||||||
|
OLDPWD=$(pwd)
|
||||||
|
cd "$PROJECT_ROOT" || exit
|
||||||
|
|
||||||
|
jq -c '.[]' "var/plugins.json" | while read -r config; do
|
||||||
|
srcPath=$(echo "$config" | jq -r '(.basePath + .storefront.path)')
|
||||||
|
|
||||||
|
# the package.json files are always one upper
|
||||||
|
path=$(dirname "$srcPath")
|
||||||
|
name=$(echo "$config" | jq -r '.technicalName' )
|
||||||
|
|
||||||
|
skippingEnvVarName="SKIP_$(echo "$name" | sed -e 's/\([a-z]\)/\U\1/g' -e 's/-/_/g')"
|
||||||
|
|
||||||
|
if [[ ${!skippingEnvVarName:-""} ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$path/package.json" && ! -d "$path/node_modules" && $name != "storefront" ]]; then
|
||||||
|
echo "=> Installing npm dependencies for ${name}"
|
||||||
|
|
||||||
|
(cd "$path" && npm install)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
cd "$OLDPWD" || exit
|
||||||
|
else
|
||||||
|
echo "Cannot check extensions for required npm installations as jq is not installed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront run-script hot-proxy
|
||||||
72
shopware6/composer.json
Normal file
72
shopware6/composer.json
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"name": "shopware/production",
|
||||||
|
"license": "MIT",
|
||||||
|
"type": "project",
|
||||||
|
"require": {
|
||||||
|
"composer-runtime-api": "^2.0",
|
||||||
|
"shopware/administration": "*",
|
||||||
|
"shopware/core": "v6.7.5.0",
|
||||||
|
"shopware/elasticsearch": "*",
|
||||||
|
"shopware/storefront": "*",
|
||||||
|
"shopware/deployment-helper": "^0.0.12",
|
||||||
|
"symfony/flex": "~2"
|
||||||
|
},
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "path",
|
||||||
|
"url": "custom/plugins/*",
|
||||||
|
"options": {
|
||||||
|
"symlink": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "path",
|
||||||
|
"url": "custom/plugins/*/packages/*",
|
||||||
|
"options": {
|
||||||
|
"symlink": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "path",
|
||||||
|
"url": "custom/static-plugins/*",
|
||||||
|
"options": {
|
||||||
|
"symlink": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"App\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"prefer-stable": true,
|
||||||
|
"config": {
|
||||||
|
"allow-plugins": {
|
||||||
|
"symfony/flex": true,
|
||||||
|
"symfony/runtime": true
|
||||||
|
},
|
||||||
|
"optimize-autoloader": true,
|
||||||
|
"sort-packages": true
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"auto-scripts": {
|
||||||
|
"assets:install": "symfony-cmd"
|
||||||
|
},
|
||||||
|
"post-install-cmd": [
|
||||||
|
"@auto-scripts"
|
||||||
|
],
|
||||||
|
"post-update-cmd": [
|
||||||
|
"@auto-scripts"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"symfony": {
|
||||||
|
"allow-contrib": true,
|
||||||
|
"endpoint": [
|
||||||
|
"https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json",
|
||||||
|
"flex://defaults"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11316
shopware6/composer.lock
generated
Normal file
11316
shopware6/composer.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
20
shopware6/config/bundles.php
Normal file
20
shopware6/config/bundles.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
|
||||||
|
Shopware\Core\Framework\Framework::class => ['all' => true],
|
||||||
|
Shopware\Core\System\System::class => ['all' => true],
|
||||||
|
Shopware\Core\Content\Content::class => ['all' => true],
|
||||||
|
Shopware\Core\Checkout\Checkout::class => ['all' => true],
|
||||||
|
Shopware\Core\Maintenance\Maintenance::class => ['all' => true],
|
||||||
|
Shopware\Core\DevOps\DevOps::class => ['e2e' => true],
|
||||||
|
Shopware\Core\Profiling\Profiling::class => ['all' => true],
|
||||||
|
Shopware\Core\Service\Service::class => ['all' => true],
|
||||||
|
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
|
||||||
|
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
|
||||||
|
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true],
|
||||||
|
Pentatrion\ViteBundle\PentatrionViteBundle::class => ['all' => true],
|
||||||
|
Shopware\Administration\Administration::class => ['all' => true],
|
||||||
|
Shopware\Elasticsearch\Elasticsearch::class => ['all' => true],
|
||||||
|
Shopware\Storefront\Storefront::class => ['all' => true],
|
||||||
|
];
|
||||||
3
shopware6/config/jwt/.gitignore
vendored
Normal file
3
shopware6/config/jwt/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
*
|
||||||
|
|
||||||
|
!.gitignore
|
||||||
2
shopware6/config/packages/lock.yaml
Normal file
2
shopware6/config/packages/lock.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
framework:
|
||||||
|
lock: '%env(LOCK_DSN)%'
|
||||||
11
shopware6/config/packages/nyholm_psr7.yaml
Normal file
11
shopware6/config/packages/nyholm_psr7.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
services:
|
||||||
|
# Register nyholm/psr7 services for autowiring with PSR-17 (HTTP factories)
|
||||||
|
Psr\Http\Message\RequestFactoryInterface: '@nyholm.psr7.psr17_factory'
|
||||||
|
Psr\Http\Message\ResponseFactoryInterface: '@nyholm.psr7.psr17_factory'
|
||||||
|
Psr\Http\Message\ServerRequestFactoryInterface: '@nyholm.psr7.psr17_factory'
|
||||||
|
Psr\Http\Message\StreamFactoryInterface: '@nyholm.psr7.psr17_factory'
|
||||||
|
Psr\Http\Message\UploadedFileFactoryInterface: '@nyholm.psr7.psr17_factory'
|
||||||
|
Psr\Http\Message\UriFactoryInterface: '@nyholm.psr7.psr17_factory'
|
||||||
|
|
||||||
|
nyholm.psr7.psr17_factory:
|
||||||
|
class: Nyholm\Psr7\Factory\Psr17Factory
|
||||||
5
shopware6/config/routes.yaml
Normal file
5
shopware6/config/routes.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
controllers:
|
||||||
|
resource:
|
||||||
|
path: ../src/Controller/
|
||||||
|
namespace: App\Controller
|
||||||
|
type: attribute
|
||||||
27
shopware6/config/services.yaml
Normal file
27
shopware6/config/services.yaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# This file is the entry point to configure your own services.
|
||||||
|
# Files in the packages/ subdirectory configure your dependencies.
|
||||||
|
|
||||||
|
# Put parameters here that don't need to change on each machine where the app is deployed
|
||||||
|
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
|
||||||
|
parameters:
|
||||||
|
shopware.store.frw: '1'
|
||||||
|
default_cdn_strategy: 'physical_filename'
|
||||||
|
shopware.cdn.strategy: '%env(default:default_cdn_strategy:SHOPWARE_CDN_STRATEGY_DEFAULT)%'
|
||||||
|
env(OPENSEARCH_URL): 'http://localhost:9200'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# default configuration for services in *this* file
|
||||||
|
_defaults:
|
||||||
|
autowire: true # Automatically injects dependencies in your services.
|
||||||
|
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
|
||||||
|
# Binding arguments by name or type
|
||||||
|
# https://symfony.com/doc/current/service_container.html#binding-arguments-by-name-or-type
|
||||||
|
#bind:
|
||||||
|
# 'bool $isDebug': '%kernel.debug%'
|
||||||
|
|
||||||
|
App\:
|
||||||
|
resource: '../src/'
|
||||||
|
exclude:
|
||||||
|
- '../src/DependencyInjection/'
|
||||||
|
- '../src/Entity/'
|
||||||
|
- '../src/Kernel.php'
|
||||||
11
shopware6/custom/.htaccess
Normal file
11
shopware6/custom/.htaccess
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<Files ~ ".*">
|
||||||
|
# Deny all requests from Apache 2.4+.
|
||||||
|
<IfModule mod_authz_core.c>
|
||||||
|
Require all denied
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Deny all requests from Apache 2.0-2.2.
|
||||||
|
<IfModule !mod_authz_core.c>
|
||||||
|
Deny from all
|
||||||
|
</IfModule>
|
||||||
|
</Files>
|
||||||
0
shopware6/custom/apps/.gitignore
vendored
Normal file
0
shopware6/custom/apps/.gitignore
vendored
Normal file
0
shopware6/custom/plugins/.gitignore
vendored
Normal file
0
shopware6/custom/plugins/.gitignore
vendored
Normal file
0
shopware6/custom/static-plugins/.gitignore
vendored
Normal file
0
shopware6/custom/static-plugins/.gitignore
vendored
Normal file
118
shopware6/docker-compose.yaml
Normal file
118
shopware6/docker-compose.yaml
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
x-environment: &shopware
|
||||||
|
environment:
|
||||||
|
APP_ENV: "${APP_ENV}"
|
||||||
|
DATABASE_URL: "${DATABASE_URL}"
|
||||||
|
DATABASE_HOST: "${DATABASE_HOST}"
|
||||||
|
APP_URL: "${APP_URL}"
|
||||||
|
APP_SECRET: "${APP_SECRET}"
|
||||||
|
JWT_PRIVATE_KEY: "${JWT_PRIVATE_KEY}"
|
||||||
|
JWT_PUBLIC_KEY: "${JWT_PUBLIC_KEY}"
|
||||||
|
PHP_SESSION_HANDLER: "${PHP_SESSION_HANDLER}"
|
||||||
|
PHP_SESSION_SAVE_PATH: "${PHP_SESSION_SAVE_PATH}"
|
||||||
|
volumes:
|
||||||
|
- files:/var/www/html/files
|
||||||
|
- theme:/var/www/html/public/theme
|
||||||
|
- media:/var/www/html/public/media
|
||||||
|
- thumbnail:/var/www/html/public/thumbnail
|
||||||
|
- sitemap:/var/www/html/public/sitemap
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
image: shopware6
|
||||||
|
<<: *shopware
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
depends_on:
|
||||||
|
init:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
environment:
|
||||||
|
SERVICE_URL_WEB_8000:
|
||||||
|
APP_ENV: "${APP_ENV:-prod}"
|
||||||
|
DATABASE_URL: "${DATABASE_URL:-mysql://shopware:shopware@database/shopware}"
|
||||||
|
DATABASE_HOST: "${DATABASE_HOST:-database}"
|
||||||
|
APP_URL: "${APP_URL:-$SERVICE_URL_WEB}"
|
||||||
|
APP_SECRET: "${APP_SECRET:-b15bed7d8d3ccecf7b13fb0822f4fc6d}"
|
||||||
|
JWT_PRIVATE_KEY: "${JWT_PRIVATE_KEY:-LS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGSERCT0Jna3Foa2lHOXcwQkJRMHdRVEFwQmdrcWhraUc5dzBCQlF3d0hBUUlFOE5rWmE0ck1PVUNBZ2dBCk1Bd0dDQ3FHU0liM0RRSUpCUUF3RkFZSUtvWklodmNOQXdjRUNQeHVabVIrWWV6QUJJSUV5QVVPM0pBcjV5K0QKTDRvTzRGM0JlL1Z1Slp5QlRPRFdQcU1BNzZ2SUF4K3lDUmZBTVIxRWw4MlNwRUdiSUZVSTA0VTRqUERTeER6aAoxd2dkemQyZHJSMjl2UCtKdjl3ekhjbDBib3g1dnd0ZmFxdEdFcjg0UnQ5aTl5aHpINkJ3MnZMQ21NQVNac0pPCjVrNEdERnhSTDhudWxTVXZtcjA1RUNnVEdQMndraXMzRThtRTU0Q3UrSlpLVzFwN0lkcmdJd3BSSWwwNUhLWVAKSFRGbGJaNURpb3dFelF3Qm42K25TbE40OUJneE1ZM1cxdkhrWTRDaVdZNUJTOENYcHoweGRvNnBzSTRuZ2dpLwpId2xBTVpDVGQvdFZnMW5VMkdRcGNRTkpPZm1TSW0xcWlNeGpSbE5iV2tIbmMvMkwya3AveWs5cFo4aTIwTFhrCnYxZHVHNUZvclRsL1JyNnE0SWtBV1FNbUZUcDdNanpzbmozMDB3SkcwTDREUDFXQTN4VVNKbDQ2SlRVZU9IcncKbEJxZ2xZQ0tPaFVWMFRmdW9scGNrYjcwQXduZm9wSXV0eXpuS0FJYjRFMUJXY25mN3U0K0VrME5pbEdlbXdodQorWmlSaDZGakptM3ROQ0VBWFhVbGVVRVV2eUFpK1VqQXlUMXh0VFFURTdaaXpoa3JBSHlFbHEvR0ZFQ0JOOHVlCjFSV05IYW5zbEl5RnlySk5XcGw3S0lFM09NMnZTbERaRkx3cUVIbkZnYTZza05pZEVtTW1EL2o1Ny9kMkJNeDAKWFVJRXNadFY4S2Q5aDJ0eFdwR0Y4MEZqNHF0cDVud0s3ajd4MUtxa1cwM041aGtrZVZzSm5DRko2U3ZnS0x1ZAp2ZnV3bjVoc3NBZlhLK0tQU1NJYlNaMSs4V0c3dm5MbDVqZ0NuMUVuVHBLVDFPNGRoMXBRVE1hR0EvU0FyVFJxCldTcUZqbFZkbjdaNEVnckVuN0p4bTQxNGptenJCMVBFNUhrYVZnWWs2S3ByNk8yWW9TVDUvSlJhU1ZQVHpJeGYKNit6R09ONk5NMXdzbHRXQk5zUUxWc3NoWHNVVXlzeWtCZXN0b0RWRGtYdE1ZS1dmdlorVFRndzlQUVNzQVU5cQo4dlZvMXZNNXpIV1VuWVhlZitJbmJHcEdpOEJ4cmlKMkVhNFN3YjBUWEJITngvZDR1U281c2dXVXFvcVRRTENsCjNNS1Q3aWpGRFZJQ3VkelI2elU4cDJhbWdjU3RBQlAwbWpsQ2ZrckhtRGFOdExYdEJ0ZWJVK0VPYzVFSHRTTlkKZ0lWSStORUl1bjlRVllaYm1RbGRhU3lhTGpkWi92cndhdWcvV1FmZjVuS2NnanhOd2N4Nlc4UXNyajBOWFVmUgpWTGQ4NzZPRDdnT3hRVElMdGF1cW5DYkxDcWlLN2YrUWRuM0M3ekhuL2t2SEdZWVIvcTZXOWF6MVZ2NC9YMDRqCjFLRDVZazRWa2ZEVVZEdjZIVXRZR2ZJeCt3SWllS1NKMFhRbnh5MGJPb0FrbGRyRkxmazhCL1lEVlRaZ3ZoMzEKSUF6VzV2WXczaVM3ZTZ1a0RYNEdoYldEQVg4cDJ0VmRyUGZiWklLMC9zSlFwOUMxbU1uMDI4d3VFUm1vOURHeQpPNnNHN1phdjhJKytkMktrcWYvbzMzU2VIYVVCN2dvRlZtaS9jSGprQngzVVplQ1ByNDRvNENZTjg1RzdJSWFFCmxVa2NqNmFwN2lZUXFOOFVXMC9Rb1NoUXVxK1NZdnRjRWNXY0VUYlBCOElPZXUxa1BvTExPYzdPQ3ZRMlBqcXoKSkpWUGdIRWZJYzVJWldWMXg0MUplMXZWYmM1dGlhNUY2eFB3cWNteDJROEhMOWJiUDc5NHJUU3I5NkZBTnJXbwowMjZaV1VHMlNxbHZWTll4WjkzUWxka2pSaGM2Nm5obEFrdHBlYnJ4N05JQXgxaFhsRHpDaDRvOTF2M3pFUXZtClFQbUVodHZUNTZDZWNaTGprWTdaNVNteTgvbkJPUUdidS9HSjRlcnZqL0M1dzJ2ZlZlL3AzcGo2K3lXeldtZkoKTm5ZL09mMkVlYmlhMmpIcVlpdHlwWEtZSWREclErZVVJQzI2VG1LRkRXKzBMcndOc0gwRFBWOTFWQm5Bd0pQZwpBTnEwdVBGMUlkSUszcjdUMGp2L1RnPT0KLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0K}"
|
||||||
|
JWT_PUBLIC_KEY: "${JWT_PUBLIC_KEY:-LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1NWR5RTFPSzc3V3ZJUnIxcWd5MQpUbjJ3ZVFNREhxSHZqV0JGeE1XbEV6eW14YmpVZzYyT1hpL01SditCRnp0a2JCTVQ3aWtpOHdPdXlJZFBCTVBHCmkrcm15anhIT2I0WEJXdTAyNTdxOWg0UTJYemdyUVZsYjY5MG04SVRTY2hKUVBCc2Z6NnVIWjd3b1VQYXZXTG4KMldybHNIUmQ0S2wwNnpIdzVNelE2bVlqeDI5L2NINkNrbjNNcXVNQW9qTEE4alJLSGVxQ05OSUh2cnkwRnByUQoyaG5VUDdMZThlbU1FeUJtTzBGeHoyYVdsVEo4d3FmVDdMRUYyNVJOaERoNyswc3JJSC9RcnlpRHhVZnBvZTBpCkNLNUVpZVdHMXloeXhMMUZJU2JTVmIvRGZaWHo3NGYzMWp0VWpEaVJuWjF2U0UxNDNGKzdUaFV3alBra0pYcVEKQlFJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==}"
|
||||||
|
PHP_SESSION_HANDLER: "${PHP_SESSION_HANDLER:-redis}"
|
||||||
|
PHP_SESSION_SAVE_PATH: "${PHP_SESSION_SAVE_PATH:-tcp://cache:6379/1}"
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
["CMD", "curl", "-f", "http://localhost:8000/api/_info/health-check"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
database:
|
||||||
|
image: mariadb:11.4
|
||||||
|
environment:
|
||||||
|
MARIADB_ROOT_PASSWORD: "${MARIADB_ROOT_PASSWORD:-shopware}"
|
||||||
|
MARIADB_USER: "${MARIADB_USER:-shopware}"
|
||||||
|
MARIADB_PASSWORD: "${MARIADB_PASSWORD:-shopware}"
|
||||||
|
MARIADB_DATABASE: "${MARIADB_DATABASE:-shopware}"
|
||||||
|
tmpfs:
|
||||||
|
- /var/lib/mysql
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-pshopware"]
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
init-perm:
|
||||||
|
image: alpine
|
||||||
|
<<: *shopware
|
||||||
|
command: chown 82:82 /var/www/html/files /var/www/html/public/theme /var/www/html/public/media /var/www/html/public/thumbnail /var/www/html/public/sitemap
|
||||||
|
restart: "no"
|
||||||
|
exclude_from_hc: true
|
||||||
|
|
||||||
|
init:
|
||||||
|
image: shopware6
|
||||||
|
<<: *shopware
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
entrypoint: ["php", "vendor/bin/shopware-deployment-helper", "run"]
|
||||||
|
restart: "no"
|
||||||
|
exclude_from_hc: true
|
||||||
|
depends_on:
|
||||||
|
database:
|
||||||
|
condition: service_healthy
|
||||||
|
init-perm:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
worker-1: &worker
|
||||||
|
image: shopware6
|
||||||
|
<<: *shopware
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
exclude_from_hc: true
|
||||||
|
volumes_from:
|
||||||
|
- init
|
||||||
|
depends_on:
|
||||||
|
init:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
entrypoint:
|
||||||
|
[
|
||||||
|
"php",
|
||||||
|
"bin/console",
|
||||||
|
"messenger:consume",
|
||||||
|
"async",
|
||||||
|
"low_priority",
|
||||||
|
"--time-limit=300",
|
||||||
|
"--memory-limit=512M",
|
||||||
|
]
|
||||||
|
worker-2: *worker
|
||||||
|
|
||||||
|
scheduled-task:
|
||||||
|
image: shopware6
|
||||||
|
<<: *shopware
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
volumes_from:
|
||||||
|
- init
|
||||||
|
depends_on:
|
||||||
|
init:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
entrypoint: ["php", "bin/console", "scheduled-task:run"]
|
||||||
|
exclude_from_hc: true
|
||||||
|
|
||||||
|
cache:
|
||||||
|
image: valkey/valkey:latest
|
||||||
11
shopware6/files/.htaccess
Normal file
11
shopware6/files/.htaccess
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<Files ~ ".*">
|
||||||
|
# Deny all requests from Apache 2.4+.
|
||||||
|
<IfModule mod_authz_core.c>
|
||||||
|
Require all denied
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Deny all requests from Apache 2.0-2.2.
|
||||||
|
<IfModule !mod_authz_core.c>
|
||||||
|
Deny from all
|
||||||
|
</IfModule>
|
||||||
|
</Files>
|
||||||
45
shopware6/public/.htaccess
Normal file
45
shopware6/public/.htaccess
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# BEGIN Shopware
|
||||||
|
# The directives (lines) between "# BEGIN Shopware" and "# END Shopware" are dynamically generated. Any changes to the directives between these markers will be overwritten.
|
||||||
|
|
||||||
|
DirectoryIndex index.php
|
||||||
|
|
||||||
|
<IfModule mod_negotiation.c>
|
||||||
|
Options -MultiViews
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
|
||||||
|
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
|
||||||
|
RewriteRule ^(.*) - [E=BASE:%1]
|
||||||
|
|
||||||
|
# Sets the HTTP_AUTHORIZATION header removed by Apache
|
||||||
|
RewriteCond %{HTTP:Authorization} .
|
||||||
|
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
||||||
|
|
||||||
|
RewriteCond %{ENV:REDIRECT_STATUS} ^$
|
||||||
|
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
|
||||||
|
|
||||||
|
# If the requested filename exists, simply serve it.
|
||||||
|
# We only want to let Apache serve files and not directories.
|
||||||
|
RewriteCond %{REQUEST_FILENAME} -f
|
||||||
|
RewriteRule ^ - [L]
|
||||||
|
|
||||||
|
# Rewrite all other queries to the front controller.
|
||||||
|
RewriteCond %{REQUEST_URI} !^/(theme|media|thumbnail|bundles|css|fonts|js|recovery)/ [NC]
|
||||||
|
RewriteRule ^ %{ENV:BASE}/index.php [L]
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule !mod_rewrite.c>
|
||||||
|
<IfModule mod_alias.c>
|
||||||
|
RedirectMatch 302 ^/$ /index.php/
|
||||||
|
</IfModule>
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
<FilesMatch "\.(?i:svg)$">
|
||||||
|
Header set Content-Security-Policy "script-src 'none'"
|
||||||
|
</FilesMatch>
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# END Shopware
|
||||||
45
shopware6/public/.htaccess.dist
Normal file
45
shopware6/public/.htaccess.dist
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# BEGIN Shopware
|
||||||
|
# The directives (lines) between "# BEGIN Shopware" and "# END Shopware" are dynamically generated. Any changes to the directives between these markers will be overwritten.
|
||||||
|
|
||||||
|
DirectoryIndex index.php
|
||||||
|
|
||||||
|
<IfModule mod_negotiation.c>
|
||||||
|
Options -MultiViews
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
|
||||||
|
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
|
||||||
|
RewriteRule ^(.*) - [E=BASE:%1]
|
||||||
|
|
||||||
|
# Sets the HTTP_AUTHORIZATION header removed by Apache
|
||||||
|
RewriteCond %{HTTP:Authorization} .
|
||||||
|
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
||||||
|
|
||||||
|
RewriteCond %{ENV:REDIRECT_STATUS} ^$
|
||||||
|
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
|
||||||
|
|
||||||
|
# If the requested filename exists, simply serve it.
|
||||||
|
# We only want to let Apache serve files and not directories.
|
||||||
|
RewriteCond %{REQUEST_FILENAME} -f
|
||||||
|
RewriteRule ^ - [L]
|
||||||
|
|
||||||
|
# Rewrite all other queries to the front controller.
|
||||||
|
RewriteCond %{REQUEST_URI} !^/(theme|media|thumbnail|bundles|css|fonts|js|recovery)/ [NC]
|
||||||
|
RewriteRule ^ %{ENV:BASE}/index.php [L]
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule !mod_rewrite.c>
|
||||||
|
<IfModule mod_alias.c>
|
||||||
|
RedirectMatch 302 ^/$ /index.php/
|
||||||
|
</IfModule>
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
<FilesMatch "\.(?i:svg)$">
|
||||||
|
Header set Content-Security-Policy "script-src 'none'"
|
||||||
|
</FilesMatch>
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# END Shopware
|
||||||
48
shopware6/public/index.php
Normal file
48
shopware6/public/index.php
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
use Shopware\Core\DevOps\Environment\EnvironmentHelper;
|
||||||
|
use Shopware\Core\Framework\Plugin\KernelPluginLoader\ComposerPluginLoader;
|
||||||
|
use Shopware\Core\Installer\InstallerKernel;
|
||||||
|
use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
|
||||||
|
|
||||||
|
$_SERVER['SCRIPT_FILENAME'] = __FILE__;
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../vendor/autoload_runtime.php';
|
||||||
|
|
||||||
|
if (!file_exists(__DIR__ . '/../.env') && !file_exists(__DIR__ . '/../.env.dist') && !file_exists(__DIR__ . '/../.env.local.php')) {
|
||||||
|
$_SERVER['APP_RUNTIME_OPTIONS']['disable_dotenv'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return function (array $context) {
|
||||||
|
$classLoader = require __DIR__ . '/../vendor/autoload.php';
|
||||||
|
|
||||||
|
if (!EnvironmentHelper::getVariable('SHOPWARE_SKIP_WEBINSTALLER', false) && !file_exists(dirname(__DIR__) . '/install.lock')) {
|
||||||
|
$baseURL = str_replace(basename(__FILE__), '', $_SERVER['SCRIPT_NAME']);
|
||||||
|
$baseURL = rtrim($baseURL, '/');
|
||||||
|
|
||||||
|
if (strpos($_SERVER['REQUEST_URI'], '/installer') === false) {
|
||||||
|
header('Location: ' . $baseURL . '/installer');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$appEnv = $context['APP_ENV'] ?? 'dev';
|
||||||
|
$debug = (bool) ($context['APP_DEBUG'] ?? ($appEnv !== 'prod'));
|
||||||
|
|
||||||
|
if (!EnvironmentHelper::getVariable('SHOPWARE_SKIP_WEBINSTALLER', false) && !file_exists(dirname(__DIR__) . '/install.lock')) {
|
||||||
|
return new InstallerKernel($appEnv, $debug);
|
||||||
|
}
|
||||||
|
|
||||||
|
$pluginLoader = null;
|
||||||
|
|
||||||
|
if (EnvironmentHelper::getVariable('COMPOSER_PLUGIN_LOADER', false)) {
|
||||||
|
$pluginLoader = new ComposerPluginLoader($classLoader, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return KernelFactory::create(
|
||||||
|
environment: $appEnv,
|
||||||
|
debug: $debug,
|
||||||
|
classLoader: $classLoader,
|
||||||
|
pluginLoader: $pluginLoader,
|
||||||
|
);
|
||||||
|
};
|
||||||
131
shopware6/public/maintenance.html
Normal file
131
shopware6/public/maintenance.html
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>Wartungsmodus</title>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font:1em monospace,serif}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}
|
||||||
|
|
||||||
|
body, html { min-height: 100%; background: #e9ebed; }
|
||||||
|
.maintenance-container {
|
||||||
|
position: relative;
|
||||||
|
background: #fff;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
-moz-border-radius: 3px;
|
||||||
|
border-radius: 3px;
|
||||||
|
margin: 50px auto;
|
||||||
|
width: 475px;
|
||||||
|
padding: 30px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, .5);
|
||||||
|
-moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, .5);
|
||||||
|
-ms-box-shadow: 0px 1px 3px rgba(0, 0, 0, .5);
|
||||||
|
box-shadow: 0px 1px 3px rgba(0, 0, 0, .5);
|
||||||
|
}
|
||||||
|
.maintenance-headline {
|
||||||
|
font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
||||||
|
font-weight: 300;
|
||||||
|
margin: 0 0 .8em;
|
||||||
|
}
|
||||||
|
.maintenance-text { font-size: 13px }
|
||||||
|
.maintenance-progress {
|
||||||
|
border-top: 1px solid #529e52;
|
||||||
|
height: 4px; width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0; left: 0;
|
||||||
|
background-color: #5eb95e;
|
||||||
|
-webkit-background-size: 40px 40px;
|
||||||
|
-moz-background-size: 40px 40px;
|
||||||
|
-o-background-size: 40px 40px;
|
||||||
|
background-size: 40px 40px;
|
||||||
|
-webkit-animation: progress-bar-stripes 2s linear infinite;
|
||||||
|
-moz-animation: progress-bar-stripes 2s linear infinite;
|
||||||
|
-ms-animation: progress-bar-stripes 2s linear infinite;
|
||||||
|
-o-animation: progress-bar-stripes 2s linear infinite;
|
||||||
|
animation: progress-bar-stripes 2s linear infinite;
|
||||||
|
background-color: #62C462;
|
||||||
|
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, rgba(0, 0, 0, 0)), color-stop(0.5, rgba(0, 0, 0, 0)), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0)));
|
||||||
|
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
|
||||||
|
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
|
||||||
|
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
|
||||||
|
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAHUlEQVR42q3IoREAAACCQHdy/91IFrLcfSGqc5wAdFYCZQo/LFUAAAAASUVORK5CYII=") repeat-x;
|
||||||
|
border: 0 none;
|
||||||
|
color: #CCC;
|
||||||
|
height: 4px;
|
||||||
|
padding: 0;
|
||||||
|
margin: 30px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@-webkit-keyframes progress-bar-stripes {
|
||||||
|
from {
|
||||||
|
background-position: 40px 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-keyframes progress-bar-stripes {
|
||||||
|
from {
|
||||||
|
background-position: 40px 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-ms-keyframes progress-bar-stripes {
|
||||||
|
from {
|
||||||
|
background-position: 40px 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-o-keyframes progress-bar-stripes {
|
||||||
|
from {
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
background-position: 40px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes progress-bar-stripes {
|
||||||
|
from {
|
||||||
|
background-position: 40px 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="maintenance-container">
|
||||||
|
<h1 class="maintenance-headline">Unsere Website befindet sich gerade in der Wartung.</h1>
|
||||||
|
|
||||||
|
<p class="maintenance-text">
|
||||||
|
Wir stehen Ihnen bald wieder zur Verfügung. Entschuldigen Sie etwaige Unannehmlichkeiten.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<h1 class="maintenance-headline">Our website is currently undergoing maintenance.</h1>
|
||||||
|
|
||||||
|
<p class="maintenance-text">
|
||||||
|
We'll be back very soon. Sorry for any inconvenience.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="maintenance-progress"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
0
shopware6/src/Controller/.gitignore
vendored
Normal file
0
shopware6/src/Controller/.gitignore
vendored
Normal file
238
shopware6/symfony.lock
Normal file
238
shopware6/symfony.lock
Normal file
@@ -0,0 +1,238 @@
|
|||||||
|
{
|
||||||
|
"doctrine/deprecations": {
|
||||||
|
"version": "1.1",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "1.0",
|
||||||
|
"ref": "87424683adc81d7dc305eefec1fced883084aab9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nyholm/psr7": {
|
||||||
|
"version": "1.8",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "1.0",
|
||||||
|
"ref": "4a8c0345442dcca1d8a2c65633dcf0285dd5a5a2"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./config/packages/nyholm_psr7.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pentatrion/vite-bundle": {
|
||||||
|
"version": "8.2",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.5",
|
||||||
|
"ref": "8cc0e41387cb37cb65cc9a1ce8bac7eed899687a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shopware/administration": {
|
||||||
|
"version": "6.7",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.7",
|
||||||
|
"ref": "00b75c7833e0004ef4591b40905afb08d8a83d38"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./bin/build-administration.sh",
|
||||||
|
"./bin/watch-administration.sh"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"shopware/core": {
|
||||||
|
"version": "6.7",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.7",
|
||||||
|
"ref": "469075e215817ebc0a52d1dcc77a60a226a2b312"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./bin/.htaccess",
|
||||||
|
"./bin/build-js.sh",
|
||||||
|
"./bin/ci",
|
||||||
|
"./bin/console",
|
||||||
|
"./bin/functions.sh",
|
||||||
|
"./config/jwt/.gitignore",
|
||||||
|
"./custom/.htaccess",
|
||||||
|
"./custom/apps/.gitignore",
|
||||||
|
"./custom/plugins/.gitignore",
|
||||||
|
"./custom/static-plugins/.gitignore",
|
||||||
|
"./files/.htaccess",
|
||||||
|
"./public/.htaccess.dist",
|
||||||
|
"./public/index.php",
|
||||||
|
"./public/maintenance.html",
|
||||||
|
"./var/.htaccess",
|
||||||
|
"./.htaccess"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"shopware/elasticsearch": {
|
||||||
|
"version": "6.7",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.7",
|
||||||
|
"ref": "fe34e39dbf21eec276589a9c8857084ea33918f9"
|
||||||
|
},
|
||||||
|
"files": []
|
||||||
|
},
|
||||||
|
"shopware/storefront": {
|
||||||
|
"version": "6.7",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.7",
|
||||||
|
"ref": "3a3eed555ad8d8d66bae908239b877f14c7f5654"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./bin/build-storefront.sh",
|
||||||
|
"./bin/watch-storefront.sh"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/console": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.4",
|
||||||
|
"ref": "d7afb8d11ee0e18f644cc77c2df9b372e89cb3a9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symfony/debug-bundle": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.3",
|
||||||
|
"ref": "b94f2fa443280f1befe3093f1c7135cbece45be2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symfony/flex": {
|
||||||
|
"version": "2.10",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "2.4",
|
||||||
|
"ref": "52e9754527a15e2b79d9a610f98185a1fe46622a"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./.env",
|
||||||
|
"./.env.dev"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/framework-bundle": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.4",
|
||||||
|
"ref": "50944a1fe41e7bcbca2e33ec196e1084772633f7"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./config/services.yaml",
|
||||||
|
"./src/Controller/.gitignore"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/lock": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.2",
|
||||||
|
"ref": "8e937ff2b4735d110af1770f242c1107fdab4c8e"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./config/packages/lock.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/mailer": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "4.3",
|
||||||
|
"ref": "7c4b09065438b4fbe2baaf7838347090efffafac"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symfony/messenger": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.0",
|
||||||
|
"ref": "34c68db62fc2e3f66c944e7195fea5367c68823d"
|
||||||
|
},
|
||||||
|
"files": []
|
||||||
|
},
|
||||||
|
"symfony/monolog-bundle": {
|
||||||
|
"version": "3.10",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "3.3",
|
||||||
|
"ref": "5ccbcb35c970d021327d54358e748c6962a39ed8"
|
||||||
|
},
|
||||||
|
"files": []
|
||||||
|
},
|
||||||
|
"symfony/property-info": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "7.3",
|
||||||
|
"ref": "d7afb8d11ee0e18f644cc77c2df9b372e89cb3a9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symfony/routing": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.4",
|
||||||
|
"ref": "f4aa893f09086b4e9bfbeaebb2a1f2a24f979367"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./config/routes.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/scheduler": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "7.2",
|
||||||
|
"ref": "88069c76a8133d37a373b1299fb3ab927f252c45"
|
||||||
|
},
|
||||||
|
"files": []
|
||||||
|
},
|
||||||
|
"symfony/translation": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.4",
|
||||||
|
"ref": "d7afb8d11ee0e18f644cc77c2df9b372e89cb3a9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symfony/twig-bundle": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.4",
|
||||||
|
"ref": "99277800a8f532fc369df7148804ed3d257c69c0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symfony/validator": {
|
||||||
|
"version": "7.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/shopware/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.3",
|
||||||
|
"ref": "cdb029c79a301f7404e20b1f7031710959420019"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
shopware6/var/.htaccess
Normal file
11
shopware6/var/.htaccess
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<Files ~ ".*">
|
||||||
|
# Deny all requests from Apache 2.4+.
|
||||||
|
<IfModule mod_authz_core.c>
|
||||||
|
Require all denied
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Deny all requests from Apache 2.0-2.2.
|
||||||
|
<IfModule !mod_authz_core.c>
|
||||||
|
Deny from all
|
||||||
|
</IfModule>
|
||||||
|
</Files>
|
||||||
Reference in New Issue
Block a user