Skip to content

Commit 7630654

Browse files
author
Pascal Baljet
committed
Custom model option
1 parent d7fb6fb commit 7630654

File tree

7 files changed

+33
-24
lines changed

7 files changed

+33
-24
lines changed

CHANGELOG.md

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

33
All notable changes to `laravel-user-email` will be documented in this file
44

5+
## 1.0.7 - 2020-01-08
6+
7+
- support for custom model
8+
59
## 1.0.6 - 2020-01-06
610

711
- added `web` middleware to verification route

config/config.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
*/
1717
'login_after_verification' => true,
1818

19+
/**
20+
* Model class that will be used to store and retrieve the tokens.
21+
*/
22+
'model' => \ProtoneMedia\LaravelVerifyNewEmail\PendingUserEmail::class,
23+
1924
/**
2025
* The Mailable that will be sent when the User wants to verify
2126
* its initial email address (that got used with registering).

src/Http/VerifiesPendingEmails.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace ProtoneMedia\LaravelVerifyNewEmail\Http;
44

55
use Illuminate\Support\Facades\Auth;
6-
use ProtoneMedia\LaravelVerifyNewEmail\PendingUserEmail;
76

87
trait VerifiesPendingEmails
98
{
@@ -16,11 +15,11 @@ trait VerifiesPendingEmails
1615
*/
1716
public function verify(string $token)
1817
{
19-
$user = PendingUserEmail::whereToken($token)->firstOr(['*'], function () {
18+
$user = app(config('verify-new-email.model'))->whereToken($token)->firstOr(['*'], function () {
2019
throw new InvalidVerificationLinkException(
2120
__('The verification link is not valid anymore.')
2221
);
23-
})->tap(function (PendingUserEmail $pendingUserEmail) {
22+
})->tap(function ($pendingUserEmail) {
2423
$pendingUserEmail->activate();
2524
})->user;
2625

src/Mail/VerifyFirstEmail.php

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

55
use Illuminate\Bus\Queueable;
66
use Illuminate\Contracts\Queue\ShouldQueue;
7+
use Illuminate\Database\Eloquent\Model;
78
use Illuminate\Mail\Mailable;
89
use Illuminate\Queue\SerializesModels;
9-
use ProtoneMedia\LaravelVerifyNewEmail\PendingUserEmail;
1010

1111
class VerifyFirstEmail extends Mailable implements ShouldQueue
1212
{
1313
use Queueable, SerializesModels;
1414

1515
/**
16-
* @var \ProtoneMedia\LaravelVerifyNewEmail\PendingUserEmail
16+
* @var \Illuminate\Database\Eloquent\Model
1717
*/
1818
public $pendingUserEmail;
1919

@@ -22,7 +22,7 @@ class VerifyFirstEmail extends Mailable implements ShouldQueue
2222
*
2323
* @return void
2424
*/
25-
public function __construct(PendingUserEmail $pendingUserEmail)
25+
public function __construct(Model $pendingUserEmail)
2626
{
2727
$this->pendingUserEmail = $pendingUserEmail;
2828
}

src/Mail/VerifyNewEmail.php

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

55
use Illuminate\Bus\Queueable;
66
use Illuminate\Contracts\Queue\ShouldQueue;
7+
use Illuminate\Database\Eloquent\Model;
78
use Illuminate\Mail\Mailable;
89
use Illuminate\Queue\SerializesModels;
9-
use ProtoneMedia\LaravelVerifyNewEmail\PendingUserEmail;
1010

1111
class VerifyNewEmail extends Mailable implements ShouldQueue
1212
{
1313
use Queueable, SerializesModels;
1414

1515
/**
16-
* @var \ProtoneMedia\LaravelVerifyNewEmail\PendingUserEmail
16+
* @var \Illuminate\Database\Eloquent\Model
1717
*/
1818
public $pendingUserEmail;
1919

@@ -22,7 +22,7 @@ class VerifyNewEmail extends Mailable implements ShouldQueue
2222
*
2323
* @return void
2424
*/
25-
public function __construct(PendingUserEmail $pendingUserEmail)
25+
public function __construct(Model $pendingUserEmail)
2626
{
2727
$this->pendingUserEmail = $pendingUserEmail;
2828
}

src/MustVerifyNewEmail.php

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

33
namespace ProtoneMedia\LaravelVerifyNewEmail;
44

5+
use Illuminate\Database\Eloquent\Model;
56
use Illuminate\Support\Facades\Mail;
67
use Illuminate\Support\Facades\Password;
7-
use ProtoneMedia\LaravelVerifyNewEmail\Mail\VerifyNewEmail;
88

99
trait MustVerifyNewEmail
1010
{
@@ -14,15 +14,15 @@ trait MustVerifyNewEmail
1414
* to the new email address.
1515
*
1616
* @param string $email
17-
* @return \ProtoneMedia\LaravelVerifyNewEmail\PendingUserEmail|null
17+
* @return \Illuminate\Database\Eloquent\Model|null
1818
*/
19-
public function newEmail(string $email):?PendingUserEmail
19+
public function newEmail(string $email):?Model
2020
{
2121
if ($this->getEmailForVerification() === $email && $this->hasVerifiedEmail()) {
2222
return null;
2323
}
2424

25-
return $this->createPendingUserEmailModel($email)->tap(function (PendingUserEmail $model) {
25+
return $this->createPendingUserEmailModel($email)->tap(function ($model) {
2626
$this->sendPendingEmailVerificationMail($model);
2727
});
2828
}
@@ -31,13 +31,13 @@ public function newEmail(string $email):?PendingUserEmail
3131
* Createsa new PendingUserModel model for the given email.
3232
*
3333
* @param string $email
34-
* @return \ProtoneMedia\LaravelVerifyNewEmail\PendingUserEmail
34+
* @return \Illuminate\Database\Eloquent\Model
3535
*/
36-
public function createPendingUserEmailModel(string $email): PendingUserEmail
36+
public function createPendingUserEmailModel(string $email): Model
3737
{
3838
$this->clearPendingEmail();
3939

40-
return PendingUserEmail::create([
40+
return app(config('verify-new-email.model'))->create([
4141
'user_type' => get_class($this),
4242
'user_id' => $this->getKey(),
4343
'email' => $email,
@@ -52,7 +52,7 @@ public function createPendingUserEmailModel(string $email): PendingUserEmail
5252
*/
5353
public function getPendingEmail():?string
5454
{
55-
return PendingUserEmail::forUser($this)->value('email');
55+
return app(config('verify-new-email.model'))->forUser($this)->value('email');
5656
}
5757

5858
/**
@@ -62,16 +62,16 @@ public function getPendingEmail():?string
6262
*/
6363
public function clearPendingEmail()
6464
{
65-
PendingUserEmail::forUser($this)->get()->each->delete();
65+
app(config('verify-new-email.model'))->forUser($this)->get()->each->delete();
6666
}
6767

6868
/**
6969
* Sends the VerifyNewEmail Mailable to the new email address.
7070
*
71-
* @param \ProtoneMedia\LaravelVerifyNewEmail\PendingUserEmail $pendingUserEmail
71+
* @param \Illuminate\Database\Eloquent\Model $pendingUserEmail
7272
* @return mixed
7373
*/
74-
public function sendPendingEmailVerificationMail(PendingUserEmail $pendingUserEmail)
74+
public function sendPendingEmailVerificationMail(Model $pendingUserEmail)
7575
{
7676
$mailableClass = config('verify-new-email.mailable_for_first_verification');
7777

@@ -87,11 +87,11 @@ public function sendPendingEmailVerificationMail(PendingUserEmail $pendingUserEm
8787
/**
8888
* Grabs the pending user email address, generates a new token and sends the Mailable.
8989
*
90-
* @return \ProtoneMedia\LaravelVerifyNewEmail\PendingUserEmail|null
90+
* @return \Illuminate\Database\Eloquent\Model|null
9191
*/
92-
public function resendPendingEmailVerificationMail():?PendingUserEmail
92+
public function resendPendingEmailVerificationMail():?Model
9393
{
94-
$pendingUserEmail = PendingUserEmail::forUser($this)->firstOrFail();
94+
$pendingUserEmail = app(config('verify-new-email.model'))->forUser($this)->firstOrFail();
9595

9696
return $this->newEmail($pendingUserEmail->email);
9797
}

src/PendingUserEmail.php

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

55
use Illuminate\Auth\Events\Verified;
66
use Illuminate\Database\Eloquent\Model;
7+
use Illuminate\Database\Eloquent\Relations\MorphTo;
78
use Illuminate\Support\Facades\URL;
89
use Illuminate\Support\Traits\Tappable;
910

@@ -26,7 +27,7 @@ class PendingUserEmail extends Model
2627
*
2728
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
2829
*/
29-
public function user()
30+
public function user():MorphTo
3031
{
3132
return $this->morphTo('user');
3233
}

0 commit comments

Comments
 (0)