diff --git a/app/Http/Controllers/Auth/ContactRegisterController.php b/app/Http/Controllers/Auth/ContactRegisterController.php new file mode 100644 index 000000000000..a9201f634e13 --- /dev/null +++ b/app/Http/Controllers/Auth/ContactRegisterController.php @@ -0,0 +1,50 @@ +middleware(['guest', 'contact.register']); + } + + public function showRegisterForm(string $company_key) + { + return render('auth.register'); + } + + public function register(RegisterRequest $request) + { + $company = Company::where('company_key', $request->company_key)->firstOrFail(); + + $client = factory(Client::class)->create([ + 'user_id' => $user->id, /** @wip */ + 'company_id' => $company->id + ]); + + ClientContact::create([ + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'email' => $request->email, + 'company_id' => $company->id, + 'password' => Hash::make($request->password), + 'client_id' => $client->id, + 'user_id' => $user->id, /** @wip */ + 'is_primary' => true, /** @verify */ + 'contact_key' => \Illuminate\Support\Str::random(40), + ]); + + Auth::guard('contact')->login($client, true); + + return redirect()->route('client.dashboard'); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index a96994d824bf..03f3c8fb387e 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -105,5 +105,6 @@ class Kernel extends HttpKernel 'web_db' => \App\Http\Middleware\SetWebDb::class, 'api_db' => \App\Http\Middleware\SetDb::class, 'locale' => \App\Http\Middleware\Locale::class, + 'contact.register' => \App\Http\Middleware\ContactRegister::class, ]; } diff --git a/app/Http/Middleware/ContactRegister.php b/app/Http/Middleware/ContactRegister.php new file mode 100644 index 000000000000..9d6de773b4c0 --- /dev/null +++ b/app/Http/Middleware/ContactRegister.php @@ -0,0 +1,41 @@ +subdomain) { + /** @wip */ + } + + abort_unless($request->company_key, 404); + + $company = Company::where('company_key', $request->company_key)->firstOrFail(); + + // abort_unless($company->getSetting('enable_client_registration'), 404); + abort_unless(true, 404); + + return $next($request); + } +} diff --git a/app/Http/Requests/ClientPortal/RegisterRequest.php b/app/Http/Requests/ClientPortal/RegisterRequest.php new file mode 100644 index 000000000000..a10d1cfb4111 --- /dev/null +++ b/app/Http/Requests/ClientPortal/RegisterRequest.php @@ -0,0 +1,33 @@ + ['required', 'string', 'email', 'max:255', 'unique:client_contacts'], + 'password' => ['required', 'string', 'min:6', 'confirmed'], + ]; + } +} diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 760d4022d916..17edd7d3e6ea 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -3208,4 +3208,8 @@ return [ 'payment_failed_subject' => 'Payment failed for Client :client', 'payment_failed_body' => 'A payment made by client :client failed with message :message', + + 'register' => 'Register', + 'register_label' => 'Create your account in seconds', + 'password_confirmation' => 'Confirm your password', ]; diff --git a/resources/views/portal/ninja2020/auth/register.blade.php b/resources/views/portal/ninja2020/auth/register.blade.php new file mode 100644 index 000000000000..8b5d80846430 --- /dev/null +++ b/resources/views/portal/ninja2020/auth/register.blade.php @@ -0,0 +1,53 @@ +@extends('portal.ninja2020.layout.clean') +@section('meta_title', ctrans('texts.register')) + +@section('body') +
+ +
+
+
+

{{ ctrans('texts.register') }}

+

{{ ctrans('texts.register_label') }}

+
+ @csrf +
+ + + @error('email') +
+ {{ $message }} +
+ @enderror +
+
+ + + @error('password') +
+ {{ $message }} +
+ @enderror +
+
+ + + @error('password_confirmation') +
+ {{ $message }} +
+ @enderror +
+
+ +
+
+
+
+
+
+@endsection \ No newline at end of file diff --git a/routes/client.php b/routes/client.php index cd054d1ad061..fed1651c3742 100644 --- a/routes/client.php +++ b/routes/client.php @@ -7,6 +7,9 @@ Route::get('client', 'Auth\ContactLoginController@showLoginForm')->name('client. Route::get('client/login', 'Auth\ContactLoginController@showLoginForm')->name('client.login')->middleware('locale'); Route::post('client/login', 'Auth\ContactLoginController@login')->name('client.login.submit'); +Route::get('client/register/{company_key?}', 'Auth\ContactRegisterController@showRegisterForm')->name('client.register'); +Route::post('client/register/{company_key?}', 'Auth\ContactRegisterController@register'); + Route::get('client/password/reset', 'Auth\ContactForgotPasswordController@showLinkRequestForm')->name('client.password.request')->middleware('locale'); Route::post('client/password/email', 'Auth\ContactForgotPasswordController@sendResetLinkEmail')->name('client.password.email')->middleware('locale'); Route::get('client/password/reset/{token}', 'Auth\ContactResetPasswordController@showResetForm')->name('client.password.reset')->middleware('locale');