'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(),
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;
{
public function __construct()
{
- $this->middleware('guest');
}
/**
*/
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'],
'email',
'max:255',
Rule::unique('users')
+ ->where(fn(Builder $builder) => $builder->where('reg_complete', 1)->orWhere('type', User::TYPE_SUBSCRIBER)),
],
recaptchaFieldName() => recaptchaRuleName(),
]);
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);
}
]);
}
+ /**
+ * @return bool
+ */
+ public function canAskDiscover(): bool
+ {
+ return !($this->isActive() || optional($this->trial_ends_at)->isPast() || optional($this->discover_ends_at)->isPast());
+ }
+
/**
* @return string
--- /dev/null
+@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
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');