]> _ Git - psq.git/commitdiff
add early access wall
authorLouis Jeckel <louis.jeckel@outlook.cm>
Thu, 27 Aug 2020 08:58:05 +0000 (10:58 +0200)
committerLouis Jeckel <louis.jeckel@outlook.cm>
Thu, 27 Aug 2020 08:58:05 +0000 (10:58 +0200)
app/Http/Controllers/Auth/RegisterController.php
app/Http/Controllers/Controller.php
app/Http/Controllers/HomeController.php
app/Http/Controllers/WallController.php [new file with mode: 0644]
app/Http/Kernel.php
app/Http/Middleware/EarlyAccessMiddleware.php [new file with mode: 0644]
app/User.php
database/migrations/2020_08_27_081414_change_users_table.php [new file with mode: 0644]
resources/views/errors/403.blade.php
resources/views/wall.blade.php [new file with mode: 0644]
routes/web.php

index 88a7faf500c9119ac61d7b232ebf18ed6da20ae0..be50aa3dea164d79eb4d6604d0249a30a57270dd 100644 (file)
@@ -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,
             ]
         );
index 09fcf5b3e236e68b81db60884650850195c38737..9b06694cea4cd2a32d896880764f1aabc3b6d861 100644 (file)
@@ -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');
+
+
         }
     }
 
index e332c497c3819a594e53c86e1b3c10f4b792984f..09d66c4a8ca3072d9238f693202b394efd84f62d 100644 (file)
@@ -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 (file)
index 0000000..1c14318
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+
+class WallController extends Controller
+{
+    //
+
+    public function __construct()
+    {
+    }
+
+    public function wall()
+    {
+        return view('wall');
+    }
+
+}
index 19f8b81325092ed3225fa7ea417650261de577df..655a771ec6d4efd3d78e83b37b7500ebe04a5c58 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace App\Http;
 
+use App\Http\Middleware\EarlyAccessMiddleware;
 use App\Http\Middleware\LoginWithToken;
 use App\LoginToken;
 use Illuminate\Foundation\Http\Kernel as HttpKernel;
@@ -65,6 +66,7 @@ class Kernel extends HttpKernel
         'signed' => \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 (file)
index 0000000..7a93a9b
--- /dev/null
@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+
+class EarlyAccessMiddleware
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        if(\Auth::check() && \Auth::user()->early_access === false) {
+            return redirect()->action('WallController@wall');
+        }
+        return $next($request);
+    }
+}
index 7fbae4a95e91f60a7e9658fb3dfc20e2c73f4be0..d665743cfa9c8cd6eaa895d2093b0a89b1b22e18 100644 (file)
@@ -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 (file)
index 0000000..d70b2e7
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeUsersTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('users', function (Blueprint $table) {
+            $table->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');
+
+        });
+
+
+    }
+}
index 09c1f430cd4bae0c1329cc89874d64780ff0691b..ecd9450a12873348d2f69b809e2e23ce8aa7f401 100644 (file)
@@ -9,8 +9,9 @@
     @guest
         <p class="denim">Si vous possédez un compte, <a href="{{route('login', ['redirect_to' => request()->getUri()])}}">cliquez ici pour vous connecter</a></p>
         <p class="orange">Sinon, <a href="{{route('not-registered')}}">cliquez ici pour découvrir nos formules d'abonnement !</a></p>
-    @elseguest
-        <h2>Il semblerait que votre abonnement n'est plus actif...</h2>
     @endguest
+    @auth
+        <h2>Il semblerait que votre abonnement n'est plus actif...</h2>
+    @endauth
 </div>
 @endsection
diff --git a/resources/views/wall.blade.php b/resources/views/wall.blade.php
new file mode 100644 (file)
index 0000000..a912003
--- /dev/null
@@ -0,0 +1,24 @@
+@extends('layouts.app')
+
+@section('content')
+
+    <div class="container">
+        <h1>Veuillez repasser plus tard !</h1>
+
+
+        @if(session()->has('message'))
+        <div class="alert alert-success alert-dismissible">
+            {!! session('message') !!}
+            <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+                <span aria-hidden="true">&times;</span>
+            </button>
+        </div>
+        @endif
+
+        <div class="alert alert-info">
+            Le site est encore en construction, veuillez revenir dès le 07/09/2020 !
+        </div>
+
+    </div>
+
+@endsection
index 95282d7e22de492af74e1687a71161be4e0acf50..cb31d9f08155c3c3eead9419369b4c3776ea69a6 100644 (file)
@@ -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');
 });