$input * * @throws ValidationException */ public function update(User $user, array $input): void { if (isset($input['email']) && is_string($input['email'])) { $input['email'] = Str::lower($input['email']); } Validator::make($input, [ 'name' => [ 'required', 'string', 'max:255', ], 'email' => [ 'required', 'email', 'max:255', UniqueEloquent::make(User::class, 'email')->ignore($user->id)->query(function (Builder $query) { /** @var Builder $query */ return $query->where('is_placeholder', '=', false); }), ], 'photo' => [ 'nullable', 'mimes:jpg,jpeg,png', 'max:1024', ], 'timezone' => [ 'required', 'timezone:all', ], 'week_start' => [ 'required', Rule::enum(Weekday::class), ], ])->validateWithBag('updateProfileInformation'); if (isset($input['photo'])) { $user->updateProfilePhoto($input['photo']); } $email = Str::lower((string) $input['email']); if ($email !== Str::lower($user->email)) { $user->forceFill([ 'name' => $input['name'], 'pending_email' => $email, 'timezone' => $input['timezone'], 'week_start' => $input['week_start'], ])->save(); Mail::to($email)->send(new VerifyUpdatedEmailMail($user, $email)); } else { $user->forceFill([ 'name' => $input['name'], 'timezone' => $input['timezone'], 'week_start' => $input['week_start'], ])->save(); } } }