From: Louis Jeckel Date: Wed, 6 Jan 2021 11:38:53 +0000 (+0100) Subject: better discover register process X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=e2357e417d037bafb3e27be96da54aeeda40cb48;p=psq.git better discover register process --- diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index bd1e9cd..7ef7e11 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -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(), diff --git a/app/Http/Controllers/DiscoverController.php b/app/Http/Controllers/DiscoverController.php index eeb31a2..27d34a0 100644 --- a/app/Http/Controllers/DiscoverController.php +++ b/app/Http/Controllers/DiscoverController.php @@ -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(), ]); diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index 2395ddc..14045e2 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -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.='Cliquez ici pour demander une période découverte'; + + } + \Session::flash('message', $message); + return redirect(RouteServiceProvider::HOME); } diff --git a/app/User.php b/app/User.php index 02420d2..90cb6f4 100644 --- a/app/User.php +++ b/app/User.php @@ -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 index 0000000..ffa281c --- /dev/null +++ b/resources/views/auth/discover-loggedin.blade.php @@ -0,0 +1,47 @@ +@extends('layouts.app') + +@section('content') +
+
+
+ +
+

Bienvenue sur {{config('app.name')}}

+

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 !

+
+ +
+ +
Demande de période découverte
+ +
+ @if(\Auth::user()->canAskDiscover()) +
+ @csrf + +
+
+ +
+
+ + @elseif(\Auth::user()->isActive()) +
+ Désolé ne pouvez pas demander de période découverte car votre abonnement est déjà actif. +
+ + @else +
+ Désolé ne pouvez pas re demander de période découverte. +
+ + @endif +
+ +
+
+
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 6ebd1ae..e924a51 100644 --- a/routes/web.php +++ b/routes/web.php @@ -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');