From fcd18c9e70fbe972d464f790a6f48ece10d84e5c Mon Sep 17 00:00:00 2001 From: Louis Jeckel Date: Thu, 27 Aug 2020 10:58:05 +0200 Subject: [PATCH] add early access wall --- .../Controllers/Auth/RegisterController.php | 4 +- app/Http/Controllers/Controller.php | 5 +- app/Http/Controllers/HomeController.php | 1 + app/Http/Controllers/WallController.php | 20 ++++++++ app/Http/Kernel.php | 2 + app/Http/Middleware/EarlyAccessMiddleware.php | 23 +++++++++ app/User.php | 50 ++++++++++++------- .../2020_08_27_081414_change_users_table.php | 41 +++++++++++++++ resources/views/errors/403.blade.php | 5 +- resources/views/wall.blade.php | 24 +++++++++ routes/web.php | 2 + 11 files changed, 155 insertions(+), 22 deletions(-) create mode 100644 app/Http/Controllers/WallController.php create mode 100644 app/Http/Middleware/EarlyAccessMiddleware.php create mode 100644 database/migrations/2020_08_27_081414_change_users_table.php create mode 100644 resources/views/wall.blade.php diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 88a7faf..be50aa3 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -62,7 +62,7 @@ class RegisterController extends Controller 'email', 'max:255', Rule::unique('users') - ->where(fn(Builder $builder) => $builder->where('is_prospect', false)) + ->where(fn(Builder $builder) => $builder->where('type', User::TYPE_USER)) ], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); @@ -87,7 +87,7 @@ class RegisterController extends Controller 'employer' => $data['employer'], 'password' => Hash::make($data['password']), 'reg_complete' => true, - 'is_prospect' => false, + 'type' => User::TYPE_USER, 'self_registered' => true, ] ); diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 09fcf5b..9b06694 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -13,8 +13,11 @@ class Controller extends BaseController public function __construct() { - if(config('app.env') === 'prod') { + if(config('app.env') === 'prod' || true) { $this->middleware('auth'); + $this->middleware('early'); + + } } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index e332c49..09d66c4 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -21,4 +21,5 @@ class HomeController extends Controller + } diff --git a/app/Http/Controllers/WallController.php b/app/Http/Controllers/WallController.php new file mode 100644 index 0000000..1c14318 --- /dev/null +++ b/app/Http/Controllers/WallController.php @@ -0,0 +1,20 @@ + \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'early' => EarlyAccessMiddleware::class ]; protected $middlewarePriority = [ diff --git a/app/Http/Middleware/EarlyAccessMiddleware.php b/app/Http/Middleware/EarlyAccessMiddleware.php new file mode 100644 index 0000000..7a93a9b --- /dev/null +++ b/app/Http/Middleware/EarlyAccessMiddleware.php @@ -0,0 +1,23 @@ +early_access === false) { + return redirect()->action('WallController@wall'); + } + return $next($request); + } +} diff --git a/app/User.php b/app/User.php index 7fbae4a..d665743 100644 --- a/app/User.php +++ b/app/User.php @@ -29,7 +29,7 @@ use Laravel\Scout\Searchable; * @property Carbon $trial_ends_at (is user is on trial) * @property bool self_registered (if user used /register) * @property string $employer (used if self registered) - * @property bool $is_prospect + * @property int $type * @property bool $reg_complete * @property string $status */ @@ -79,7 +79,7 @@ class User extends Authenticatable 'trial_ends_at' => 'datetime', 'active_until' => 'datetime', 'self_registered' => 'bool', - 'is_prospect' => 'bool', + 'early_access' => 'bool', ]; @@ -111,12 +111,17 @@ class User extends Authenticatable 'prospect' => [ 'badge' => 'warning', 'label' => 'Prospect', + ], + 'special' => [ + 'badge' => 'warning', + 'label' => 'Trimestriel', ] ]; - - + public const TYPE_USER = 0; + public const TYPE_PROSPECT = 1; + public const TYPE_SPECIAL = 2; /** @@ -259,7 +264,7 @@ class User extends Authenticatable */ public function scopeProspect(Builder $builder): void { - $builder->where('is_prospect', true); + $builder->where('type', self::TYPE_PROSPECT); } /** @@ -267,7 +272,7 @@ class User extends Authenticatable */ public function scopeRegisteredUser(Builder $builder): void { - $builder->where('is_prospect', false); + $builder->where('type', self::TYPE_USER); } @@ -297,19 +302,30 @@ class User extends Authenticatable { $id = 'inactive'; - if($this->orgIsSubscribed) { - $id = 'org_subscribed'; - } - if($this->subscribed()) { - $id = 'ind_subscribed'; - } - if($this->onTrial()) { - $id = 'trial'; - } - if($this->is_prospect) { - $id = 'prospect'; + switch($this->type) { + case self::TYPE_USER: + if($this->orgIsSubscribed) { + $id = 'org_subscribed'; + } + if($this->subscribed()) { + $id = 'ind_subscribed'; + } + if($this->onTrial()) { + $id = 'trial'; + } + break; + + case self::TYPE_PROSPECT: + $id = 'prospect'; + break; + + case self::TYPE_SPECIAL: + $id = 'special'; + break; } + + return $id; } diff --git a/database/migrations/2020_08_27_081414_change_users_table.php b/database/migrations/2020_08_27_081414_change_users_table.php new file mode 100644 index 0000000..d70b2e7 --- /dev/null +++ b/database/migrations/2020_08_27_081414_change_users_table.php @@ -0,0 +1,41 @@ +dropColumn('is_prospect'); + $table->smallInteger('type')->default(0); + $table->boolean('early_access')->default(0); + + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->boolean('is_prospect'); + $table->dropColumn('type'); + $table->dropColumn('early_access'); + + }); + + + } +} diff --git a/resources/views/errors/403.blade.php b/resources/views/errors/403.blade.php index 09c1f43..ecd9450 100644 --- a/resources/views/errors/403.blade.php +++ b/resources/views/errors/403.blade.php @@ -9,8 +9,9 @@ @guest

Si vous possédez un compte, cliquez ici pour vous connecter

Sinon, cliquez ici pour découvrir nos formules d'abonnement !

- @elseguest -

Il semblerait que votre abonnement n'est plus actif...

@endguest + @auth +

Il semblerait que votre abonnement n'est plus actif...

+ @endauth @endsection diff --git a/resources/views/wall.blade.php b/resources/views/wall.blade.php new file mode 100644 index 0000000..a912003 --- /dev/null +++ b/resources/views/wall.blade.php @@ -0,0 +1,24 @@ +@extends('layouts.app') + +@section('content') + +
+

Veuillez repasser plus tard !

+ + + @if(session()->has('message')) +
+ {!! session('message') !!} + +
+ @endif + +
+ Le site est encore en construction, veuillez revenir dès le 07/09/2020 ! +
+ +
+ +@endsection diff --git a/routes/web.php b/routes/web.php index 95282d7..cb31d9f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -83,6 +83,8 @@ Route::domain(env('CLIENT_DOMAIN_NAME'))->group(function() { Route::get('/l/{link:slug}', 'TrackedLinkController@redirect')->name('track'); + + Route::get('site-ferme', 'WallController@wall'); }); -- 2.39.5