]> _ Git - psq.git/commitdiff
better discover register process
authorLouis Jeckel <louis.jeckel@outlook.com>
Wed, 6 Jan 2021 11:38:53 +0000 (12:38 +0100)
committerLouis Jeckel <louis.jeckel@outlook.com>
Wed, 6 Jan 2021 11:38:53 +0000 (12:38 +0100)
app/Http/Controllers/Auth/RegisterController.php
app/Http/Controllers/DiscoverController.php
app/Http/Middleware/RedirectIfAuthenticated.php
app/User.php
resources/views/auth/discover-loggedin.blade.php [new file with mode: 0644]
routes/web.php

index bd1e9cdae5fb31c0e5b08ca5a5dfdb67fa359d33..7ef7e1132185d71412a68ebd51a5d6630c0585b3 100644 (file)
@@ -76,7 +76,7 @@ class RegisterController extends Controller
                 'email',
                 'max:255',
                 Rule::unique('users')
-                    ->where(fn(Builder $builder) => $builder->where('type', User::TYPE_SUBSCRIBER))
+                    ->where(fn(Builder $builder) => $builder->where('reg_complete', 1)->orWhere('type', User::TYPE_SUBSCRIBER))
             ],
             'password' => ['required', 'string', 'min:8', 'confirmed'],
             recaptchaFieldName() => recaptchaRuleName(),
index eeb31a20fee028dd1917e43796575a6a0f2993b2..27d34a09f69636499bcca156335b65e1dd948799 100644 (file)
@@ -5,7 +5,7 @@ namespace App\Http\Controllers;
 use App\Notifications\NewTrialUser;
 use App\User;
 use Hash;
-use Illuminate\Database\Eloquent\Builder;
+use \Illuminate\Database\Query\Builder;
 use Illuminate\Http\Request;
 use Illuminate\Support\Str;
 use Illuminate\Validation\Rule;
@@ -15,7 +15,6 @@ class DiscoverController extends Controller
 {
     public function __construct()
     {
-        $this->middleware('guest');
     }
 
     /**
@@ -23,19 +22,49 @@ class DiscoverController extends Controller
      */
     public function showForm()
     {
+        if(\Auth::check())
+            return view('auth.discover-loggedin');
+
         return view('auth.discover');
     }
 
+    public function activate()
+    {
+        if(\Auth::guest()) {
+            abort(401);
+        }
+
+        /** @var User $user */
+        $user = \Auth::user();
+
+        $user->update(['type' => User::TYPE_DISCOVER]);
+        //If users requested a trial period
+        \Notification::route('mail', config('app.emails.subscriptions'))
+            ->notify(new NewTrialUser($user));
+
+
+        $user->sendEmailFromTemplate('discover_request');
+
+        \Session::flash('message', 'Votre demande à bien été prise en compte, merci !');
+        return redirect()->route('home');
+
+    }
+
     public function register(Request $request)
     {
+        if(\Auth::check()) {
+            abort(401);
+        }
         $this->validator($request->all())->validate();
 
         $data = $request->all();
 
         /** @var User $user */
-        $user = User::query()->create(
+        $user = User::query()->updateOrCreate([
+            'email' => $data['email'],
+
+            ],
             [
-                'email' => $data['email'],
                 'first_name' => $data['first_name'],
                 'last_name' => $data['last_name'],
                 'employer' => $data['employer'],
@@ -77,6 +106,7 @@ class DiscoverController extends Controller
                 'email',
                 'max:255',
                 Rule::unique('users')
+                    ->where(fn(Builder $builder) => $builder->where('reg_complete', 1)->orWhere('type', User::TYPE_SUBSCRIBER)),
             ],
             recaptchaFieldName() => recaptchaRuleName(),
         ]);
index 2395ddccf9e278a719bac028ce90d5be0c2ebd8e..14045e2dced39ba21b3d70885a1a54d9a2410fd3 100644 (file)
@@ -19,6 +19,13 @@ class RedirectIfAuthenticated
     public function handle($request, Closure $next, $guard = null)
     {
         if (Auth::guard($guard)->check()) {
+            $message = 'Vous ne pouvez pas créer de compte car vous êtes déjà connectés ! ';
+            if(\Auth::user()->canAskDiscover()) {
+                $message.='<a href="'.route('discover.register').'">Cliquez ici pour demander une période découverte</a>';
+
+            }
+            \Session::flash('message', $message);
+
             return redirect(RouteServiceProvider::HOME);
         }
 
index 02420d2384504afff6793d4acd289935986e03dd..90cb6f44070752a0acc335925e572fc9628951fc 100644 (file)
@@ -664,6 +664,14 @@ class User extends Authenticatable implements MustVerifyEmail, SendsEmails
         ]);
     }
 
+    /**
+     * @return bool
+     */
+    public function canAskDiscover(): bool
+    {
+        return !($this->isActive() || optional($this->trial_ends_at)->isPast() || optional($this->discover_ends_at)->isPast());
+    }
+
 
     /**
      * @return string
diff --git a/resources/views/auth/discover-loggedin.blade.php b/resources/views/auth/discover-loggedin.blade.php
new file mode 100644 (file)
index 0000000..ffa281c
--- /dev/null
@@ -0,0 +1,47 @@
+@extends('layouts.app')
+
+@section('content')
+<div class="container">
+    <div class="row justify-content-center">
+        <div class="col-md-8">
+
+            <div class="alert-info alert">
+                <p class="font-weight-bold">Bienvenue sur {{config('app.name')}}</p>
+                <p class="mb-0">Cliquez sur ce bouton pour faire une demande de période découverte pour reçevoir gratuitement les prochains numéro de Prescription Santé - Le Quotidien !</p>
+            </div>
+
+            <div class="card">
+
+                <div class="card-header">Demande de période découverte</div>
+
+                <div class="card-body">
+                @if(\Auth::user()->canAskDiscover())
+                        <form action="{{route('discover.activate')}}" method="POST">
+                                                    @csrf
+
+                            <div class="form-group row mb-0">
+                                <div class="col-md-12">
+                                    <button type="submit" class="btn btn-primary">
+                                        Demander une période de découverte
+                                    </button>
+                                </div>
+                            </div>
+
+                @elseif(\Auth::user()->isActive())
+                    <div class="alert alert-danger">
+                        Désolé ne pouvez pas demander de période découverte car votre abonnement est déjà actif.
+                    </div>
+
+                @else
+                    <div class="alert alert-danger">
+                        Désolé ne pouvez pas re demander de période découverte.
+                    </div>
+
+                @endif
+                </div>
+
+            </div>
+        </div>
+    </div>
+</div>
+@endsection
index 6ebd1ae5e33bab49739d36d705dbf238cd1b0d39..e924a517bafb4902ba231854aa4780f50e870b05 100644 (file)
@@ -45,6 +45,7 @@ Route::domain(env('CLIENT_DOMAIN_NAME'))->group(function() {
     Route::prefix('decouverte')->group(function () {
         Route::get('', 'DiscoverController@showForm')->name('discover.register');
         Route::post('', 'DiscoverController@register');
+        Route::post('activer', 'DiscoverController@activate')->name('discover.activate');
     });
 
     Route::get('compte/{user}/demander-pdf', 'AccountController@askPdf')->name('account.ask-pdf');