]> _ Git - psq.git/commitdiff
discover registration
authorLouis Jeckel <louis.jeckel@outlook.com>
Thu, 29 Oct 2020 12:06:12 +0000 (13:06 +0100)
committerLouis Jeckel <louis.jeckel@outlook.com>
Thu, 29 Oct 2020 12:06:12 +0000 (13:06 +0100)
app/Http/Controllers/DiscoverController.php [new file with mode: 0644]
app/Mail/TemplateMail.php
resources/views/auth/discover.blade.php [new file with mode: 0644]
routes/web.php

diff --git a/app/Http/Controllers/DiscoverController.php b/app/Http/Controllers/DiscoverController.php
new file mode 100644 (file)
index 0000000..eeb31a2
--- /dev/null
@@ -0,0 +1,84 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Notifications\NewTrialUser;
+use App\User;
+use Hash;
+use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Http\Request;
+use Illuminate\Support\Str;
+use Illuminate\Validation\Rule;
+use Validator;
+
+class DiscoverController extends Controller
+{
+    public function __construct()
+    {
+        $this->middleware('guest');
+    }
+
+    /**
+     * @return \Illuminate\View\View
+     */
+    public function showForm()
+    {
+        return view('auth.discover');
+    }
+
+    public function register(Request $request)
+    {
+        $this->validator($request->all())->validate();
+
+        $data = $request->all();
+
+        /** @var User $user */
+        $user = User::query()->create(
+            [
+                'email' => $data['email'],
+                'first_name' => $data['first_name'],
+                'last_name' => $data['last_name'],
+                'employer' => $data['employer'],
+                'reg_complete' => false,
+                'type' => User::TYPE_DISCOVER,
+                'self_registered' => true,
+            ]
+        );
+
+        //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');
+
+
+    }
+
+
+    /**
+     * Get a validator for an incoming registration request.
+     *
+     * @param  array  $data
+     * @return \Illuminate\Contracts\Validation\Validator
+     */
+    protected function validator(array $data)
+    {
+        return Validator::make($data, [
+            'first_name' => ['required', 'string', 'max:255'],
+            'last_name' => ['required', 'string', 'max:255'],
+            'employer' => ['required', 'string', 'max:255'],
+            'email' => [
+                'required',
+                'string',
+                'email',
+                'max:255',
+                Rule::unique('users')
+            ],
+            recaptchaFieldName() => recaptchaRuleName(),
+        ]);
+    }
+}
index c3012a29a43796fab49fae974ecb373d9f6e463d..3607b71910aa4d742c33525c385d4144de8719f9 100644 (file)
@@ -28,6 +28,7 @@ class TemplateMail extends Mailable
     {
         $this->content = $content;
         $this->subject = $subject;
+        $this->replyTo(config('app.emails.olivier'));
     }
 
     /**
diff --git a/resources/views/auth/discover.blade.php b/resources/views/auth/discover.blade.php
new file mode 100644 (file)
index 0000000..949551c
--- /dev/null
@@ -0,0 +1,104 @@
+@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">Remplissez ce formulaire 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">
+                    <form method="POST" action="{{ route('discover.register') }}">
+                        @csrf
+                        @if(request()->has('redirect_to'))
+                        <input type="hidden" name="redirect_to" value="{{request()->redirect_to}}">
+                        @endif
+                        <div class="form-group row">
+                            <label for="first_name" class="col-md-4 col-form-label text-md-right">{{ __('Prénom') }}</label>
+
+                            <div class="col-md-6">
+                                <input id="first_name" type="text" class="form-control @error('first_name') is-invalid @enderror" name="first_name" value="{{ old('first_name') }}" required autocomplete="given-name" autofocus>
+
+                                @error('first_name')
+                                    <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                                @enderror
+                            </div>
+                        </div>
+
+                        <div class="form-group row">
+                            <label for="last_name" class="col-md-4 col-form-label text-md-right">{{ __('Nom') }}</label>
+
+                            <div class="col-md-6">
+                                <input id="last_name" type="text" class="form-control @error('last_name') is-invalid @enderror" name="last_name" value="{{ old('last_name') }}" required autocomplete="family-name">
+
+                                @error('last_name')
+                                    <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                                @enderror
+                            </div>
+                        </div>
+
+                        <div class="form-group row">
+                            <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
+
+                            <div class="col-md-6">
+                                <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email">
+
+                                @error('email')
+                                    <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                                @enderror
+                            </div>
+                        </div>
+
+                        <div class="form-group row">
+                            <label for="employer" class="col-md-4 col-form-label text-md-right">{{ __('Employeur') }}</label>
+
+                            <div class="col-md-6">
+                                <input id="employer" type="text" class="form-control @error('employer') is-invalid @enderror" name="employer" value="{{ old('employer') }}" required>
+
+                                @error('employer')
+                                    <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                                @enderror
+                            </div>
+                        </div>
+
+
+                        <div class="form-group row">
+                            <div class="col-md-8 offset-lg-4">
+                                @error(recaptchaFieldName())
+                                    <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                                @enderror
+                                {!! ReCaptcha::htmlFormSnippet() !!}
+                            </div>
+                        </div>
+
+                        <div class="form-group row mb-0">
+                            <div class="col-md-6 offset-md-4">
+                                <button type="submit" class="btn btn-primary">
+                                    {{ __('Register') }}
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+@endsection
index f694cd22a452548c0e28f06506140d0c553833d8..6ebd1ae5e33bab49739d36d705dbf238cd1b0d39 100644 (file)
@@ -40,8 +40,13 @@ Route::domain(env('CLIENT_DOMAIN_NAME'))->group(function() {
         Route::get('/', 'AccountController@index')->name('account.index');
         Route::post('/', 'AccountController@update')->name('account.update');
         Route::post('password', 'AccountController@password')->name('account.password');
+    });
 
+    Route::prefix('decouverte')->group(function () {
+        Route::get('', 'DiscoverController@showForm')->name('discover.register');
+        Route::post('', 'DiscoverController@register');
     });
+
     Route::get('compte/{user}/demander-pdf', 'AccountController@askPdf')->name('account.ask-pdf');
 
     /** Stripe Payment */