diff --git a/app/Http/Controllers/Auth/ContactForgotPasswordController.php b/app/Http/Controllers/Auth/ContactForgotPasswordController.php
index 614ebef48..7cfce622c 100644
--- a/app/Http/Controllers/Auth/ContactForgotPasswordController.php
+++ b/app/Http/Controllers/Auth/ContactForgotPasswordController.php
@@ -13,6 +13,8 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Password;
class ContactForgotPasswordController extends Controller
{
@@ -36,11 +38,28 @@ class ContactForgotPasswordController extends Controller
*/
public function __construct()
{
- $this->middleware('guest');
+ $this->middleware('guest:contact');
+ }
+
+ /**
+ * Show the reset email form.
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function showLinkRequestForm(){
+ return view('portal.default.auth.passwords.email',[
+ 'title' => 'Client Password Reset',
+ 'passwordEmailRoute' => 'client.password.email'
+ ]);
}
protected function guard()
{
return Auth::guard('contact');
}
+
+ public function broker()
+ {
+ return Password::broker('contacts');
+ }
}
diff --git a/app/Http/Controllers/Auth/ContactResetPasswordController.php b/app/Http/Controllers/Auth/ContactResetPasswordController.php
index 058fef154..ed104accf 100644
--- a/app/Http/Controllers/Auth/ContactResetPasswordController.php
+++ b/app/Http/Controllers/Auth/ContactResetPasswordController.php
@@ -13,6 +13,9 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Password;
class ContactResetPasswordController extends Controller
{
@@ -34,7 +37,7 @@ class ContactResetPasswordController extends Controller
*
* @var string
*/
- protected $redirectTo = '/client';
+ protected $redirectTo = '/client/dashboard';
/**
* Create a new controller instance.
@@ -43,11 +46,32 @@ class ContactResetPasswordController extends Controller
*/
public function __construct()
{
- $this->middleware('guest');
+ $this->middleware('guest:contact');
+ }
+
+ /**
+ * Display the password reset view for the given token.
+ *
+ * If no token is present, display the link request form.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param string|null $token
+ * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
+ */
+ public function showResetForm(Request $request, $token = null)
+ {
+ return view('portal.default.auth.passwords.reset')->with(
+ ['token' => $token, 'email' => $request->email]
+ );
}
protected function guard()
{
return Auth::guard('contact');
}
+
+ protected function broker()
+ {
+ return Password::broker('contacts');
+ }
}
diff --git a/app/Models/ClientContact.php b/app/Models/ClientContact.php
index 45240c1e2..3807bd668 100644
--- a/app/Models/ClientContact.php
+++ b/app/Models/ClientContact.php
@@ -13,6 +13,8 @@ namespace App\Models;
use App\Models\Company;
use App\Models\User;
+use App\Notifications\ClientContactResetPassword as ResetPasswordNotification;
+use App\Notifications\ClientContactResetPassword;
use App\Utils\Traits\MakesHash;
use Hashids\Hashids;
use Illuminate\Contracts\Auth\MustVerifyEmail;
@@ -89,4 +91,8 @@ class ClientContact extends Authenticatable
return $this->belongsTo(User::class);
}
+ public function sendPasswordResetNotification($token)
+ {
+ $this->notify(new ClientContactResetPassword($token));
+ }
}
diff --git a/package.json b/package.json
index b19ba5d7e..1dd47e08b 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"@coreui/coreui": "^2.1.12",
"@coreui/icons": "^0.3.0",
"bootstrap": "^4.3.1",
+ "cross-env": "^5.2.0",
"font-awesome": "^4.7.0",
"laravel-mix": "^4.1.2",
"puppeteer": "^1.18.1"
diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php
index 9e33a4bdb..0f4587526 100644
--- a/resources/views/layouts/guest.blade.php
+++ b/resources/views/layouts/guest.blade.php
@@ -30,27 +30,6 @@
-
-
@@ -58,12 +37,10 @@
-
-
-
+
@yield('head')
diff --git a/resources/views/portal/default/auth/passwords/email.blade.php b/resources/views/portal/default/auth/passwords/email.blade.php
new file mode 100644
index 000000000..447d0052d
--- /dev/null
+++ b/resources/views/portal/default/auth/passwords/email.blade.php
@@ -0,0 +1,51 @@
+@extends('portal.default.layouts.guest')
+
+@section('body')
+
+
+
+
+
+
+
+ @if (session('status'))
+
+ {{ session('status') }}
+
+ @endif
+
+
+
+
+
+
+
+
+@endsection
+
+
diff --git a/resources/views/portal/default/auth/passwords/reset.blade.php b/resources/views/portal/default/auth/passwords/reset.blade.php
new file mode 100644
index 000000000..c6b594b0f
--- /dev/null
+++ b/resources/views/portal/default/auth/passwords/reset.blade.php
@@ -0,0 +1,71 @@
+@extends('portal.default.layouts.guest')
+
+@section('body')
+
+
+
+@endsection
diff --git a/resources/views/vendor/mail/text/button.blade.php b/resources/views/vendor/mail/text/button.blade.php
new file mode 100644
index 000000000..97444ebdc
--- /dev/null
+++ b/resources/views/vendor/mail/text/button.blade.php
@@ -0,0 +1 @@
+{{ $slot }}: {{ $url }}
diff --git a/resources/views/vendor/mail/text/footer.blade.php b/resources/views/vendor/mail/text/footer.blade.php
new file mode 100644
index 000000000..3338f620e
--- /dev/null
+++ b/resources/views/vendor/mail/text/footer.blade.php
@@ -0,0 +1 @@
+{{ $slot }}
diff --git a/resources/views/vendor/mail/text/header.blade.php b/resources/views/vendor/mail/text/header.blade.php
new file mode 100644
index 000000000..aaa3e5754
--- /dev/null
+++ b/resources/views/vendor/mail/text/header.blade.php
@@ -0,0 +1 @@
+[{{ $slot }}]({{ $url }})
diff --git a/resources/views/vendor/mail/text/layout.blade.php b/resources/views/vendor/mail/text/layout.blade.php
new file mode 100644
index 000000000..e8276a407
--- /dev/null
+++ b/resources/views/vendor/mail/text/layout.blade.php
@@ -0,0 +1,11 @@
+@if(!is_array($header))
+{!! strip_tags($header) !!}
+@endisset
+
+{!! strip_tags($slot) !!}
+@isset($subcopy)
+
+{!! strip_tags($subcopy) !!}
+@endisset
+
+{!! strip_tags($footer) !!}
diff --git a/resources/views/vendor/mail/text/message.blade.php b/resources/views/vendor/mail/text/message.blade.php
new file mode 100644
index 000000000..1ae9ed8f1
--- /dev/null
+++ b/resources/views/vendor/mail/text/message.blade.php
@@ -0,0 +1,27 @@
+@component('mail::layout')
+ {{-- Header --}}
+ @slot('header')
+ @component('mail::header', ['url' => config('app.url')])
+ {{ config('app.name') }}
+ @endcomponent
+ @endslot
+
+ {{-- Body --}}
+ {{ $slot }}
+
+ {{-- Subcopy --}}
+ @isset($subcopy)
+ @slot('subcopy')
+ @component('mail::subcopy')
+ {{ $subcopy }}
+ @endcomponent
+ @endslot
+ @endisset
+
+ {{-- Footer --}}
+ @slot('footer')
+ @component('mail::footer')
+ © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.')
+ @endcomponent
+ @endslot
+@endcomponent
diff --git a/resources/views/vendor/mail/text/panel.blade.php b/resources/views/vendor/mail/text/panel.blade.php
new file mode 100644
index 000000000..3338f620e
--- /dev/null
+++ b/resources/views/vendor/mail/text/panel.blade.php
@@ -0,0 +1 @@
+{{ $slot }}
diff --git a/resources/views/vendor/mail/text/promotion.blade.php b/resources/views/vendor/mail/text/promotion.blade.php
new file mode 100644
index 000000000..3338f620e
--- /dev/null
+++ b/resources/views/vendor/mail/text/promotion.blade.php
@@ -0,0 +1 @@
+{{ $slot }}
diff --git a/resources/views/vendor/mail/text/promotion/button.blade.php b/resources/views/vendor/mail/text/promotion/button.blade.php
new file mode 100644
index 000000000..aaa3e5754
--- /dev/null
+++ b/resources/views/vendor/mail/text/promotion/button.blade.php
@@ -0,0 +1 @@
+[{{ $slot }}]({{ $url }})
diff --git a/resources/views/vendor/mail/text/subcopy.blade.php b/resources/views/vendor/mail/text/subcopy.blade.php
new file mode 100644
index 000000000..3338f620e
--- /dev/null
+++ b/resources/views/vendor/mail/text/subcopy.blade.php
@@ -0,0 +1 @@
+{{ $slot }}
diff --git a/resources/views/vendor/mail/text/table.blade.php b/resources/views/vendor/mail/text/table.blade.php
new file mode 100644
index 000000000..3338f620e
--- /dev/null
+++ b/resources/views/vendor/mail/text/table.blade.php
@@ -0,0 +1 @@
+{{ $slot }}
diff --git a/resources/views/vendor/notifications/email.blade.php b/resources/views/vendor/notifications/email.blade.php
new file mode 100644
index 000000000..befcc0f88
--- /dev/null
+++ b/resources/views/vendor/notifications/email.blade.php
@@ -0,0 +1,62 @@
+@component('mail::message')
+{{-- Greeting --}}
+@if (! empty($greeting))
+# {{ $greeting }}
+@else
+@if ($level === 'error')
+# @lang('Whoops!')
+@else
+# @lang('Hello!')
+@endif
+@endif
+
+{{-- Intro Lines --}}
+@foreach ($introLines as $line)
+{{ $line }}
+
+@endforeach
+
+{{-- Action Button --}}
+@isset($actionText)
+
+@component('mail::button', ['url' => $actionUrl, 'color' => $color])
+{{ $actionText }}
+@endcomponent
+@endisset
+
+{{-- Outro Lines --}}
+@foreach ($outroLines as $line)
+{{ $line }}
+
+@endforeach
+
+{{-- Salutation --}}
+@if (! empty($salutation))
+{{ $salutation }}
+@else
+@lang('Regards'),
{{ config('app.name') }}
+@endif
+
+{{-- Subcopy --}}
+@isset($actionText)
+@slot('subcopy')
+@lang(
+ "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\n".
+ 'into your web browser: [:actionURL](:actionURL)',
+ [
+ 'actionText' => $actionText,
+ 'actionURL' => $actionUrl,
+ ]
+)
+@endslot
+@endisset
+@endcomponent