diff --git a/.gitignore b/.gitignore
index 30d15b1..b507967 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,3 +28,16 @@ yarn-error.log
public/fichiers
storage
resources/theme
+
+# Ignore public favicon
+/public/android-chrome-192x192.png
+/public/android-chrome-512x512.png
+/public/apple-touch-icon.png
+/public/browserconfig.xml
+/public/browserconfig.xml
+/public/favicon-16x16.png
+/public/favicon-32x32.png
+/public/favicon.ico
+/public/mstile-150x150.png
+/public/safari-pinned-tab.svg
+/public/site.webmanifest
diff --git a/app/Http/Controllers/EndPageController.php b/app/Http/Controllers/Fo/EndPageController.php
similarity index 84%
rename from app/Http/Controllers/EndPageController.php
rename to app/Http/Controllers/Fo/EndPageController.php
index 797d3cd..28a5ce6 100644
--- a/app/Http/Controllers/EndPageController.php
+++ b/app/Http/Controllers/Fo/EndPageController.php
@@ -1,7 +1,8 @@
route('home');
+ return redirect()->route('fo.home');
}
}
diff --git a/app/Http/Controllers/EnterCodeController.php b/app/Http/Controllers/Fo/EnterCodeController.php
similarity index 98%
rename from app/Http/Controllers/EnterCodeController.php
rename to app/Http/Controllers/Fo/EnterCodeController.php
index 57b5504..e8bf721 100644
--- a/app/Http/Controllers/EnterCodeController.php
+++ b/app/Http/Controllers/Fo/EnterCodeController.php
@@ -1,7 +1,8 @@
apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
+ // $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
}
/**
@@ -286,6 +287,6 @@ class EnterCodeController extends Controller
if ($participation) {
return view('theme::fo.winning-proof', compact('participation'));
}
- return redirect()->route('home');
+ return redirect()->route('fo.home');
}
}
diff --git a/app/Http/Controllers/FAQController.php b/app/Http/Controllers/Fo/FAQController.php
similarity index 78%
rename from app/Http/Controllers/FAQController.php
rename to app/Http/Controllers/Fo/FAQController.php
index 2adba55..35d1e27 100644
--- a/app/Http/Controllers/FAQController.php
+++ b/app/Http/Controllers/Fo/FAQController.php
@@ -1,7 +1,8 @@
route('home');
+ return redirect()->route('fo.home');
}
return view('theme::fo.faq', compact('questions', 'themes'));
}
diff --git a/app/Http/Controllers/GainsController.php b/app/Http/Controllers/Fo/GainsController.php
similarity index 69%
rename from app/Http/Controllers/GainsController.php
rename to app/Http/Controllers/Fo/GainsController.php
index 699a38a..8b8ddac 100644
--- a/app/Http/Controllers/GainsController.php
+++ b/app/Http/Controllers/Fo/GainsController.php
@@ -1,6 +1,8 @@
exists('theme::fo.gains')) {
return view('theme::fo.gains');
}
- return redirect()->route('home');
+ return redirect()->route('fo.home');
}
}
diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/Fo/HomeController.php
similarity index 58%
rename from app/Http/Controllers/HomeController.php
rename to app/Http/Controllers/Fo/HomeController.php
index ce5fd2d..1cc0843 100644
--- a/app/Http/Controllers/HomeController.php
+++ b/app/Http/Controllers/Fo/HomeController.php
@@ -1,6 +1,8 @@
exists('theme::fo.basic.how-to-play')) {
return view('theme::fo.basic.how-to-play');
}
- return redirect()->route('home');
+ return redirect()->route('fo.home');
}
}
diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/Fo/LoginController.php
similarity index 95%
rename from app/Http/Controllers/LoginController.php
rename to app/Http/Controllers/Fo/LoginController.php
index 6168213..37b0f05 100644
--- a/app/Http/Controllers/LoginController.php
+++ b/app/Http/Controllers/Fo/LoginController.php
@@ -1,7 +1,8 @@
middleware('guest')->except('logout');
- $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
+ // $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
}
/**
@@ -137,7 +138,7 @@ class LoginController extends Controller
} //end if
Auth::login($userLocal);
- return redirect()->route('saisir-code');
+ return redirect()->route('fo.saisir-code');
}
/**
@@ -148,7 +149,7 @@ class LoginController extends Controller
public function logout()
{
Auth::logout();
- return redirect()->route('home');
+ return redirect()->route('fo.home');
}
/**
@@ -211,17 +212,17 @@ class LoginController extends Controller
public function forgotPasswordReset(Request $request, string $token)
{
if (!$request->hasValidSignature(false)) {
- return redirect()->route('login')
+ return redirect()->route('fo.login')
->withErrors("Le lien de changement de votre mot de passe n'est plus valide, veuillez réessayer.");
}
$tokenValid = false;
$user = Customer::where('password_token', $token)->first();
if (!$user) {
- return redirect()->route('forgot-password', compact('tokenValid'))
+ return redirect()->route('fo.forgot-password', compact('tokenValid'))
->withErrors('Le lien de changement du mot de passe est incorrect.');
}
$tokenValid = true;
- return redirect()->route('forgot-password', compact('tokenValid', 'token'));
+ return redirect()->route('fo.forgot-password', compact('tokenValid', 'token'));
}
/**
@@ -280,7 +281,7 @@ class LoginController extends Controller
/** @var \App\Models\Settings $settings */
$settings = app(Settings::class);
Mail::to($email)->send(new PasswordReset($user, $settings));
- return redirect()->route('login')
+ return redirect()->route('fo.login')
->with('success', 'Un mail de réinitialisation de votre mot de passe vous a été envoyé(e).');
}
@@ -310,7 +311,7 @@ class LoginController extends Controller
if ($update->status === 'OK') {
$user->password_token = null;
$user->save();
- return redirect()->route('login')
+ return redirect()->route('fo.login')
->with('success', 'Vous pouvez désormais vous connecter avec votre nouveau mot de passe.');
} else {
if ($update->code === 123) {
diff --git a/app/Http/Controllers/ProduitsController.php b/app/Http/Controllers/Fo/ProduitsController.php
similarity index 86%
rename from app/Http/Controllers/ProduitsController.php
rename to app/Http/Controllers/Fo/ProduitsController.php
index b70a715..f88d58c 100644
--- a/app/Http/Controllers/ProduitsController.php
+++ b/app/Http/Controllers/Fo/ProduitsController.php
@@ -1,7 +1,8 @@
middleware('guest');
- $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
+ // $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
}
/**
@@ -132,7 +133,7 @@ class RegisterController extends Controller
Mail::to($email)->send(new VerifyEmail($user));
- return redirect()->route('login')
+ return redirect()->route('fo.login')
->with(
'success',
"Pour finaliser votre inscription,
diff --git a/app/Http/Controllers/TeaserController.php b/app/Http/Controllers/Fo/TeaserController.php
similarity index 83%
rename from app/Http/Controllers/TeaserController.php
rename to app/Http/Controllers/Fo/TeaserController.php
index ace5639..523cb02 100644
--- a/app/Http/Controllers/TeaserController.php
+++ b/app/Http/Controllers/Fo/TeaserController.php
@@ -1,7 +1,8 @@
activated_teaser === 1 && $settings->teaser_end_activity > now()) {
return view('theme::fo.teaser', compact('settings'));
}
- return redirect()->route('home');
+ return redirect()->route('fo.home');
}
}
diff --git a/app/Http/Controllers/ViewContentController.php b/app/Http/Controllers/Fo/ViewContentController.php
similarity index 92%
rename from app/Http/Controllers/ViewContentController.php
rename to app/Http/Controllers/Fo/ViewContentController.php
index 978fb5b..b574dfe 100644
--- a/app/Http/Controllers/ViewContentController.php
+++ b/app/Http/Controllers/Fo/ViewContentController.php
@@ -1,7 +1,8 @@
apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
+ // $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
}
/**
@@ -43,7 +44,7 @@ class WinningProofController extends Controller
['barcode', null]
])->has('instantWin')->first();
if (!$participation) {
- return redirect()->route('home');
+ return redirect()->route('fo.home');
}
$request->validate([
diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php
index cc5ba2f..a332aa5 100644
--- a/app/Http/Middleware/Authenticate.php
+++ b/app/Http/Middleware/Authenticate.php
@@ -31,9 +31,8 @@ class Authenticate extends Middleware
}
}
}
- return route('login');
+ return route('fo.login');
}
- abort(401);
return null;
}
diff --git a/app/Http/Middleware/GameCheckDate.php b/app/Http/Middleware/GameCheckDate.php
index 38b4a99..bc7babf 100644
--- a/app/Http/Middleware/GameCheckDate.php
+++ b/app/Http/Middleware/GameCheckDate.php
@@ -23,7 +23,7 @@ class GameCheckDate
// Check si le teaser est actif.
if ($settings->start_date > now()) {
if ($settings->activated_teaser === 1 && $settings->teaser_end_activity > now()) {
- return redirect()->route('teaser');
+ return redirect()->route('fo.teaser');
}
return redirect($settings->redirect_close);
}
@@ -31,7 +31,7 @@ class GameCheckDate
// Check si le jeu est terminé.
if ($settings->end_date < now()) {
if ($settings->activated_close_page === 1 && $settings->close_page_active_date > now()) {
- return redirect()->route('end');
+ return redirect()->route('fo.end');
}
return redirect($settings->redirect_close);
}
diff --git a/app/Http/Middleware/Re7Middleware.php b/app/Http/Middleware/Re7Middleware.php
index 67a8999..8b67215 100644
--- a/app/Http/Middleware/Re7Middleware.php
+++ b/app/Http/Middleware/Re7Middleware.php
@@ -17,7 +17,7 @@ class Re7Middleware
public function handle(Request $request, Closure $next)
{
if (config('app.env') === 'production') {
- return redirect()->route('home');
+ return redirect()->route('fo.home');
}
return $next($request);
}
diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php
index 51604d6..393cabe 100644
--- a/app/Http/Middleware/RedirectIfAuthenticated.php
+++ b/app/Http/Middleware/RedirectIfAuthenticated.php
@@ -27,7 +27,7 @@ class RedirectIfAuthenticated
if (Auth::guard($guard)->check()) {
switch ($guard) {
case 'frontend':
- return \redirect()->route('home');
+ return \redirect()->route('fo.home');
case 'backend':
if (!$request->routeIs('bo.*')) {
continue;
diff --git a/app/Http/Middleware/SecureHeaders.php b/app/Http/Middleware/SecureHeaders.php
index 8d77e62..c5e47cf 100644
--- a/app/Http/Middleware/SecureHeaders.php
+++ b/app/Http/Middleware/SecureHeaders.php
@@ -34,6 +34,8 @@ class SecureHeaders
public function handle(Request $request, Closure $next): Response
{
// phpcs:enable
+ // * For Vite DEV
+ $host = \parse_url(\config('app.url'), \PHP_URL_HOST);
View::share('nonce', $nonce = Vite::useCspNonce());
// * For VueJS dev tool to execute
$jsDev = config('app.debug') ? "'unsafe-eval' 'unsafe-inline'" : "'nonce-{$nonce}' 'strict-dynamic'";
@@ -51,14 +53,23 @@ class SecureHeaders
"default-src 'none';",
"manifest-src 'self';",
// * CKEDITOR Specific https://ckeditor.com/docs/ckeditor5/latest/installation/advanced/csp.html
- "connect-src 'self' blob:;",
+ "connect-src 'self' " . implode(' ', [
+ // * VITE DEV
+ config('app.debug') ? "wss://{$host}:4443" : '',
+ config('app.debug') ? "https://{$host}:4443" : '',
+ 'https://yl.s-web.fr'
+ ]) . ';',
"img-src * data: blob:;",
'frame-src ' . implode(' ', [
'https://www.google.com/recaptcha/',
'https://recaptcha.google.com/recaptcha/',
'https://www.google.com/maps/'
]) . ';',
- "font-src 'self' data: https://fonts.gstatic.com;",
+ "font-src 'self' data: " . \implode(' ', [
+ // * VITE DEV
+ config('app.debug') ? "https://{$host}:4443" : '',
+ 'https://fonts.gstatic.com;'
+ ]) . ';',
// ! Using CKEditor will must have unsafe-inline style
// phpcs:ignore Generic.Files.LineLength.TooLong
"style-src 'self' 'unsafe-inline' " . \implode(' ', [
@@ -67,7 +78,9 @@ class SecureHeaders
'https://fonts.googleapis.com',
'https://cdn.jsdelivr.net',
'https://use.fontawesome.com',
- 'https://fonts.googleapis.com'
+ 'https://fonts.googleapis.com',
+ // * VITE DEV
+ config('app.debug') ? "https://{$host}:4443" : '',
]) . ';',
// ! If you dont use ckeditor use this
// "style-src 'self' 'nonce-$nonce';",
@@ -77,6 +90,8 @@ class SecureHeaders
'https://www.googletagmanager.com',
'https://cdnjs.cloudflare.com',
"$scheme://www.google-analytics.com",
+ // * VITE DEV
+ config('app.debug') ? "https://{$host}:4443" : '',
]) . ';'
];
@@ -94,7 +109,7 @@ class SecureHeaders
* @param array $headerList
* @return void
*/
- private function removeUnwantedHeaders(array $headerList)
+ private function removeUnwantedHeaders(array $headerList): void
{
foreach ($headerList as $header) {
header_remove($header);
diff --git a/config/purifier.php b/config/purifier.php
index d74b7a6..59cb78b 100644
--- a/config/purifier.php
+++ b/config/purifier.php
@@ -27,7 +27,7 @@ return [
'default' => [
'HTML.SafeIframe' => true,
// * For iframes
- 'URI.SafeIframeRegexp' => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/|vimeo.com/)%",
+ 'URI.SafeIframeRegexp' => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/|vimeo.com/|www.dailymotion.com/video/)%",
'HTML.Doctype' => 'HTML 4.01 Transitional',
// * Legacy filter en full avec safe legacy.
// 'HTML.Allowed' => 'h1[style|id],h2[style|id],h3[style|id],h4[style|id],h5[style|id],h6[style|id],figure[class|style],oembed[url],div[style],b,strong,i,em,u,s,pre,code[class],a[href|title|target|rel|id],ul[style],ol[style],dl[style],li,p[style],br,span[style|class],img[width|height|alt|src|style|class|title],iframe[src|width|height|class|frameborder|style],table[style|align|border|cellspacing|cellpadding|width],thead,tbody,th[colspan|align|valign|style],tr[align|valign|style],td[style|colspan|rowspan|scope|align|valign],hr,dl,dt,mark[class]',
@@ -43,7 +43,7 @@ return [
],
"youtube" => [
"HTML.SafeIframe" => 'true',
- "URI.SafeIframeRegexp" => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/|vimeo.com/)%",
+ "URI.SafeIframeRegexp" => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/|vimeo.com/|www.dailymotion.com/video/)%",
],
'custom_definition' => [
'id' => 'html5-definitions',
diff --git a/package-lock.json b/package-lock.json
index d7393c1..a4ec7fc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -38,6 +38,7 @@
"prettier": "latest",
"print-js": "^1.6.0",
"resolve-url-loader": "^5.0.0",
+ "rollup-plugin-copy": "^3.5.0",
"sass": "latest",
"slugify": "^1.6.6",
"stylelint": "latest",
@@ -2530,6 +2531,25 @@
"integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==",
"dev": true
},
+ "node_modules/@types/fs-extra": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz",
+ "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+ "dev": true,
+ "dependencies": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/json-schema": {
"version": "7.0.14",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
@@ -2543,6 +2563,12 @@
"dev": true,
"peer": true
},
+ "node_modules/@types/minimatch": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
+ "dev": true
+ },
"node_modules/@types/minimist": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz",
@@ -4157,6 +4183,12 @@
"integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
"dev": true
},
+ "node_modules/colorette": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+ "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
+ "dev": true
+ },
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -7486,6 +7518,82 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/rollup-plugin-copy": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz",
+ "integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==",
+ "dev": true,
+ "dependencies": {
+ "@types/fs-extra": "^8.0.1",
+ "colorette": "^1.1.0",
+ "fs-extra": "^8.1.0",
+ "globby": "10.0.1",
+ "is-plain-object": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.3"
+ }
+ },
+ "node_modules/rollup-plugin-copy/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/rollup-plugin-copy/node_modules/globby": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz",
+ "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==",
+ "dev": true,
+ "dependencies": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.0.3",
+ "glob": "^7.1.3",
+ "ignore": "^5.1.1",
+ "merge2": "^1.2.3",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/rollup-plugin-copy/node_modules/is-plain-object": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
+ "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rollup-plugin-copy/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/rollup-plugin-copy/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
diff --git a/package.json b/package.json
index 8fc5a8b..633e7dc 100644
--- a/package.json
+++ b/package.json
@@ -46,6 +46,7 @@
"prettier": "latest",
"print-js": "^1.6.0",
"resolve-url-loader": "^5.0.0",
+ "rollup-plugin-copy": "^3.5.0",
"sass": "latest",
"slugify": "^1.6.6",
"stylelint": "latest",
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index e69de29..0000000
diff --git a/public/logo.png b/public/logo.png
new file mode 100644
index 0000000..572f192
Binary files /dev/null and b/public/logo.png differ
diff --git a/resources/assets/images/engine/logo.png b/resources/assets/images/engine/logo.png
new file mode 100644
index 0000000..572f192
Binary files /dev/null and b/resources/assets/images/engine/logo.png differ
diff --git a/resources/assets/images/engine/logo.svg b/resources/assets/images/engine/logo.svg
new file mode 100644
index 0000000..3f52d65
--- /dev/null
+++ b/resources/assets/images/engine/logo.svg
@@ -0,0 +1,50 @@
+
+
diff --git a/resources/favicon/android-chrome-192x192.png b/resources/favicon/android-chrome-192x192.png
new file mode 100644
index 0000000..e84712f
Binary files /dev/null and b/resources/favicon/android-chrome-192x192.png differ
diff --git a/resources/favicon/android-chrome-512x512.png b/resources/favicon/android-chrome-512x512.png
new file mode 100644
index 0000000..12f369a
Binary files /dev/null and b/resources/favicon/android-chrome-512x512.png differ
diff --git a/resources/favicon/apple-touch-icon.png b/resources/favicon/apple-touch-icon.png
new file mode 100644
index 0000000..c2f7301
Binary files /dev/null and b/resources/favicon/apple-touch-icon.png differ
diff --git a/resources/favicon/browserconfig.xml b/resources/favicon/browserconfig.xml
new file mode 100644
index 0000000..f9c2e67
--- /dev/null
+++ b/resources/favicon/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ - @yield('message') -
+ -- @yield('submessage') -
++ @yield('message') +
- @hasSection('button') - ++ @yield('submessage') +
+ + @hasSection('button') + {{ __('Go to page :page', [ - 'page' => __('home') + 'page' => __('home'), ]) }} - @endif -