Skip to content

Commit bb8ed9e

Browse files
committed
Work on email verification
1 parent 73fd3c6 commit bb8ed9e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+205
-349
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace App\Events;
4+
5+
use App\User;
6+
use Illuminate\Foundation\Events\Dispatchable;
7+
use Illuminate\Queue\SerializesModels;
8+
9+
class EmailAddressWasChanged
10+
{
11+
use Dispatchable;
12+
use SerializesModels;
13+
14+
/**
15+
* @var \App\User
16+
*/
17+
public $user;
18+
19+
public function __construct(User $user)
20+
{
21+
$this->user = $user;
22+
}
23+
}

app/Http/Controllers/Articles/ArticlesController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@
44

55
use App\Http\Controllers\Controller;
66
use App\Http\Middleware\Authenticate;
7-
use App\Http\Middleware\RedirectIfUnconfirmed;
87
use App\Http\Requests\ArticleRequest;
98
use App\Jobs\CreateArticle;
109
use App\Jobs\DeleteArticle;
1110
use App\Jobs\UpdateArticle;
1211
use App\Models\Article;
1312
use App\Models\Tag;
1413
use App\Policies\ArticlePolicy;
14+
use Illuminate\Auth\Middleware\EnsureEmailIsVerified;
1515
use Illuminate\Http\Request;
1616
use Illuminate\Support\Facades\Auth;
1717

1818
class ArticlesController extends Controller
1919
{
2020
public function __construct()
2121
{
22-
$this->middleware([Authenticate::class, RedirectIfUnconfirmed::class], ['except' => ['index', 'show']]);
22+
$this->middleware([Authenticate::class, EnsureEmailIsVerified::class], ['except' => ['index', 'show']]);
2323
}
2424

2525
public function index()

app/Http/Controllers/Articles/AuthoredArticles.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
use App\Http\Controllers\Controller;
66
use App\Http\Middleware\Authenticate;
7-
use App\Http\Middleware\RedirectIfUnconfirmed;
7+
use Illuminate\Auth\Middleware\EnsureEmailIsVerified;
88
use Illuminate\Http\Request;
99

1010
class AuthoredArticles extends Controller
1111
{
1212
public function __construct()
1313
{
14-
$this->middleware([Authenticate::class, RedirectIfUnconfirmed::class]);
14+
$this->middleware([Authenticate::class, EnsureEmailIsVerified::class]);
1515
}
1616

1717
public function __invoke(Request $request)

app/Http/Controllers/Articles/AuthoredSeries.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
use App\Http\Controllers\Controller;
66
use App\Http\Middleware\Authenticate;
7-
use App\Http\Middleware\RedirectIfUnconfirmed;
7+
use Illuminate\Auth\Middleware\EnsureEmailIsVerified;
88
use Illuminate\Http\Request;
99

1010
class AuthoredSeries extends Controller
1111
{
1212
public function __construct()
1313
{
14-
$this->middleware([Authenticate::class, RedirectIfUnconfirmed::class]);
14+
$this->middleware([Authenticate::class, EnsureEmailIsVerified::class]);
1515
}
1616

1717
public function __invoke(Request $request)

app/Http/Controllers/Articles/SeriesController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@
44

55
use App\Http\Controllers\Controller;
66
use App\Http\Middleware\Authenticate;
7-
use App\Http\Middleware\RedirectIfUnconfirmed;
87
use App\Http\Requests\SeriesRequest;
98
use App\Jobs\CreateSeries;
109
use App\Jobs\DeleteSeries;
1110
use App\Jobs\UpdateSeries;
1211
use App\Models\Series;
1312
use App\Models\Tag;
1413
use App\Policies\SeriesPolicy;
14+
use Illuminate\Auth\Middleware\EnsureEmailIsVerified;
1515

1616
class SeriesController extends Controller
1717
{
1818
public function __construct()
1919
{
20-
$this->middleware([Authenticate::class, RedirectIfUnconfirmed::class], ['except' => ['index']]);
20+
$this->middleware([Authenticate::class, EnsureEmailIsVerified::class], ['except' => ['index']]);
2121
}
2222

2323
public function create()

app/Http/Controllers/Auth/EmailConfirmationController.php

Lines changed: 0 additions & 44 deletions
This file was deleted.

app/Http/Controllers/Auth/LoginController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use App\Http\Controllers\Controller;
66
use App\Http\Middleware\RedirectIfAuthenticated;
7+
use App\Providers\RouteServiceProvider;
78
use Illuminate\Foundation\Auth\AuthenticatesUsers;
89

910
class LoginController extends Controller
@@ -26,7 +27,7 @@ class LoginController extends Controller
2627
*
2728
* @var string
2829
*/
29-
protected $redirectTo = '/dashboard';
30+
protected $redirectTo = RouteServiceProvider::HOME;
3031

3132
/**
3233
* Create a new controller instance.

app/Http/Controllers/Auth/RegisterController.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
use App\Http\Middleware\RedirectIfAuthenticated;
77
use App\Http\Requests\RegisterRequest;
88
use App\Jobs\RegisterUser;
9+
use App\Providers\RouteServiceProvider;
910
use App\User;
10-
use Illuminate\Auth\Events\Registered;
1111
use Illuminate\Contracts\Validation\Validator as ValidatorContract;
1212
use Illuminate\Foundation\Auth\RegistersUsers;
1313
use Illuminate\Support\Facades\Validator;
@@ -32,7 +32,7 @@ class RegisterController extends Controller
3232
*
3333
* @var string
3434
*/
35-
protected $redirectTo = '/dashboard';
35+
protected $redirectTo = RouteServiceProvider::HOME;
3636

3737
/**
3838
* Create a new controller instance.
@@ -57,10 +57,6 @@ protected function validator(array $data): ValidatorContract
5757
*/
5858
protected function create(array $data): User
5959
{
60-
$user = $this->dispatchNow(RegisterUser::fromRequest(app(RegisterRequest::class)));
61-
62-
event(new Registered($user));
63-
64-
return $user;
60+
return $this->dispatchNow(RegisterUser::fromRequest(app(RegisterRequest::class)));
6561
}
6662
}

app/Http/Controllers/Auth/ResetPasswordController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use App\Http\Controllers\Controller;
66
use App\Http\Middleware\RedirectIfAuthenticated;
7+
use App\Providers\RouteServiceProvider;
78
use Illuminate\Foundation\Auth\ResetsPasswords;
89

910
class ResetPasswordController extends Controller
@@ -26,7 +27,7 @@ class ResetPasswordController extends Controller
2627
*
2728
* @var string
2829
*/
29-
protected $redirectTo = '/dashboard';
30+
protected $redirectTo = RouteServiceProvider::HOME;
3031

3132
/**
3233
* Create a new controller instance.

app/Http/Controllers/Auth/VerificationController.php

Lines changed: 30 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@
33
namespace App\Http\Controllers\Auth;
44

55
use App\Http\Controllers\Controller;
6-
use Illuminate\Auth\Access\AuthorizationException;
7-
use Illuminate\Auth\Events\Verified;
6+
use App\Providers\RouteServiceProvider;
87
use Illuminate\Foundation\Auth\VerifiesEmails;
98
use Illuminate\Http\Request;
10-
use Illuminate\Http\Response;
11-
use Illuminate\Support\Facades\Auth;
129

1310
class VerificationController extends Controller
1411
{
@@ -19,89 +16,59 @@ class VerificationController extends Controller
1916
|
2017
| This controller is responsible for handling email verification for any
2118
| user that recently registered with the application. Emails may also
22-
| be resent if the user did not receive the original email message.
19+
| be re-sent if the user didn't receive the original email message.
2320
|
2421
*/
2522

26-
use VerifiesEmails;
23+
use VerifiesEmails {
24+
resend as traitResend;
25+
verify as traitVerify;
26+
}
2727

2828
/**
2929
* Where to redirect users after verification.
3030
*
3131
* @var string
3232
*/
33-
protected $redirectTo = '/dashboard';
33+
protected $redirectTo = RouteServiceProvider::HOME;
3434

3535
/**
36-
* Mark the authenticated user's email address as verified.
37-
*
38-
* @param \Illuminate\Http\Request $request
39-
* @return \Illuminate\Http\Response
36+
* Create a new controller instance.
4037
*
41-
* @throws \Illuminate\Auth\Access\AuthorizationException
38+
* @return void
4239
*/
43-
public function verify(Request $request)
40+
public function __construct()
4441
{
45-
if (! hash_equals((string) $request->route('id'), (string) $request->user()->getKey())) {
46-
throw new AuthorizationException();
47-
}
48-
49-
if (! hash_equals((string) $request->hash, sha1($request->user()->emailAddress()))) {
50-
throw new AuthorizationException();
51-
}
42+
$this->middleware('auth');
43+
$this->middleware('signed')->only('verify');
44+
$this->middleware('throttle:6,1')->only('verify', 'resend');
45+
}
5246

53-
if ($request->user()->hasVerifiedEmail()) {
54-
$this->error('auth.confirmation.no_match');
55-
return $request->wantsJson()
56-
? new Response('', 204)
57-
: redirect($this->redirectPath());
58-
}
47+
public function verify(Request $request)
48+
{
49+
/** @var \Illuminate\Http\RedirectResponse $response */
50+
$response = $this->traitVerify($request);
5951

60-
if ($request->user()->markEmailAsVerified()) {
61-
event(new Verified($request->user()));
52+
if ($response->getSession()->has('verified')) {
53+
$this->success('auth.verification.success');
54+
} else {
55+
$this->error('auth.verification.no_match');
6256
}
6357

64-
$this->success('auth.confirmation.success');
65-
66-
return $request->wantsJson()
67-
? new Response('', 204)
68-
: redirect($this->redirectPath())->with('verified', true);
58+
return $response;
6959
}
7060

71-
/**
72-
* Resend the email verification notification.
73-
*
74-
* @param \Illuminate\Http\Request $request
75-
* @return \Illuminate\Http\Response
76-
*/
7761
public function resend(Request $request)
7862
{
79-
if ($request->user()->hasVerifiedEmail()) {
80-
$this->error('auth.confirmation.already_confirmed');
63+
/** @var \Illuminate\Http\RedirectResponse $response */
64+
$response = $this->traitResend($request);
8165

82-
return $request->wantsJson()
83-
? new Response('', 204)
84-
: redirect($this->redirectPath());
66+
if ($response->getSession()->has('resent')) {
67+
$this->success('auth.verification.sent', $request->user()->emailAddress());
68+
} else {
69+
$this->error('auth.verification.already_verified');
8570
}
8671

87-
$request->user()->sendEmailVerificationNotification();
88-
89-
$this->success('auth.confirmation.sent', Auth::user()->emailAddress());
90-
91-
return $request->wantsJson()
92-
? new Response('', 202)
93-
: redirect()->route('dashboard')->with('resent', true);
94-
}
95-
96-
/**
97-
* Create a new controller instance.
98-
*
99-
* @return void
100-
*/
101-
public function __construct()
102-
{
103-
$this->middleware('auth');
104-
$this->middleware('signed')->only('verify');
105-
$this->middleware('throttle:6,1')->only('verify', 'resend');
72+
return $response;
10673
}
10774
}

0 commit comments

Comments
 (0)