diff --git a/README.md b/README.md index 5d313ee..21c8cb6 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ``` Bash cp .env.example .env php artisan key:generate /!\ bien sauvegarder la key -php artisan migrate:fresh --step --seed +php artisan migrate:fresh --step # Seulement pour developper un theme par exemple php artisan db:seed --class DevelopmentSeeder php artisan uwil:user:create diff --git a/app/Http/Controllers/Fo/Re7Controller.php b/app/Http/Controllers/Bo/Re7Controller.php similarity index 79% rename from app/Http/Controllers/Fo/Re7Controller.php rename to app/Http/Controllers/Bo/Re7Controller.php index d9e14d8..f74e1d2 100644 --- a/app/Http/Controllers/Fo/Re7Controller.php +++ b/app/Http/Controllers/Bo/Re7Controller.php @@ -1,33 +1,27 @@ select('start_date', 'end_date', 'activated_teaser', 'teaser_end_activity')->first(); - return view('theme::teaser', compact('settings')); + $this->middleware(function (Request $request, \Closure $next) { + $this->authorize('fo.showRe7'); + return $next($request); + }); } /** diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 1b83325..79e2081 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -64,7 +64,6 @@ class Kernel extends HttpKernel 'game-date' => \App\Http\Middleware\GameCheckDate::class, 'is-admin' => \App\Http\Middleware\IsAdmin::class, 'is-super-admin' => \App\Http\Middleware\IsSuperAdmin::class, - 're7' => \App\Http\Middleware\Re7Middleware::class, 'signed' => \App\Http\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, diff --git a/app/Http/Middleware/Re7Middleware.php b/app/Http/Middleware/Re7Middleware.php deleted file mode 100644 index 137b959..0000000 --- a/app/Http/Middleware/Re7Middleware.php +++ /dev/null @@ -1,24 +0,0 @@ -route('fo.homepage'); - } - return $next($request); - } -} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 7eac264..fa4d0f4 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -31,6 +31,13 @@ class AuthServiceProvider extends ServiceProvider return $user->role === RoleEnum::conceptor; }); + Gate::define( + 'fo.showRe7', + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + fn (User $user) => !app()->environment(['production']) and + $user->role->value() <= RoleEnum::marketing->value() + ); + Gate::define( 'fo.showProducts', // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass diff --git a/app/Providers/ViewServiceProvider.php b/app/Providers/ViewServiceProvider.php index 83ae955..1f3e0e6 100644 --- a/app/Providers/ViewServiceProvider.php +++ b/app/Providers/ViewServiceProvider.php @@ -21,21 +21,21 @@ class ViewServiceProvider extends ServiceProvider */ public function boot() { - // * View shares - // ! Add view file pathes (also needed for console xml job). - View::addNamespace('back', resource_path('views')); - View::addNamespace('theme', resource_path('theme/mounted/views')); - - $appInfos = Cache::remember('composer', 360, function () { - return json_decode(File::get(\app_path('../composer.json'))); - }); - // Share composer.json infos. - if (isset($appInfos->name) and isset($appInfos->version)) { - View::share('cpsr_name', $appInfos->name); - View::share('cpsr_version', $appInfos->version); - } - if (!app()->runningInConsole()) { + // * View shares + // ! Add view file pathes (also needed for console xml job). + View::addNamespace('back', resource_path('views')); + View::addNamespace('theme', resource_path('theme/mounted/views')); + + $appInfos = Cache::remember('composer', 360, function () { + return json_decode(File::get(\app_path('../composer.json'))); + }); + // Share composer.json infos. + if (isset($appInfos->name) and isset($appInfos->version)) { + View::share('cpsr_name', $appInfos->name); + View::share('cpsr_version', $appInfos->version); + } + // * FORCE BOOTSTRAP PAGINATOR (or custom if in front) // Early boot, request wont be filled as expected. if (collect(explode('/', \request()->getPathInfo()))->get(1) === 'bo') { diff --git a/database/migrations/2023_08_16_092101_create_customers_table.php b/database/migrations/2023_08_16_092101_create_customers_table.php index 7a634ce..d67ca74 100644 --- a/database/migrations/2023_08_16_092101_create_customers_table.php +++ b/database/migrations/2023_08_16_092101_create_customers_table.php @@ -22,6 +22,7 @@ class CreateCustomersTable extends Migration $table->string('email_verify_token')->nullable() ->comment('Token pour vérification de mail'); $table->timestamp('email_verified_at')->nullable()->comment('Le mail de ce client est vérifié ?'); + $table->timestamp('last_connection')->nullable()->comment('Date de dernière connexion'); $table->rememberToken(); $table->timestamps(); diff --git a/database/migrations/2023_10_19_094711_create_static_pages.php b/database/migrations/2023_10_19_094711_create_static_pages.php index 65f5146..9ce6b75 100644 --- a/database/migrations/2023_10_19_094711_create_static_pages.php +++ b/database/migrations/2023_10_19_094711_create_static_pages.php @@ -1,9 +1,7 @@ timestamps(); }); - Artisan::call('db:seed', [ - 'class' => StaticPageSeeder::class - ]); } /** diff --git a/database/migrations/2030_01_01_000001_mandatory_seeds.php b/database/migrations/2030_01_01_000001_mandatory_seeds.php new file mode 100644 index 0000000..9d718ce --- /dev/null +++ b/database/migrations/2030_01_01_000001_mandatory_seeds.php @@ -0,0 +1,30 @@ + MandatorySeeder::class + ]); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + // Do nothing. + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 3e26123..7e8541e 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -2,8 +2,6 @@ namespace Database\Seeders; -use Database\Seeders\Mandatory\SettingsSeeder; -use Database\Seeders\Mandatory\StaticPageSeeder; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder @@ -17,8 +15,9 @@ class DatabaseSeeder extends Seeder { // * Mandatory Seeders $this->call([ - SettingsSeeder::class, - StaticPageSeeder::class + MandatorySeeder::class, + DevelopmentSeeder::class, + UserSeeder::class ]); } } diff --git a/database/seeders/MandatorySeeder.php b/database/seeders/MandatorySeeder.php new file mode 100644 index 0000000..1d86c5d --- /dev/null +++ b/database/seeders/MandatorySeeder.php @@ -0,0 +1,24 @@ +call([ + SettingsSeeder::class, + StaticPageSeeder::class + ]); + } +} diff --git a/resources/sass/vendor/_bootstrap.scss b/resources/sass/vendor/_bootstrap.scss index bb2a3a8..5635efb 100644 --- a/resources/sass/vendor/_bootstrap.scss +++ b/resources/sass/vendor/_bootstrap.scss @@ -38,6 +38,7 @@ @import "bootstrap/scss/card"; @import "bootstrap/scss/breadcrumb"; @import "bootstrap/scss/badge"; +@import "bootstrap/scss/offcanvas"; // 6. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss` @import "bootstrap/scss/utilities/api"; diff --git a/resources/views/layouts/header.blade.php b/resources/views/layouts/header.blade.php index 4913931..3288f62 100644 --- a/resources/views/layouts/header.blade.php +++ b/resources/views/layouts/header.blade.php @@ -5,15 +5,22 @@ {{ config('app.name', 'Laravel') }} @auth('backend') - @endauth - + +@can('fo.showRe7') + @include('back::layouts.re7-offcanvas') +@endcan diff --git a/resources/views/layouts/nav-list.blade.php b/resources/views/layouts/nav-list.blade.php index ab012d3..324fdf1 100644 --- a/resources/views/layouts/nav-list.blade.php +++ b/resources/views/layouts/nav-list.blade.php @@ -1,141 +1,139 @@ -@auth('backend') - diff --git a/resources/views/layouts/re7-offcanvas.blade.php b/resources/views/layouts/re7-offcanvas.blade.php new file mode 100644 index 0000000..8dc9d75 --- /dev/null +++ b/resources/views/layouts/re7-offcanvas.blade.php @@ -0,0 +1,28 @@ +
+
+
{{ __('Menu de recettage') }}
+ +
+
+ {{ __('Liste de liens pour visualiser les pages du jeu.') }} +
+ {{ __('Teaser') }} + {{ __('Bon de réduction') }} +
+
+ @foreach (\App\Models\Prize::getCached() as $prize) + + {{ __('Lot :name', ['name' => $prize->label_one]) }} + + @endforeach +
+
+
+
+
diff --git a/resources/views/re7.blade.php b/resources/views/re7.blade.php deleted file mode 100644 index 5709d0e..0000000 --- a/resources/views/re7.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('back::layout') - -@section('content') -
-
-
-
-
{{ __('Dashboard') }} - RE7
- - -
-
-
-
-@endsection diff --git a/routes/web-re7.php b/routes/web-re7.php index a9cbe0d..10eab00 100644 --- a/routes/web-re7.php +++ b/routes/web-re7.php @@ -1,16 +1,12 @@ name('re7.')->middleware(['re7'])->group(function () { - Route::get('/', [Re7Controller::class, 'index'])->name('index'); - Route::get('/teaser', [Re7Controller::class, 'teaser'])->name('teaser'); - Route::get('/mail-gain', [Re7Controller::class, 'prizeMail'])->name('mail-gain'); - Route::get('/mail-reduction', [Re7Controller::class, 'reductionMail'])->name('mail-reduction'); - Route::get('/br', [Re7Controller::class, 'br'])->name('br'); - // phpcs:ignore - // TODO : Rendre dynamique la partie gain par rapport au BO. - Route::get('/gain1', [Re7Controller::class, 'gain1'])->name('gain1'); - Route::get('/gain2', [Re7Controller::class, 'gain2'])->name('gain2'); +Route::prefix('re7')->name('re7.')->middleware(['auth:backend'])->group(function () { + Route::view('teaser', 'theme::pages.teaser')->name('teaser'); + // Route::get('mail-gain', [Re7Controller::class, 'prizeMail'])->name('mail-gain'); + // Route::get('mail-reduction', [Re7Controller::class, 'reductionMail'])->name('mail-reduction'); + Route::get('br', [Re7Controller::class, 'br'])->name('br'); + Route::get('gain/{prize}', [Re7Controller::class, 'prize'])->name('prize'); });