61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Actions\Fortify;
 | |
| 
 | |
| use App\Models\User;
 | |
| use Illuminate\Contracts\Auth\MustVerifyEmail;
 | |
| use Illuminate\Support\Facades\Validator;
 | |
| use Illuminate\Validation\Rule;
 | |
| use Laravel\Fortify\Contracts\UpdatesUserProfileInformation;
 | |
| 
 | |
| class UpdateUserProfileInformation implements UpdatesUserProfileInformation
 | |
| {
 | |
|     /**
 | |
|      * Validate and update the given user's profile information.
 | |
|      *
 | |
|      * @param array<string, string> $input
 | |
|      */
 | |
|     public function update(User $user, array $input): void
 | |
|     {
 | |
|         Validator::make($input, [
 | |
|             'name' => ['required', 'string', 'max:255'],
 | |
| 
 | |
|             'email' => [
 | |
|                 'required',
 | |
|                 'string',
 | |
|                 'email',
 | |
|                 'max:255',
 | |
|                 Rule::unique('users')->ignore($user->id),
 | |
|             ],
 | |
|         ])->validateWithBag('updateProfileInformation');
 | |
| 
 | |
|         if (
 | |
|             $input['email'] !== $user->email &&
 | |
|             $user instanceof MustVerifyEmail
 | |
|         ) {
 | |
|             $this->updateVerifiedUser($user, $input);
 | |
|         } else {
 | |
|             $user->forceFill([
 | |
|                 'name' => $input['name'],
 | |
|                 'email' => $input['email'],
 | |
|             ])->save();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Update the given verified user's profile information.
 | |
|      *
 | |
|      * @param array<string, string> $input
 | |
|      */
 | |
|     protected function updateVerifiedUser(User $user, array $input): void
 | |
|     {
 | |
|         $user->forceFill([
 | |
|             'name' => $input['name'],
 | |
|             'email' => $input['email'],
 | |
|             'email_verified_at' => null,
 | |
|         ])->save();
 | |
| 
 | |
|         $user->sendEmailVerificationNotification();
 | |
|     }
 | |
| }
 | 
