へのリクエストを検証する 認証⽇時を保存する ユーザー認証済みかどうかを検証する use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements MustVerifyEmail { use Notifiable; // ... } 1 2 3 4 5 6 7 8 9
へのリクエストを検証する 認証⽇時を保存する ユーザー認証済みかどうかを検証する use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements MustVerifyEmail { use Notifiable; // ... } 1 2 3 4 5 6 7 8 9 class User extends Authenticatable implements MustVerifyEmail use Illuminate\Contracts\Auth\MustVerifyEmail; 1 use Illuminate\Foundation\Auth\User as Authenticatable; 2 3 4 { 5 use Notifiable; 6 7 // ... 8 } 9
る use Illuminate\Auth\Authenticatable; use Illuminate\Auth\MustVerifyEmail; use Illuminate\Auth\Passwords\CanResetPassword; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Auth\Access\Authorizable; use Illuminate\Notifications\Notifiable; class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract { use Notifiable, Authenticatable 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
る use Illuminate\Auth\Authenticatable; use Illuminate\Auth\MustVerifyEmail; use Illuminate\Auth\Passwords\CanResetPassword; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Auth\Access\Authorizable; use Illuminate\Notifications\Notifiable; class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract { use Notifiable, Authenticatable 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract Authenticatable, Authorizable, CanResetPassword, MustVerifyEmail; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Database\Eloquent\Model; 8 use Illuminate\Foundation\Auth\Access\Authorizable; 9 use Illuminate\Notifications\Notifiable; 10 11 class User extends Model implements 12 13 14 15 16 { 17 use Notifiable, 18 19 20 21 22 } 23
る use Illuminate\Auth\Authenticatable; use Illuminate\Auth\MustVerifyEmail; use Illuminate\Auth\Passwords\CanResetPassword; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Auth\Access\Authorizable; use Illuminate\Notifications\Notifiable; class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract { use Notifiable, Authenticatable 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract Authenticatable use Illuminate\Auth\Authenticatable; 1 use Illuminate\Auth\MustVerifyEmail; 2 use Illuminate\Auth\Passwords\CanResetPassword; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Database\Eloquent\Model; 8 use Illuminate\Foundation\Auth\Access\Authorizable; 9 use Illuminate\Notifications\Notifiable; 10 11 class User extends Model implements 12 13 14 15 16 { 17 use Notifiable, 18 19 use Illuminate\Database\Eloquent\Model; class User extends Model implements use Illuminate\Auth\Authenticatable; 1 use Illuminate\Auth\MustVerifyEmail; 2 use Illuminate\Auth\Passwords\CanResetPassword; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 8 use Illuminate\Foundation\Auth\Access\Authorizable; 9 use Illuminate\Notifications\Notifiable; 10 11 12 AuthenticatableContract, 13 AuthorizableContract, 14 CanResetPasswordContract, 15 MustVerifyEmailContract 16 { 17 use Notifiable, 18 Authenticatable, 19
る use Illuminate\Auth\Authenticatable; use Illuminate\Auth\MustVerifyEmail; use Illuminate\Auth\Passwords\CanResetPassword; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Auth\Access\Authorizable; use Illuminate\Notifications\Notifiable; class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract { use Notifiable, Authenticatable 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract Authenticatable use Illuminate\Auth\Authenticatable; 1 use Illuminate\Auth\MustVerifyEmail; 2 use Illuminate\Auth\Passwords\CanResetPassword; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Database\Eloquent\Model; 8 use Illuminate\Foundation\Auth\Access\Authorizable; 9 use Illuminate\Notifications\Notifiable; 10 11 class User extends Model implements 12 13 14 15 16 { 17 use Notifiable, 18 19 use Illuminate\Database\Eloquent\Model; class User extends Model implements use Illuminate\Auth\Authenticatable; 1 use Illuminate\Auth\MustVerifyEmail; 2 use Illuminate\Auth\Passwords\CanResetPassword; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 8 use Illuminate\Foundation\Auth\Access\Authorizable; 9 use Illuminate\Notifications\Notifiable; 10 11 12 AuthenticatableContract, 13 AuthorizableContract, 14 CanResetPasswordContract, 15 MustVerifyEmailContract 16 { 17 use Notifiable, 18 Authenticatable 19 use Illuminate\Notifications\Notifiable; use Notifiable, use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Database\Eloquent\Model; 8 use Illuminate\Foundation\Auth\Access\Authorizable; 9 10 11 class User extends Model implements 12 AuthenticatableContract, 13 AuthorizableContract, 14 CanResetPasswordContract, 15 MustVerifyEmailContract 16 { 17 18 Authenticatable, 19 Authorizable, 20 CanResetPassword, 21 MustVerifyEmail; 22 } 23
Notifier のインターフェースにのみ依存 use Domain\User\UserId; use Domain\User\UserNotifier; use Domain\User\UserRepository; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; use Illuminate\Foundation\Auth\Access\Authorizable; class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract { use Authorizable; private UserId $id; private UserRepository $repository; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Notifier のインターフェースにのみ依存 use Domain\User\UserId; use Domain\User\UserNotifier; use Domain\User\UserRepository; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; use Illuminate\Foundation\Auth\Access\Authorizable; class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract { use Authorizable; private UserId $id; private UserRepository $repository; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 10 11 12 13 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 private UserNotifier $notifier; 20 21
Notifier のインターフェースにのみ依存 use Domain\User\UserId; use Domain\User\UserNotifier; use Domain\User\UserRepository; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; use Illuminate\Foundation\Auth\Access\Authorizable; class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract { use Authorizable; private UserId $id; private UserRepository $repository; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 10 11 12 13 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 private UserId $id; private UserRepository $repository; use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 class User implements 10 AuthenticatableContract, 11 AuthorizableContract, 12 CanResetPasswordContract, 13 MustVerifyEmailContract 14 { 15 use Authorizable; 16 17 18 19 /** * @inheritDoc */ public function markEmailAsVerified() { return $this->repository->markEmailAsVerified($this->id); } $this->repository = $repository; 28 $this->notifier = $notifier; 29 } 30 31 // ... 32 33 34 35 36 37 38 39 40 41 /** 42 * @inheritDoc 43 */ 44 public function sendEmailVerificationNotification() 45 { 46
Notifier のインターフェースにのみ依存 use Domain\User\UserId; use Domain\User\UserNotifier; use Domain\User\UserRepository; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; use Illuminate\Foundation\Auth\Access\Authorizable; class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract { use Authorizable; private UserId $id; private UserRepository $repository; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 10 11 12 13 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 private UserId $id; private UserRepository $repository; use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 class User implements 10 AuthenticatableContract, 11 AuthorizableContract, 12 CanResetPasswordContract, 13 MustVerifyEmailContract 14 { 15 use Authorizable; 16 17 18 19 use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 class User implements 10 AuthenticatableContract, 11 AuthorizableContract, 12 CanResetPasswordContract, 13 MustVerifyEmailContract 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 /** * @inheritDoc */ public function sendEmailVerificationNotification() { $user = $this->repository->get($this->id); $url = $this->createVerificationUrl(); $this->notifier->sendEmailVerificationNotification($user, $url); } public function markEmailAsVerified() 37 { 38 return $this->repository->markEmailAsVerified($this->id); 39 } 40 41 42 43 44 45 46 47 48 49 50 51 52 private function createVerificationUrl(): string 53 { 54 return URL::temporarySignedRoute( 55
Notifier のインターフェースにのみ依存 use Domain\User\UserId; use Domain\User\UserNotifier; use Domain\User\UserRepository; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; use Illuminate\Foundation\Auth\Access\Authorizable; class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract { use Authorizable; private UserId $id; private UserRepository $repository; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 10 11 12 13 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 private UserId $id; private UserRepository $repository; use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 class User implements 10 AuthenticatableContract, 11 AuthorizableContract, 12 CanResetPasswordContract, 13 MustVerifyEmailContract 14 { 15 use Authorizable; 16 17 18 19 use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 class User implements 10 AuthenticatableContract, 11 AuthorizableContract, 12 CanResetPasswordContract, 13 MustVerifyEmailContract 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 class User implements 10 AuthenticatableContract, 11 AuthorizableContract, 12 CanResetPasswordContract, 13 MustVerifyEmailContract 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 private function createVerificationUrl(): string { return URL::temporarySignedRoute( 'verification.verify', Carbon::now()->addMinutes(Config::get('auth.verification.expire', 60)), [ 'id' => $this->id->rawValue(), 'hash' => sha1($this->getEmailForVerification()), ] ); } { 46 $user = $this->repository->get($this->id); 47 $url = $this->createVerificationUrl(); 48 49 $this->notifier->sendEmailVerificationNotification($user, $url); 50 } 51 52 53 54 55 56 57 58 59 60 61 62 63
Notifier のインターフェースにのみ依存 use Domain\User\UserId; use Domain\User\UserNotifier; use Domain\User\UserRepository; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; use Illuminate\Foundation\Auth\Access\Authorizable; class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract { use Authorizable; private UserId $id; private UserRepository $repository; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class User implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, MustVerifyEmailContract use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 10 11 12 13 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 private UserId $id; private UserRepository $repository; use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 class User implements 10 AuthenticatableContract, 11 AuthorizableContract, 12 CanResetPasswordContract, 13 MustVerifyEmailContract 14 { 15 use Authorizable; 16 17 18 19 use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 class User implements 10 AuthenticatableContract, 11 AuthorizableContract, 12 CanResetPasswordContract, 13 MustVerifyEmailContract 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 class User implements 10 AuthenticatableContract, 11 AuthorizableContract, 12 CanResetPasswordContract, 13 MustVerifyEmailContract 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 use Domain\User\UserId; 1 use Domain\User\UserNotifier; 2 use Domain\User\UserRepository; 3 use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 4 use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 5 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 6 use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; 7 use Illuminate\Foundation\Auth\Access\Authorizable; 8 9 class User implements 10 AuthenticatableContract, 11 AuthorizableContract, 12 CanResetPasswordContract, 13 MustVerifyEmailContract 14 { 15 use Authorizable; 16 17 private UserId $id; 18 private UserRepository $repository; 19 'id' => $this->id->rawValue(), { 46 $user = $this->repository->get($this->id); 47 $url = $this->createVerificationUrl(); 48 49 $this->notifier->sendEmailVerificationNotification($user, $url); 50 } 51 52 private function createVerificationUrl(): string 53 { 54 return URL::temporarySignedRoute( 55 'verification.verify', 56 Carbon::now()->addMinutes(Config::get('auth.verification.expire', 60)), 57 [ 58 59 'hash' => sha1($this->getEmailForVerification()), 60 ] 61 ); 62 } 63